diff options
author | Didier Raboud <odyx@debian.org> | 2014-04-16 08:13:23 +0200 |
---|---|---|
committer | Didier Raboud <odyx@debian.org> | 2014-04-16 08:13:23 +0200 |
commit | d7d42f6c969dc54157d85b7b6b611581bbfa7595 (patch) | |
tree | dfa630457b374b77f1f128cbc9104ea2d6963575 /src | |
parent | ccd50c2bd4db57503722816aa23a5092cbe69f40 (diff) |
Imported Upstream version 5.2.10~pre1
Diffstat (limited to 'src')
330 files changed, 35383 insertions, 15489 deletions
diff --git a/src/Makefile.in b/src/Makefile.in index 9c0d149..f1fe497 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -20,6 +19,51 @@ #export STP_MODULE_PATH = $(top_builddir)/src/main/.libs:$(top_builddir)/src/main #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -38,8 +82,8 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/scripts/global.mk +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -59,20 +103,58 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) @@ -105,6 +187,7 @@ am__relativize = \ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -162,6 +245,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -173,6 +257,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -197,6 +282,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -352,6 +439,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -369,22 +457,25 @@ clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ @@ -399,57 +490,12 @@ $(RECURSIVE_TARGETS): $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ @@ -465,12 +511,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -482,15 +523,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -499,6 +536,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -535,13 +587,10 @@ distdir: $(DISTFILES) done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ @@ -576,10 +625,15 @@ install-am: all-am installcheck: installcheck-recursive install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -658,22 +712,20 @@ ps-am: uninstall-am: -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am @SET_MAKE@ diff --git a/src/cups/Makefile.am b/src/cups/Makefile.am index 1e27ae0..75691af 100644 --- a/src/cups/Makefile.am +++ b/src/cups/Makefile.am @@ -1,4 +1,4 @@ -## $Id: Makefile.am,v 1.122 2012/03/25 17:54:32 rlk Exp $ +## $Id: Makefile.am,v 1.145 2014/02/12 13:42:27 rlk Exp $ ## Copyright (C) 2000 Roger Leigh ## ## This program is free software; you can redistribute it and/or modify @@ -27,7 +27,7 @@ include $(top_srcdir)/scripts/global.mk empty= PACKAGE = cups -BASE_VERSION = \"@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@.@GUTENPRINT_MICRO_VERSION@\" +BASE_VERSION = \"@GUTENPRINT_BASE_VERSION@\" bindir = @cups_bindir@ sbindir = @cups_sbindir@ @@ -38,11 +38,17 @@ pkgsysconfdir = $(cups_conf_serverroot) cupsexec_driverdir = $(pkglibdir)/driver cupsexec_filterdir = $(pkglibdir)/filter + +if BUILD_LIBUSB_BACKENDS +cupsexec_backenddir = $(pkglibdir)/backend +cupsdata_blacklistdir = $(pkgdatadir)/usb/ +endif + if CUPS_PPDS_AT_TOP_LEVEL cups_modeldir = $(pkgdatadir)/model/ DONT_UNINSTALL_PPDS=true else -cups_modeldir = $(pkgdatadir)/model/gutenprint/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/ +cups_modeldir = $(pkgdatadir)/model/gutenprint/@GUTENPRINT_RELEASE_VERSION@/ endif LOCAL_CPPFLAGS = $(GUTENPRINT_CFLAGS) $(CUPS_CFLAGS) -DBASE_VERSION=$(BASE_VERSION) @@ -52,7 +58,6 @@ STP_NONLS_ENV= STP_MODULE_PATH=$(top_builddir)/src/main/.libs:$(top_builddir)/sr STP_ENV= $(STP_NONLS_ENV) STP_LOCALEDIR=$(top_srcdir)/src/cups/catalog ## Programs - if BUILD_TRANSLATED_CUPS_PPDS if BUILD_GLOBALIZED_CUPS_PPDS PPD = ppd-global @@ -70,14 +75,27 @@ BUILD_SIMPLE_PPDS=-DGENERATE_SIMPLIFIED_PPDS endif if BUILD_CUPS_1_2 -cupsexec_driver_PROGRAMS = gutenprint.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ +cupsexec_driver_PROGRAMS = gutenprint.@GUTENPRINT_RELEASE_VERSION@ endif if BUILD_CUPS bin_PROGRAMS = cups-calibrate -sbin_PROGRAMS = cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ +sbin_PROGRAMS = cups-genppd.@GUTENPRINT_RELEASE_VERSION@ sbin_SCRIPTS = cups-genppdupdate -cupsexec_filter_PROGRAMS = rastertogutenprint.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ commandtoepson commandtocanon +cupsexec_filter_PROGRAMS = rastertogutenprint.@GUTENPRINT_RELEASE_VERSION@ commandtoepson commandtocanon + +if BUILD_LIBUSB_BACKENDS +cupsexec_backend_PROGRAMS = backend_gutenprint +endif + +## CUPS backends require no world-execute permissions if they are to be +## executed as root, and the backend must be run as root. +## See http://www.cups.org/documentation.php/doc-1.6/man-backend.html +if BUILD_LIBUSB_BACKENDS +install-exec-hook: + mv $(DESTDIR)$(pkglibdir)/backend/backend_gutenprint "$(DESTDIR)$(pkglibdir)/backend/gutenprint$(GUTENPRINT_MAJOR_VERSION)$(GUTENPRINT_MINOR_VERSION)+usb" + chmod 700 "$(DESTDIR)$(pkglibdir)/backend/gutenprint$(GUTENPRINT_MAJOR_VERSION)$(GUTENPRINT_MINOR_VERSION)+usb" +endif TESTS= test-ppds test-rastertogutenprint noinst_SCRIPTS=test-rastertogutenprint @@ -96,19 +114,27 @@ commandtocanon_LDADD = $(CUPS_LIBS) commandtoepson_SOURCES = commandtoepson.c commandtoepson_LDADD = $(CUPS_LIBS) -cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_SOURCES = genppd.c i18n.c i18n.h -cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS = -DALL_LINGUAS='"$(ALL_LINGUAS)"' $(BUILD_SIMPLE_PPDS) $(TRANSLATE_PPDS) -cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDADD = $(CUPS_LIBS) $(GENPPD_LIBS) $(GUTENPRINT_LIBS) @LIBICONV@ -cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDFLAGS = $(STATIC_LDOPTS) +if BUILD_LIBUSB_BACKENDS +backend_gutenprint_SOURCES = selphy_print.c kodak1400_print.c kodak6800_print.c kodak605_print.c shinko_s2145_print.c sony_updr150_print.c dnpds40_print.c mitsu70x_print.c backend_common.c backend_common.h + +backend_gutenprint_LDADD = $(LIBUSB_LIBS) +backend_gutenprint_CPPFLAGS = $(LIBUSB_CFLAGS) -DURI_PREFIX=\"gutenprint$(GUTENPRINT_MAJOR_VERSION)$(GUTENPRINT_MINOR_VERSION)+usb\" +endif + +cups_genppd_@GUTENPRINT_RELEASE_VERSION@_SOURCES = genppd.c i18n.c i18n.h +cups_genppd_@GUTENPRINT_RELEASE_VERSION@_CFLAGS = -DALL_LINGUAS='"$(ALL_LINGUAS)"' $(BUILD_SIMPLE_PPDS) $(TRANSLATE_PPDS) +cups_genppd_@GUTENPRINT_RELEASE_VERSION@_LDADD = $(CUPS_LIBS) $(GENPPD_LIBS) $(GUTENPRINT_LIBS) @LIBICONV@ +cups_genppd_@GUTENPRINT_RELEASE_VERSION@_LDFLAGS = $(STATIC_LDOPTS) + +gutenprint_@GUTENPRINT_RELEASE_VERSION@_SOURCES = genppd.c i18n.c i18n.h +gutenprint_@GUTENPRINT_RELEASE_VERSION@_CFLAGS = -DCUPS_DRIVER_INTERFACE -DALL_LINGUAS='"$(ALL_LINGUAS)"' $(BUILD_SIMPLE_PPDS) $(TRANSLATE_PPDS) +gutenprint_@GUTENPRINT_RELEASE_VERSION@_LDADD = $(CUPS_LIBS) $(GUTENPRINT_LIBS) @LIBICONV@ +gutenprint_@GUTENPRINT_RELEASE_VERSION@_LDFLAGS = $(STATIC_LDOPTS) -gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_SOURCES = genppd.c i18n.c i18n.h -gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS = -DCUPS_DRIVER_INTERFACE -DALL_LINGUAS='"$(ALL_LINGUAS)"' $(BUILD_SIMPLE_PPDS) $(TRANSLATE_PPDS) -gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDADD = $(CUPS_LIBS) $(GUTENPRINT_LIBS) @LIBICONV@ -gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDFLAGS = $(STATIC_LDOPTS) +rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_SOURCES = rastertoprinter.c i18n.c i18n.h +rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_LDADD = $(CUPS_LIBS) $(GUTENPRINT_LIBS) @LIBICONV@ +rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_LDFLAGS = $(STATIC_LDOPTS) -rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_SOURCES = rastertoprinter.c i18n.c i18n.h -rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDADD = $(CUPS_LIBS) $(GUTENPRINT_LIBS) @LIBICONV@ -rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDFLAGS = $(STATIC_LDOPTS) ## Data @@ -130,8 +156,14 @@ if USE_NLS PPD_NLS_1 = ppd-nls endif +if BUILD_LIBUSB_BACKENDS +INSTALL_BLACKLIST=install-blacklist +install-blacklist: + $(mkdir_p) $(DESTDIR)$(cupsdata_blacklistdir) + $(INSTALL_DATA) blacklist $(DESTDIR)$(cupsdata_blacklistdir)/net.sf.gimp-print.usb-quirks +endif -install-data-local: $(INSTALL_DATA_LOCAL_DEPS) +install-data-local: $(INSTALL_DATA_LOCAL_DEPS) $(INSTALL_BLACKLIST) if test -n "$(CUPS_PKG)" -a -n "$(INSTALL_DATA_LOCAL_DEPS)" ; then \ $(mkdir_p) $(DESTDIR)$(cups_modeldir); \ cd ppd ; \ @@ -152,7 +184,7 @@ install-data-local: $(INSTALL_DATA_LOCAL_DEPS) $(INSTALL_DATA) $$file "$(DESTDIR)$(localedir)/$$lang/gutenprint_$$lang.po"; \ done -uninstall-local: $(INSTALL_DATA_LOCAL_DEPS) +uninstall-local: $(INSTALL_DATA_LOCAL_DEPS) $(INSTALL_BLACKLIST) # Remove PPDs installed in new PPD location if test -z "DONT_UNINSTALL_PPDS" ; then \ if test -n "$(INSTALL_DATA_LOCAL_DEPS)" ; then \ @@ -163,6 +195,8 @@ uninstall-local: $(INSTALL_DATA_LOCAL_DEPS) lang=`basename $$file .po`; \ $(RM) "$(DESTDIR)$(localedir)/$$lang/gutenprint_$$lang.po"; \ done + $(RM) -f "$(DESTDIR)$(cupsdata_blacklistdir)/net.sf.gimp-print.usb-quirks" + $(RM) -f "$(DESTDIR)$(pkglibdir)/backend/gutenprint$(GUTENPRINT_MAJOR_VERSION)$(GUTENPRINT_MINOR_VERSION)+usb" install-data-hook: # Remove unused directories in install tree @@ -172,6 +206,8 @@ install-data-hook: -rmdir $(DESTDIR)$(pkgdatadir) -rmdir $(DESTDIR)$(cupsexec_driverdir) -rmdir $(DESTDIR)$(cupsexec_filterdir) + -rmdir $(DESTDIR)$(cupsexec_backenddir) + -rmdir $(DESTDIR)$(cupsdata_blacklistdir) -rmdir $(DESTDIR)$(bindir) -rmdir $(DESTDIR)$(pkglibdir) -rmdir $(DESTDIR)$(pkgsysconfdir) @@ -179,13 +215,13 @@ install-data-hook: -rmdir `dirname $(DESTDIR)$(pkglibdir)` -rmdir `dirname $(DESTDIR)$(pkgsysconfdir)` -.PHONY: ppd ppd-stamp-pre ppd-stamp-nonls ppd-stamp-nls ppd-stamp-phony ppd-catalog-clean ppd-clean +.PHONY: ppd ppd-stamp-pre ppd-stamp-nonls ppd-stamp-nls ppd-stamp-phony ppd-catalog-clean ppd-clean $(INSTALL_BLACKLIST) all-local: $(INSTALL_DATA_LOCAL_DEPS) ppd: ppd-stamp -ppd-stamp: cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ $(top_srcdir)/src/xml/xml-stamp +ppd-stamp: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(top_srcdir)/src/xml/xml-stamp $(MAKE) ppd-stamp-pre $(MAKE) ppd-stamp-phony touch ppd-stamp @@ -193,10 +229,10 @@ ppd-stamp: cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ $(t ppd-stamp-phony: $(PPD) ppd-catalog-clean: - -$(RM) -r catalog + $(RM) -rf catalog ppd-clean: - -$(RM) -r ppd + $(RM) -rf ppd ppd-stamp-pre: ppd-catalog-clean ppd-clean @@ -208,32 +244,32 @@ ppd-catalog: ppd-catalog-clean $(INSTALL_DATA) $$file "catalog/$$lang/gutenprint_$$lang.po"; \ done -ppd-nonls: cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ +ppd-nonls: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(mkdir_p) ppd/C $(MAKE) ppd-catalog-clean - LC_ALL= LANG= LANGUAGE= $(STP_NONLS_ENV) ./cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ @WHICH_PPDS@ $(EXTRA_GENPPD_OPTS) -l C -p ppd/C + LC_ALL= LANG= LANGUAGE= $(STP_NONLS_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ $(EXTRA_GENPPD_OPTS) -l C -p ppd/C -ppd-global: cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ +ppd-global: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @echo "Global PPDs:" $(mkdir_p) ppd/Global $(MAKE) ppd-catalog - LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global $(MAKE) ppd-catalog-clean -ppd-global-ln: cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ +ppd-global-ln: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @echo "Global PPDs (localized numbers for testing):" $(mkdir_p) ppd/Global $(MAKE) ppd-catalog - LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global -N + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global -N $(MAKE) ppd-catalog-clean -ppd-nls: cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ ppd-nonls +ppd-nls: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ ppd-nonls $(mkdir_p) ppd $(MAKE) ppd-catalog - for language in `$(STP_ENV) ./cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ -L` ; do \ - mkdir ppd/$$language ; \ - echo "$$language:" ; \ - LC_ALL=$$language LANG=$$language LANGUAGE=$$language $(STP_ENV) ./cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -l $$language -p ppd/$$language; \ + for language in `$(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ -L` ; do \ + $(mkdir_p) ppd/$$language ; \ + echo -n "$$language: " ; \ + LC_ALL=$$language LANG=$$language LANGUAGE=$$language $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -l $$language -p ppd/$$language; \ done $(MAKE) ppd-catalog-clean @@ -261,6 +297,7 @@ MAINTAINERCLEANFILES = Makefile.in EXTRA_DIST = \ COPYING \ README \ + blacklist \ calibrate.ppm \ command.txt \ command.types \ diff --git a/src/cups/Makefile.in b/src/cups/Makefile.in index 8f8309d..991e2cd 100644 --- a/src/cups/Makefile.in +++ b/src/cups/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -23,6 +22,51 @@ VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgincludedir = $(includedir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd @@ -39,16 +83,19 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = README $(srcdir)/Info.plist.in $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/cups-genppdupdate.in \ +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs \ + $(srcdir)/Info.plist.in $(srcdir)/cups-genppdupdate.in \ $(srcdir)/test-rastertogutenprint.in \ - $(top_srcdir)/scripts/global.mk COPYING -@BUILD_CUPS_1_2_TRUE@cupsexec_driver_PROGRAMS = gutenprint.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@$(EXEEXT) + $(top_srcdir)/scripts/depcomp \ + $(top_srcdir)/scripts/test-driver COPYING README +@BUILD_CUPS_1_2_TRUE@cupsexec_driver_PROGRAMS = gutenprint.@GUTENPRINT_RELEASE_VERSION@$(EXEEXT) @BUILD_CUPS_TRUE@bin_PROGRAMS = cups-calibrate$(EXEEXT) -@BUILD_CUPS_TRUE@sbin_PROGRAMS = cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@$(EXEEXT) -@BUILD_CUPS_TRUE@cupsexec_filter_PROGRAMS = rastertogutenprint.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@$(EXEEXT) \ +@BUILD_CUPS_TRUE@sbin_PROGRAMS = cups-genppd.@GUTENPRINT_RELEASE_VERSION@$(EXEEXT) +@BUILD_CUPS_TRUE@cupsexec_filter_PROGRAMS = rastertogutenprint.@GUTENPRINT_RELEASE_VERSION@$(EXEEXT) \ @BUILD_CUPS_TRUE@ commandtoepson$(EXEEXT) \ @BUILD_CUPS_TRUE@ commandtocanon$(EXEEXT) +@BUILD_CUPS_TRUE@@BUILD_LIBUSB_BACKENDS_TRUE@cupsexec_backend_PROGRAMS = backend_gutenprint$(EXEEXT) subdir = src/cups ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -70,15 +117,37 @@ CONFIG_CLEAN_FILES = Info.plist cups-genppdupdate \ test-rastertogutenprint CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(cupsexec_backenddir)" \ "$(DESTDIR)$(cupsexec_driverdir)" \ "$(DESTDIR)$(cupsexec_filterdir)" "$(DESTDIR)$(sbindir)" \ "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(pkgdatadir)" \ "$(DESTDIR)$(pkgsysconfdir)" -PROGRAMS = $(bin_PROGRAMS) $(cupsexec_driver_PROGRAMS) \ - $(cupsexec_filter_PROGRAMS) $(sbin_PROGRAMS) +PROGRAMS = $(bin_PROGRAMS) $(cupsexec_backend_PROGRAMS) \ + $(cupsexec_driver_PROGRAMS) $(cupsexec_filter_PROGRAMS) \ + $(sbin_PROGRAMS) +am__backend_gutenprint_SOURCES_DIST = selphy_print.c kodak1400_print.c \ + kodak6800_print.c kodak605_print.c shinko_s2145_print.c \ + sony_updr150_print.c dnpds40_print.c mitsu70x_print.c \ + backend_common.c backend_common.h +@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) \ +@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-kodak605_print.$(OBJEXT) \ +@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-shinko_s2145_print.$(OBJEXT) \ +@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-sony_updr150_print.$(OBJEXT) \ +@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-dnpds40_print.$(OBJEXT) \ +@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-mitsu70x_print.$(OBJEXT) \ +@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_common.$(OBJEXT) +backend_gutenprint_OBJECTS = $(am_backend_gutenprint_OBJECTS) +am__DEPENDENCIES_1 = +@BUILD_LIBUSB_BACKENDS_TRUE@backend_gutenprint_DEPENDENCIES = \ +@BUILD_LIBUSB_BACKENDS_TRUE@ $(am__DEPENDENCIES_1) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = am_commandtocanon_OBJECTS = commandtocanon.$(OBJEXT) commandtocanon_OBJECTS = $(am_commandtocanon_OBJECTS) -am__DEPENDENCIES_1 = commandtocanon_DEPENDENCIES = $(am__DEPENDENCIES_1) am_commandtoepson_OBJECTS = commandtoepson.$(OBJEXT) commandtoepson_OBJECTS = $(am_commandtoepson_OBJECTS) @@ -86,39 +155,40 @@ commandtoepson_DEPENDENCIES = $(am__DEPENDENCIES_1) am_cups_calibrate_OBJECTS = cups-calibrate.$(OBJEXT) cups_calibrate_OBJECTS = $(am_cups_calibrate_OBJECTS) cups_calibrate_DEPENDENCIES = -am_cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS = cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.$(OBJEXT) \ - cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.$(OBJEXT) -cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS = $(am_cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS) -cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_DEPENDENCIES = \ +am_cups_genppd_@GUTENPRINT_RELEASE_VERSION@_OBJECTS = \ + cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.$(OBJEXT) \ + cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.$(OBJEXT) +cups_genppd_@GUTENPRINT_RELEASE_VERSION@_OBJECTS = \ + $(am_cups_genppd_@GUTENPRINT_RELEASE_VERSION@_OBJECTS) +cups_genppd_@GUTENPRINT_RELEASE_VERSION@_DEPENDENCIES = \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) $(GUTENPRINT_LIBS) -cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LINK = \ - $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) \ - $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) \ - $(CFLAGS) \ - $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDFLAGS) \ +cups_genppd_@GUTENPRINT_RELEASE_VERSION@_LINK = $(LIBTOOL) $(AM_V_lt) \ + --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) \ + $(CFLAGS) $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_LDFLAGS) \ $(LDFLAGS) -o $@ -am_gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS = gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.$(OBJEXT) \ - gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.$(OBJEXT) -gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS = $(am_gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS) -gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_DEPENDENCIES = \ +am_gutenprint_@GUTENPRINT_RELEASE_VERSION@_OBJECTS = \ + gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.$(OBJEXT) \ + gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.$(OBJEXT) +gutenprint_@GUTENPRINT_RELEASE_VERSION@_OBJECTS = \ + $(am_gutenprint_@GUTENPRINT_RELEASE_VERSION@_OBJECTS) +gutenprint_@GUTENPRINT_RELEASE_VERSION@_DEPENDENCIES = \ $(am__DEPENDENCIES_1) $(GUTENPRINT_LIBS) -gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LINK = \ - $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) \ - $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) \ - $(CFLAGS) \ - $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDFLAGS) \ +gutenprint_@GUTENPRINT_RELEASE_VERSION@_LINK = $(LIBTOOL) $(AM_V_lt) \ + --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) \ + $(CFLAGS) $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_LDFLAGS) \ $(LDFLAGS) -o $@ -am_rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS = \ +am_rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_OBJECTS = \ rastertoprinter.$(OBJEXT) i18n.$(OBJEXT) -rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS = $(am_rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS) -rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_DEPENDENCIES = \ +rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_OBJECTS = \ + $(am_rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_OBJECTS) +rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_DEPENDENCIES = \ $(am__DEPENDENCIES_1) $(GUTENPRINT_LIBS) -rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LINK = \ - $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_LINK = $(LIBTOOL) \ + $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDFLAGS) \ + $(rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_LDFLAGS) \ $(LDFLAGS) -o $@ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -141,41 +211,267 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } SCRIPTS = $(noinst_SCRIPTS) $(sbin_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(commandtocanon_SOURCES) $(commandtoepson_SOURCES) \ +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(backend_gutenprint_SOURCES) $(commandtocanon_SOURCES) \ + $(commandtoepson_SOURCES) $(cups_calibrate_SOURCES) \ + $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_SOURCES) \ + $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_SOURCES) \ + $(rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_SOURCES) +DIST_SOURCES = $(am__backend_gutenprint_SOURCES_DIST) \ + $(commandtocanon_SOURCES) $(commandtoepson_SOURCES) \ $(cups_calibrate_SOURCES) \ - $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_SOURCES) \ - $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_SOURCES) \ - $(rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_SOURCES) -DIST_SOURCES = $(commandtocanon_SOURCES) $(commandtoepson_SOURCES) \ - $(cups_calibrate_SOURCES) \ - $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_SOURCES) \ - $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_SOURCES) \ - $(rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_SOURCES) + $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_SOURCES) \ + $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_SOURCES) \ + $(rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac DATA = $(pkgdata_DATA) $(pkgsysconf_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags -am__tty_colors = \ -red=; grn=; lgn=; blu=; std= +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red='[0;31m'; \ + grn='[0;32m'; \ + lgn='[1;32m'; \ + blu='[1;34m'; \ + mgn='[0;35m'; \ + brg='[1m'; \ + std='[m'; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/scripts/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/scripts/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(cups_conf_datadir) pkglibdir = $(cups_conf_serverbin) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -233,6 +529,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -244,6 +541,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -268,6 +566,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -388,11 +688,13 @@ 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 empty = -BASE_VERSION = \"@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@.@GUTENPRINT_MICRO_VERSION@\" +BASE_VERSION = \"@GUTENPRINT_BASE_VERSION@\" pkgsysconfdir = $(cups_conf_serverroot) cupsexec_driverdir = $(pkglibdir)/driver cupsexec_filterdir = $(pkglibdir)/filter -@CUPS_PPDS_AT_TOP_LEVEL_FALSE@cups_modeldir = $(pkgdatadir)/model/gutenprint/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/ +@BUILD_LIBUSB_BACKENDS_TRUE@cupsexec_backenddir = $(pkglibdir)/backend +@BUILD_LIBUSB_BACKENDS_TRUE@cupsdata_blacklistdir = $(pkgdatadir)/usb/ +@CUPS_PPDS_AT_TOP_LEVEL_FALSE@cups_modeldir = $(pkgdatadir)/model/gutenprint/@GUTENPRINT_RELEASE_VERSION@/ @CUPS_PPDS_AT_TOP_LEVEL_TRUE@cups_modeldir = $(pkgdatadir)/model/ @CUPS_PPDS_AT_TOP_LEVEL_TRUE@DONT_UNINSTALL_PPDS = true LOCAL_CPPFLAGS = $(GUTENPRINT_CFLAGS) $(CUPS_CFLAGS) -DBASE_VERSION=$(BASE_VERSION) @@ -414,29 +716,34 @@ commandtocanon_SOURCES = commandtocanon.c commandtocanon_LDADD = $(CUPS_LIBS) commandtoepson_SOURCES = commandtoepson.c commandtoepson_LDADD = $(CUPS_LIBS) -cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_SOURCES = genppd.c i18n.c i18n.h -cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS = -DALL_LINGUAS='"$(ALL_LINGUAS)"' $(BUILD_SIMPLE_PPDS) $(TRANSLATE_PPDS) -cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDADD = $(CUPS_LIBS) $(GENPPD_LIBS) $(GUTENPRINT_LIBS) @LIBICONV@ -cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDFLAGS = $(STATIC_LDOPTS) -gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_SOURCES = genppd.c i18n.c i18n.h -gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS = -DCUPS_DRIVER_INTERFACE -DALL_LINGUAS='"$(ALL_LINGUAS)"' $(BUILD_SIMPLE_PPDS) $(TRANSLATE_PPDS) -gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDADD = $(CUPS_LIBS) $(GUTENPRINT_LIBS) @LIBICONV@ -gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDFLAGS = $(STATIC_LDOPTS) -rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_SOURCES = rastertoprinter.c i18n.c i18n.h -rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDADD = $(CUPS_LIBS) $(GUTENPRINT_LIBS) @LIBICONV@ -rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDFLAGS = $(STATIC_LDOPTS) +@BUILD_LIBUSB_BACKENDS_TRUE@backend_gutenprint_SOURCES = selphy_print.c kodak1400_print.c kodak6800_print.c kodak605_print.c shinko_s2145_print.c sony_updr150_print.c dnpds40_print.c mitsu70x_print.c backend_common.c backend_common.h +@BUILD_LIBUSB_BACKENDS_TRUE@backend_gutenprint_LDADD = $(LIBUSB_LIBS) +@BUILD_LIBUSB_BACKENDS_TRUE@backend_gutenprint_CPPFLAGS = $(LIBUSB_CFLAGS) -DURI_PREFIX=\"gutenprint$(GUTENPRINT_MAJOR_VERSION)$(GUTENPRINT_MINOR_VERSION)+usb\" +cups_genppd_@GUTENPRINT_RELEASE_VERSION@_SOURCES = genppd.c i18n.c i18n.h +cups_genppd_@GUTENPRINT_RELEASE_VERSION@_CFLAGS = -DALL_LINGUAS='"$(ALL_LINGUAS)"' $(BUILD_SIMPLE_PPDS) $(TRANSLATE_PPDS) +cups_genppd_@GUTENPRINT_RELEASE_VERSION@_LDADD = $(CUPS_LIBS) $(GENPPD_LIBS) $(GUTENPRINT_LIBS) @LIBICONV@ +cups_genppd_@GUTENPRINT_RELEASE_VERSION@_LDFLAGS = $(STATIC_LDOPTS) +gutenprint_@GUTENPRINT_RELEASE_VERSION@_SOURCES = genppd.c i18n.c i18n.h +gutenprint_@GUTENPRINT_RELEASE_VERSION@_CFLAGS = -DCUPS_DRIVER_INTERFACE -DALL_LINGUAS='"$(ALL_LINGUAS)"' $(BUILD_SIMPLE_PPDS) $(TRANSLATE_PPDS) +gutenprint_@GUTENPRINT_RELEASE_VERSION@_LDADD = $(CUPS_LIBS) $(GUTENPRINT_LIBS) @LIBICONV@ +gutenprint_@GUTENPRINT_RELEASE_VERSION@_LDFLAGS = $(STATIC_LDOPTS) +rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_SOURCES = rastertoprinter.c i18n.c i18n.h +rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_LDADD = $(CUPS_LIBS) $(GUTENPRINT_LIBS) @LIBICONV@ +rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_LDFLAGS = $(STATIC_LDOPTS) @BUILD_CUPS_TRUE@CUPS_PKG = calibrate.ppm @BUILD_CUPS_TRUE@CUPS_CONF = command.types pkgdata_DATA = $(CUPS_PKG) pkgsysconf_DATA = $(CUPS_CONF) @BUILD_CUPS_PPDS_TRUE@INSTALL_DATA_LOCAL_DEPS = ppd-stamp @USE_NLS_TRUE@PPD_NLS_1 = ppd-nls +@BUILD_LIBUSB_BACKENDS_TRUE@INSTALL_BLACKLIST = install-blacklist CLEANFILES = ppd-stamp DISTCLEANFILES = cups-genppdupdate MAINTAINERCLEANFILES = Makefile.in EXTRA_DIST = \ COPYING \ README \ + blacklist \ calibrate.ppm \ command.txt \ command.types \ @@ -445,7 +752,7 @@ EXTRA_DIST = \ all: all-am .SUFFIXES: -.SUFFIXES: .c .lo .o .obj +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/scripts/global.mk $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ @@ -467,6 +774,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -484,14 +792,19 @@ test-rastertogutenprint: $(top_builddir)/config.status $(srcdir)/test-rastertogu cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ @@ -512,7 +825,8 @@ uninstall-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ + -e 's/$$/$(EXEEXT)/' \ + `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files @@ -525,16 +839,70 @@ clean-binPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list +install-cupsexec_backendPROGRAMS: $(cupsexec_backend_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(cupsexec_backend_PROGRAMS)'; test -n "$(cupsexec_backenddir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(cupsexec_backenddir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(cupsexec_backenddir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(cupsexec_backenddir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(cupsexec_backenddir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-cupsexec_backendPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(cupsexec_backend_PROGRAMS)'; test -n "$(cupsexec_backenddir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(cupsexec_backenddir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(cupsexec_backenddir)" && rm -f $$files + +clean-cupsexec_backendPROGRAMS: + @list='$(cupsexec_backend_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list install-cupsexec_driverPROGRAMS: $(cupsexec_driver_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(cupsexec_driverdir)" || $(MKDIR_P) "$(DESTDIR)$(cupsexec_driverdir)" @list='$(cupsexec_driver_PROGRAMS)'; test -n "$(cupsexec_driverdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(cupsexec_driverdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(cupsexec_driverdir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ @@ -555,7 +923,8 @@ uninstall-cupsexec_driverPROGRAMS: @list='$(cupsexec_driver_PROGRAMS)'; test -n "$(cupsexec_driverdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ + -e 's/$$/$(EXEEXT)/' \ + `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(cupsexec_driverdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(cupsexec_driverdir)" && rm -f $$files @@ -570,14 +939,19 @@ clean-cupsexec_driverPROGRAMS: rm -f $$list install-cupsexec_filterPROGRAMS: $(cupsexec_filter_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(cupsexec_filterdir)" || $(MKDIR_P) "$(DESTDIR)$(cupsexec_filterdir)" @list='$(cupsexec_filter_PROGRAMS)'; test -n "$(cupsexec_filterdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(cupsexec_filterdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(cupsexec_filterdir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ @@ -598,7 +972,8 @@ uninstall-cupsexec_filterPROGRAMS: @list='$(cupsexec_filter_PROGRAMS)'; test -n "$(cupsexec_filterdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ + -e 's/$$/$(EXEEXT)/' \ + `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(cupsexec_filterdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(cupsexec_filterdir)" && rm -f $$files @@ -613,14 +988,19 @@ clean-cupsexec_filterPROGRAMS: rm -f $$list install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)" @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ @@ -641,7 +1021,8 @@ uninstall-sbinPROGRAMS: @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ + -e 's/$$/$(EXEEXT)/' \ + `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(sbindir)" && rm -f $$files @@ -654,28 +1035,41 @@ clean-sbinPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -commandtocanon$(EXEEXT): $(commandtocanon_OBJECTS) $(commandtocanon_DEPENDENCIES) + +backend_gutenprint$(EXEEXT): $(backend_gutenprint_OBJECTS) $(backend_gutenprint_DEPENDENCIES) $(EXTRA_backend_gutenprint_DEPENDENCIES) + @rm -f backend_gutenprint$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(backend_gutenprint_OBJECTS) $(backend_gutenprint_LDADD) $(LIBS) + +commandtocanon$(EXEEXT): $(commandtocanon_OBJECTS) $(commandtocanon_DEPENDENCIES) $(EXTRA_commandtocanon_DEPENDENCIES) @rm -f commandtocanon$(EXEEXT) - $(LINK) $(commandtocanon_OBJECTS) $(commandtocanon_LDADD) $(LIBS) -commandtoepson$(EXEEXT): $(commandtoepson_OBJECTS) $(commandtoepson_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(commandtocanon_OBJECTS) $(commandtocanon_LDADD) $(LIBS) + +commandtoepson$(EXEEXT): $(commandtoepson_OBJECTS) $(commandtoepson_DEPENDENCIES) $(EXTRA_commandtoepson_DEPENDENCIES) @rm -f commandtoepson$(EXEEXT) - $(LINK) $(commandtoepson_OBJECTS) $(commandtoepson_LDADD) $(LIBS) -cups-calibrate$(EXEEXT): $(cups_calibrate_OBJECTS) $(cups_calibrate_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(commandtoepson_OBJECTS) $(commandtoepson_LDADD) $(LIBS) + +cups-calibrate$(EXEEXT): $(cups_calibrate_OBJECTS) $(cups_calibrate_DEPENDENCIES) $(EXTRA_cups_calibrate_DEPENDENCIES) @rm -f cups-calibrate$(EXEEXT) - $(LINK) $(cups_calibrate_OBJECTS) $(cups_calibrate_LDADD) $(LIBS) -cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@$(EXEEXT): $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS) $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_DEPENDENCIES) - @rm -f cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@$(EXEEXT) - $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LINK) $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS) $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDADD) $(LIBS) -gutenprint.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@$(EXEEXT): $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS) $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_DEPENDENCIES) - @rm -f gutenprint.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@$(EXEEXT) - $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LINK) $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS) $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDADD) $(LIBS) -rastertogutenprint.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@$(EXEEXT): $(rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS) $(rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_DEPENDENCIES) - @rm -f rastertogutenprint.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@$(EXEEXT) - $(rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LINK) $(rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS) $(rastertogutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(cups_calibrate_OBJECTS) $(cups_calibrate_LDADD) $(LIBS) + +cups-genppd.@GUTENPRINT_RELEASE_VERSION@$(EXEEXT): $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_OBJECTS) $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_DEPENDENCIES) $(EXTRA_cups_genppd_@GUTENPRINT_RELEASE_VERSION@_DEPENDENCIES) + @rm -f cups-genppd.@GUTENPRINT_RELEASE_VERSION@$(EXEEXT) + $(AM_V_CCLD)$(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_LINK) $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_OBJECTS) $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_LDADD) $(LIBS) + +gutenprint.@GUTENPRINT_RELEASE_VERSION@$(EXEEXT): $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_OBJECTS) $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_DEPENDENCIES) $(EXTRA_gutenprint_@GUTENPRINT_RELEASE_VERSION@_DEPENDENCIES) + @rm -f gutenprint.@GUTENPRINT_RELEASE_VERSION@$(EXEEXT) + $(AM_V_CCLD)$(gutenprint_@GUTENPRINT_RELEASE_VERSION@_LINK) $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_OBJECTS) $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_LDADD) $(LIBS) + +rastertogutenprint.@GUTENPRINT_RELEASE_VERSION@$(EXEEXT): $(rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_OBJECTS) $(rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_DEPENDENCIES) $(EXTRA_rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_DEPENDENCIES) + @rm -f rastertogutenprint.@GUTENPRINT_RELEASE_VERSION@$(EXEEXT) + $(AM_V_CCLD)$(rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_LINK) $(rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_OBJECTS) $(rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_LDADD) $(LIBS) install-sbinSCRIPTS: $(sbin_SCRIPTS) @$(NORMAL_INSTALL) - test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)" @list='$(sbin_SCRIPTS)'; test -n "$(sbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ @@ -703,9 +1097,7 @@ uninstall-sbinSCRIPTS: @list='$(sbin_SCRIPTS)'; test -n "$(sbindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(sbindir)" && rm -f $$files + dir='$(DESTDIR)$(sbindir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -713,92 +1105,227 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_common.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-dnpds40_print.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-kodak1400_print.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-kodak605_print.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-kodak6800_print.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-mitsu70x_print.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-selphy_print.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-shinko_s2145_print.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-sony_updr150_print.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commandtocanon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commandtoepson.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cups-calibrate.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i18n.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rastertoprinter.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +backend_gutenprint-selphy_print.o: selphy_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-selphy_print.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-selphy_print.Tpo -c -o backend_gutenprint-selphy_print.o `test -f 'selphy_print.c' || echo '$(srcdir)/'`selphy_print.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-selphy_print.Tpo $(DEPDIR)/backend_gutenprint-selphy_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='selphy_print.c' object='backend_gutenprint-selphy_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-selphy_print.o `test -f 'selphy_print.c' || echo '$(srcdir)/'`selphy_print.c + +backend_gutenprint-selphy_print.obj: selphy_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-selphy_print.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-selphy_print.Tpo -c -o backend_gutenprint-selphy_print.obj `if test -f 'selphy_print.c'; then $(CYGPATH_W) 'selphy_print.c'; else $(CYGPATH_W) '$(srcdir)/selphy_print.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-selphy_print.Tpo $(DEPDIR)/backend_gutenprint-selphy_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='selphy_print.c' object='backend_gutenprint-selphy_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-selphy_print.obj `if test -f 'selphy_print.c'; then $(CYGPATH_W) 'selphy_print.c'; else $(CYGPATH_W) '$(srcdir)/selphy_print.c'; fi` + +backend_gutenprint-kodak1400_print.o: kodak1400_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-kodak1400_print.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-kodak1400_print.Tpo -c -o backend_gutenprint-kodak1400_print.o `test -f 'kodak1400_print.c' || echo '$(srcdir)/'`kodak1400_print.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-kodak1400_print.Tpo $(DEPDIR)/backend_gutenprint-kodak1400_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kodak1400_print.c' object='backend_gutenprint-kodak1400_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-kodak1400_print.o `test -f 'kodak1400_print.c' || echo '$(srcdir)/'`kodak1400_print.c + +backend_gutenprint-kodak1400_print.obj: kodak1400_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-kodak1400_print.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-kodak1400_print.Tpo -c -o backend_gutenprint-kodak1400_print.obj `if test -f 'kodak1400_print.c'; then $(CYGPATH_W) 'kodak1400_print.c'; else $(CYGPATH_W) '$(srcdir)/kodak1400_print.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-kodak1400_print.Tpo $(DEPDIR)/backend_gutenprint-kodak1400_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kodak1400_print.c' object='backend_gutenprint-kodak1400_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-kodak1400_print.obj `if test -f 'kodak1400_print.c'; then $(CYGPATH_W) 'kodak1400_print.c'; else $(CYGPATH_W) '$(srcdir)/kodak1400_print.c'; fi` + +backend_gutenprint-kodak6800_print.o: kodak6800_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-kodak6800_print.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-kodak6800_print.Tpo -c -o backend_gutenprint-kodak6800_print.o `test -f 'kodak6800_print.c' || echo '$(srcdir)/'`kodak6800_print.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-kodak6800_print.Tpo $(DEPDIR)/backend_gutenprint-kodak6800_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kodak6800_print.c' object='backend_gutenprint-kodak6800_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-kodak6800_print.o `test -f 'kodak6800_print.c' || echo '$(srcdir)/'`kodak6800_print.c + +backend_gutenprint-kodak6800_print.obj: kodak6800_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-kodak6800_print.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-kodak6800_print.Tpo -c -o backend_gutenprint-kodak6800_print.obj `if test -f 'kodak6800_print.c'; then $(CYGPATH_W) 'kodak6800_print.c'; else $(CYGPATH_W) '$(srcdir)/kodak6800_print.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-kodak6800_print.Tpo $(DEPDIR)/backend_gutenprint-kodak6800_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kodak6800_print.c' object='backend_gutenprint-kodak6800_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-kodak6800_print.obj `if test -f 'kodak6800_print.c'; then $(CYGPATH_W) 'kodak6800_print.c'; else $(CYGPATH_W) '$(srcdir)/kodak6800_print.c'; fi` + +backend_gutenprint-kodak605_print.o: kodak605_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-kodak605_print.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-kodak605_print.Tpo -c -o backend_gutenprint-kodak605_print.o `test -f 'kodak605_print.c' || echo '$(srcdir)/'`kodak605_print.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-kodak605_print.Tpo $(DEPDIR)/backend_gutenprint-kodak605_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kodak605_print.c' object='backend_gutenprint-kodak605_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-kodak605_print.o `test -f 'kodak605_print.c' || echo '$(srcdir)/'`kodak605_print.c + +backend_gutenprint-kodak605_print.obj: kodak605_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-kodak605_print.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-kodak605_print.Tpo -c -o backend_gutenprint-kodak605_print.obj `if test -f 'kodak605_print.c'; then $(CYGPATH_W) 'kodak605_print.c'; else $(CYGPATH_W) '$(srcdir)/kodak605_print.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-kodak605_print.Tpo $(DEPDIR)/backend_gutenprint-kodak605_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kodak605_print.c' object='backend_gutenprint-kodak605_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-kodak605_print.obj `if test -f 'kodak605_print.c'; then $(CYGPATH_W) 'kodak605_print.c'; else $(CYGPATH_W) '$(srcdir)/kodak605_print.c'; fi` + +backend_gutenprint-shinko_s2145_print.o: shinko_s2145_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-shinko_s2145_print.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-shinko_s2145_print.Tpo -c -o backend_gutenprint-shinko_s2145_print.o `test -f 'shinko_s2145_print.c' || echo '$(srcdir)/'`shinko_s2145_print.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-shinko_s2145_print.Tpo $(DEPDIR)/backend_gutenprint-shinko_s2145_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shinko_s2145_print.c' object='backend_gutenprint-shinko_s2145_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_s2145_print.o `test -f 'shinko_s2145_print.c' || echo '$(srcdir)/'`shinko_s2145_print.c + +backend_gutenprint-shinko_s2145_print.obj: shinko_s2145_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-shinko_s2145_print.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-shinko_s2145_print.Tpo -c -o backend_gutenprint-shinko_s2145_print.obj `if test -f 'shinko_s2145_print.c'; then $(CYGPATH_W) 'shinko_s2145_print.c'; else $(CYGPATH_W) '$(srcdir)/shinko_s2145_print.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-shinko_s2145_print.Tpo $(DEPDIR)/backend_gutenprint-shinko_s2145_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shinko_s2145_print.c' object='backend_gutenprint-shinko_s2145_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_s2145_print.obj `if test -f 'shinko_s2145_print.c'; then $(CYGPATH_W) 'shinko_s2145_print.c'; else $(CYGPATH_W) '$(srcdir)/shinko_s2145_print.c'; fi` + +backend_gutenprint-sony_updr150_print.o: sony_updr150_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-sony_updr150_print.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-sony_updr150_print.Tpo -c -o backend_gutenprint-sony_updr150_print.o `test -f 'sony_updr150_print.c' || echo '$(srcdir)/'`sony_updr150_print.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-sony_updr150_print.Tpo $(DEPDIR)/backend_gutenprint-sony_updr150_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sony_updr150_print.c' object='backend_gutenprint-sony_updr150_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-sony_updr150_print.o `test -f 'sony_updr150_print.c' || echo '$(srcdir)/'`sony_updr150_print.c + +backend_gutenprint-sony_updr150_print.obj: sony_updr150_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-sony_updr150_print.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-sony_updr150_print.Tpo -c -o backend_gutenprint-sony_updr150_print.obj `if test -f 'sony_updr150_print.c'; then $(CYGPATH_W) 'sony_updr150_print.c'; else $(CYGPATH_W) '$(srcdir)/sony_updr150_print.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-sony_updr150_print.Tpo $(DEPDIR)/backend_gutenprint-sony_updr150_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sony_updr150_print.c' object='backend_gutenprint-sony_updr150_print.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o backend_gutenprint-sony_updr150_print.obj `if test -f 'sony_updr150_print.c'; then $(CYGPATH_W) 'sony_updr150_print.c'; else $(CYGPATH_W) '$(srcdir)/sony_updr150_print.c'; fi` -cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.o: genppd.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -MT cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.o -MD -MP -MF $(DEPDIR)/cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.Tpo -c -o cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.o `test -f 'genppd.c' || echo '$(srcdir)/'`genppd.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.Tpo $(DEPDIR)/cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='genppd.c' object='cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.o' libtool=no @AMDEPBACKSLASH@ +backend_gutenprint-dnpds40_print.o: dnpds40_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-dnpds40_print.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-dnpds40_print.Tpo -c -o backend_gutenprint-dnpds40_print.o `test -f 'dnpds40_print.c' || echo '$(srcdir)/'`dnpds40_print.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-dnpds40_print.Tpo $(DEPDIR)/backend_gutenprint-dnpds40_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dnpds40_print.c' object='backend_gutenprint-dnpds40_print.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -c -o cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.o `test -f 'genppd.c' || echo '$(srcdir)/'`genppd.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o backend_gutenprint-dnpds40_print.o `test -f 'dnpds40_print.c' || echo '$(srcdir)/'`dnpds40_print.c -cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.obj: genppd.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -MT cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.obj -MD -MP -MF $(DEPDIR)/cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.Tpo -c -o cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.obj `if test -f 'genppd.c'; then $(CYGPATH_W) 'genppd.c'; else $(CYGPATH_W) '$(srcdir)/genppd.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.Tpo $(DEPDIR)/cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='genppd.c' object='cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.obj' libtool=no @AMDEPBACKSLASH@ +backend_gutenprint-dnpds40_print.obj: dnpds40_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-dnpds40_print.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-dnpds40_print.Tpo -c -o backend_gutenprint-dnpds40_print.obj `if test -f 'dnpds40_print.c'; then $(CYGPATH_W) 'dnpds40_print.c'; else $(CYGPATH_W) '$(srcdir)/dnpds40_print.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-dnpds40_print.Tpo $(DEPDIR)/backend_gutenprint-dnpds40_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dnpds40_print.c' object='backend_gutenprint-dnpds40_print.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -c -o cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.obj `if test -f 'genppd.c'; then $(CYGPATH_W) 'genppd.c'; else $(CYGPATH_W) '$(srcdir)/genppd.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o backend_gutenprint-dnpds40_print.obj `if test -f 'dnpds40_print.c'; then $(CYGPATH_W) 'dnpds40_print.c'; else $(CYGPATH_W) '$(srcdir)/dnpds40_print.c'; fi` -cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.o: i18n.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -MT cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.o -MD -MP -MF $(DEPDIR)/cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.Tpo -c -o cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.o `test -f 'i18n.c' || echo '$(srcdir)/'`i18n.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.Tpo $(DEPDIR)/cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='i18n.c' object='cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.o' libtool=no @AMDEPBACKSLASH@ +backend_gutenprint-mitsu70x_print.o: mitsu70x_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-mitsu70x_print.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-mitsu70x_print.Tpo -c -o backend_gutenprint-mitsu70x_print.o `test -f 'mitsu70x_print.c' || echo '$(srcdir)/'`mitsu70x_print.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-mitsu70x_print.Tpo $(DEPDIR)/backend_gutenprint-mitsu70x_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mitsu70x_print.c' object='backend_gutenprint-mitsu70x_print.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -c -o cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.o `test -f 'i18n.c' || echo '$(srcdir)/'`i18n.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o backend_gutenprint-mitsu70x_print.o `test -f 'mitsu70x_print.c' || echo '$(srcdir)/'`mitsu70x_print.c -cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.obj: i18n.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -MT cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.obj -MD -MP -MF $(DEPDIR)/cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.Tpo -c -o cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.obj `if test -f 'i18n.c'; then $(CYGPATH_W) 'i18n.c'; else $(CYGPATH_W) '$(srcdir)/i18n.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.Tpo $(DEPDIR)/cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='i18n.c' object='cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.obj' libtool=no @AMDEPBACKSLASH@ +backend_gutenprint-mitsu70x_print.obj: mitsu70x_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-mitsu70x_print.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-mitsu70x_print.Tpo -c -o backend_gutenprint-mitsu70x_print.obj `if test -f 'mitsu70x_print.c'; then $(CYGPATH_W) 'mitsu70x_print.c'; else $(CYGPATH_W) '$(srcdir)/mitsu70x_print.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-mitsu70x_print.Tpo $(DEPDIR)/backend_gutenprint-mitsu70x_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mitsu70x_print.c' object='backend_gutenprint-mitsu70x_print.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -c -o cups_genppd_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.obj `if test -f 'i18n.c'; then $(CYGPATH_W) 'i18n.c'; else $(CYGPATH_W) '$(srcdir)/i18n.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o backend_gutenprint-mitsu70x_print.obj `if test -f 'mitsu70x_print.c'; then $(CYGPATH_W) 'mitsu70x_print.c'; else $(CYGPATH_W) '$(srcdir)/mitsu70x_print.c'; fi` -gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.o: genppd.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -MT gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.o -MD -MP -MF $(DEPDIR)/gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.Tpo -c -o gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.o `test -f 'genppd.c' || echo '$(srcdir)/'`genppd.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.Tpo $(DEPDIR)/gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='genppd.c' object='gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.o' libtool=no @AMDEPBACKSLASH@ +backend_gutenprint-backend_common.o: backend_common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-backend_common.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-backend_common.Tpo -c -o backend_gutenprint-backend_common.o `test -f 'backend_common.c' || echo '$(srcdir)/'`backend_common.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-backend_common.Tpo $(DEPDIR)/backend_gutenprint-backend_common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='backend_common.c' object='backend_gutenprint-backend_common.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -c -o gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.o `test -f 'genppd.c' || echo '$(srcdir)/'`genppd.c +@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.o `test -f 'backend_common.c' || echo '$(srcdir)/'`backend_common.c -gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.obj: genppd.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -MT gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.obj -MD -MP -MF $(DEPDIR)/gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.Tpo -c -o gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.obj `if test -f 'genppd.c'; then $(CYGPATH_W) 'genppd.c'; else $(CYGPATH_W) '$(srcdir)/genppd.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.Tpo $(DEPDIR)/gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='genppd.c' object='gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.obj' libtool=no @AMDEPBACKSLASH@ +backend_gutenprint-backend_common.obj: backend_common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-backend_common.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-backend_common.Tpo -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` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-backend_common.Tpo $(DEPDIR)/backend_gutenprint-backend_common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='backend_common.c' object='backend_gutenprint-backend_common.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -c -o gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-genppd.obj `if test -f 'genppd.c'; then $(CYGPATH_W) 'genppd.c'; else $(CYGPATH_W) '$(srcdir)/genppd.c'; fi` +@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` -gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.o: i18n.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -MT gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.o -MD -MP -MF $(DEPDIR)/gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.Tpo -c -o gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.o `test -f 'i18n.c' || echo '$(srcdir)/'`i18n.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.Tpo $(DEPDIR)/gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='i18n.c' object='gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.o' libtool=no @AMDEPBACKSLASH@ +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 +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genppd.c' object='cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -c -o gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.o `test -f 'i18n.c' || echo '$(srcdir)/'`i18n.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -c -o cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.o `test -f 'genppd.c' || echo '$(srcdir)/'`genppd.c -gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.obj: i18n.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -MT gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.obj -MD -MP -MF $(DEPDIR)/gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.Tpo -c -o gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.obj `if test -f 'i18n.c'; then $(CYGPATH_W) 'i18n.c'; else $(CYGPATH_W) '$(srcdir)/i18n.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.Tpo $(DEPDIR)/gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='i18n.c' object='gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.obj' libtool=no @AMDEPBACKSLASH@ +cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.obj: 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.obj -MD -MP -MF $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.Tpo -c -o cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.obj `if test -f 'genppd.c'; then $(CYGPATH_W) 'genppd.c'; else $(CYGPATH_W) '$(srcdir)/genppd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.Tpo $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genppd.c' object='cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_CFLAGS) $(CFLAGS) -c -o gutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@-i18n.obj `if test -f 'i18n.c'; then $(CYGPATH_W) 'i18n.c'; else $(CYGPATH_W) '$(srcdir)/i18n.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -c -o cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.obj `if test -f 'genppd.c'; then $(CYGPATH_W) 'genppd.c'; else $(CYGPATH_W) '$(srcdir)/genppd.c'; fi` + +cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.o: i18n.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@-i18n.o -MD -MP -MF $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.Tpo -c -o cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.o `test -f 'i18n.c' || echo '$(srcdir)/'`i18n.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.Tpo $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i18n.c' object='cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -c -o cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.o `test -f 'i18n.c' || echo '$(srcdir)/'`i18n.c + +cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.obj: i18n.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@-i18n.obj -MD -MP -MF $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.Tpo -c -o cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.obj `if test -f 'i18n.c'; then $(CYGPATH_W) 'i18n.c'; else $(CYGPATH_W) '$(srcdir)/i18n.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.Tpo $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i18n.c' object='cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -c -o cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.obj `if test -f 'i18n.c'; then $(CYGPATH_W) 'i18n.c'; else $(CYGPATH_W) '$(srcdir)/i18n.c'; fi` + +gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.o: genppd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -MT gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.o -MD -MP -MF $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.Tpo -c -o gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.o `test -f 'genppd.c' || echo '$(srcdir)/'`genppd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.Tpo $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genppd.c' object='gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -c -o gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.o `test -f 'genppd.c' || echo '$(srcdir)/'`genppd.c + +gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.obj: genppd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -MT gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.obj -MD -MP -MF $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.Tpo -c -o gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.obj `if test -f 'genppd.c'; then $(CYGPATH_W) 'genppd.c'; else $(CYGPATH_W) '$(srcdir)/genppd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.Tpo $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genppd.c' object='gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -c -o gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.obj `if test -f 'genppd.c'; then $(CYGPATH_W) 'genppd.c'; else $(CYGPATH_W) '$(srcdir)/genppd.c'; fi` + +gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.o: i18n.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -MT gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.o -MD -MP -MF $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.Tpo -c -o gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.o `test -f 'i18n.c' || echo '$(srcdir)/'`i18n.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.Tpo $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i18n.c' object='gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -c -o gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.o `test -f 'i18n.c' || echo '$(srcdir)/'`i18n.c + +gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.obj: i18n.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -MT gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.obj -MD -MP -MF $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.Tpo -c -o gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.obj `if test -f 'i18n.c'; then $(CYGPATH_W) 'i18n.c'; else $(CYGPATH_W) '$(srcdir)/i18n.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.Tpo $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i18n.c' object='gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(gutenprint_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -c -o gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.obj `if test -f 'i18n.c'; then $(CYGPATH_W) 'i18n.c'; else $(CYGPATH_W) '$(srcdir)/i18n.c'; fi` mostlyclean-libtool: -rm -f *.lo @@ -807,8 +1334,11 @@ clean-libtool: -rm -rf .libs _libs install-pkgdataDATA: $(pkgdata_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -822,13 +1352,14 @@ uninstall-pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files + dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) install-pkgsysconfDATA: $(pkgsysconf_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgsysconfdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgsysconfdir)" @list='$(pkgsysconf_DATA)'; test -n "$(pkgsysconfdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgsysconfdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgsysconfdir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -842,30 +1373,17 @@ uninstall-pkgsysconfDATA: @$(NORMAL_UNINSTALL) @list='$(pkgsysconf_DATA)'; test -n "$(pkgsysconfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgsysconfdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgsysconfdir)" && rm -f $$files - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) + dir='$(DESTDIR)$(pkgsysconfdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -877,15 +1395,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -894,101 +1408,194 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ else \ - skipped="($$skip tests were not run)"; \ + color_start= color_end=; \ fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - echo "$$grn$$dashes"; \ - else \ - echo "$$red$$dashes"; \ - fi; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes$$std"; \ - test "$$failed" -eq 0; \ - else :; fi + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test-ppds.log: test-ppds + @p='test-ppds'; \ + b='test-ppds'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-rastertogutenprint.log: test-rastertogutenprint + @p='test-rastertogutenprint'; \ + b='test-rastertogutenprint'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @@ -1028,7 +1635,7 @@ check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(DATA) all-local installdirs: - for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(cupsexec_driverdir)" "$(DESTDIR)$(cupsexec_filterdir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgsysconfdir)"; do \ + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(cupsexec_backenddir)" "$(DESTDIR)$(cupsexec_driverdir)" "$(DESTDIR)$(cupsexec_filterdir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgsysconfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am @@ -1041,11 +1648,19 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) @@ -1059,11 +1674,14 @@ maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +@BUILD_CUPS_FALSE@install-exec-hook: +@BUILD_LIBUSB_BACKENDS_FALSE@install-exec-hook: clean: clean-am -clean-am: clean-binPROGRAMS clean-cupsexec_driverPROGRAMS \ - clean-cupsexec_filterPROGRAMS clean-generic clean-libtool \ - clean-local clean-sbinPROGRAMS mostlyclean-am +clean-am: clean-binPROGRAMS clean-cupsexec_backendPROGRAMS \ + clean-cupsexec_driverPROGRAMS clean-cupsexec_filterPROGRAMS \ + clean-generic clean-libtool clean-local clean-sbinPROGRAMS \ + mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) @@ -1091,10 +1709,12 @@ install-dvi: install-dvi-am install-dvi-am: -install-exec-am: install-binPROGRAMS install-cupsexec_driverPROGRAMS \ +install-exec-am: install-binPROGRAMS install-cupsexec_backendPROGRAMS \ + install-cupsexec_driverPROGRAMS \ install-cupsexec_filterPROGRAMS install-sbinPROGRAMS \ install-sbinSCRIPTS - + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-exec-hook install-html: install-html-am install-html-am: @@ -1133,32 +1753,37 @@ ps: ps-am ps-am: -uninstall-am: uninstall-binPROGRAMS uninstall-cupsexec_driverPROGRAMS \ +uninstall-am: uninstall-binPROGRAMS uninstall-cupsexec_backendPROGRAMS \ + uninstall-cupsexec_driverPROGRAMS \ uninstall-cupsexec_filterPROGRAMS uninstall-local \ uninstall-pkgdataDATA uninstall-pkgsysconfDATA \ uninstall-sbinPROGRAMS uninstall-sbinSCRIPTS -.MAKE: check-am install-am install-data-am install-strip +.MAKE: check-am install-am install-data-am install-exec-am \ + install-strip -.PHONY: CTAGS GTAGS all all-am all-local check check-TESTS check-am \ - clean clean-binPROGRAMS clean-cupsexec_driverPROGRAMS \ +.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \ + check-am clean clean-binPROGRAMS \ + clean-cupsexec_backendPROGRAMS clean-cupsexec_driverPROGRAMS \ clean-cupsexec_filterPROGRAMS clean-generic clean-libtool \ - clean-local clean-sbinPROGRAMS ctags dist-hook distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-binPROGRAMS \ + clean-local clean-sbinPROGRAMS cscopelist-am ctags ctags-am \ + dist-hook distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-cupsexec_backendPROGRAMS \ install-cupsexec_driverPROGRAMS \ install-cupsexec_filterPROGRAMS install-data install-data-am \ install-data-hook install-data-local install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgdataDATA \ + install-dvi-am install-exec install-exec-am install-exec-hook \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-pkgdataDATA \ install-pkgsysconfDATA install-ps install-ps-am \ install-sbinPROGRAMS install-sbinSCRIPTS install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-binPROGRAMS \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-cupsexec_backendPROGRAMS \ uninstall-cupsexec_driverPROGRAMS \ uninstall-cupsexec_filterPROGRAMS uninstall-local \ uninstall-pkgdataDATA uninstall-pkgsysconfDATA \ @@ -1181,7 +1806,14 @@ $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) -install-data-local: $(INSTALL_DATA_LOCAL_DEPS) +@BUILD_CUPS_TRUE@@BUILD_LIBUSB_BACKENDS_TRUE@install-exec-hook: +@BUILD_CUPS_TRUE@@BUILD_LIBUSB_BACKENDS_TRUE@ mv $(DESTDIR)$(pkglibdir)/backend/backend_gutenprint "$(DESTDIR)$(pkglibdir)/backend/gutenprint$(GUTENPRINT_MAJOR_VERSION)$(GUTENPRINT_MINOR_VERSION)+usb" +@BUILD_CUPS_TRUE@@BUILD_LIBUSB_BACKENDS_TRUE@ chmod 700 "$(DESTDIR)$(pkglibdir)/backend/gutenprint$(GUTENPRINT_MAJOR_VERSION)$(GUTENPRINT_MINOR_VERSION)+usb" +@BUILD_LIBUSB_BACKENDS_TRUE@install-blacklist: +@BUILD_LIBUSB_BACKENDS_TRUE@ $(mkdir_p) $(DESTDIR)$(cupsdata_blacklistdir) +@BUILD_LIBUSB_BACKENDS_TRUE@ $(INSTALL_DATA) blacklist $(DESTDIR)$(cupsdata_blacklistdir)/net.sf.gimp-print.usb-quirks + +install-data-local: $(INSTALL_DATA_LOCAL_DEPS) $(INSTALL_BLACKLIST) if test -n "$(CUPS_PKG)" -a -n "$(INSTALL_DATA_LOCAL_DEPS)" ; then \ $(mkdir_p) $(DESTDIR)$(cups_modeldir); \ cd ppd ; \ @@ -1202,7 +1834,7 @@ install-data-local: $(INSTALL_DATA_LOCAL_DEPS) $(INSTALL_DATA) $$file "$(DESTDIR)$(localedir)/$$lang/gutenprint_$$lang.po"; \ done -uninstall-local: $(INSTALL_DATA_LOCAL_DEPS) +uninstall-local: $(INSTALL_DATA_LOCAL_DEPS) $(INSTALL_BLACKLIST) # Remove PPDs installed in new PPD location if test -z "DONT_UNINSTALL_PPDS" ; then \ if test -n "$(INSTALL_DATA_LOCAL_DEPS)" ; then \ @@ -1213,6 +1845,8 @@ uninstall-local: $(INSTALL_DATA_LOCAL_DEPS) lang=`basename $$file .po`; \ $(RM) "$(DESTDIR)$(localedir)/$$lang/gutenprint_$$lang.po"; \ done + $(RM) -f "$(DESTDIR)$(cupsdata_blacklistdir)/net.sf.gimp-print.usb-quirks" + $(RM) -f "$(DESTDIR)$(pkglibdir)/backend/gutenprint$(GUTENPRINT_MAJOR_VERSION)$(GUTENPRINT_MINOR_VERSION)+usb" install-data-hook: # Remove unused directories in install tree @@ -1222,6 +1856,8 @@ install-data-hook: -rmdir $(DESTDIR)$(pkgdatadir) -rmdir $(DESTDIR)$(cupsexec_driverdir) -rmdir $(DESTDIR)$(cupsexec_filterdir) + -rmdir $(DESTDIR)$(cupsexec_backenddir) + -rmdir $(DESTDIR)$(cupsdata_blacklistdir) -rmdir $(DESTDIR)$(bindir) -rmdir $(DESTDIR)$(pkglibdir) -rmdir $(DESTDIR)$(pkgsysconfdir) @@ -1229,13 +1865,13 @@ install-data-hook: -rmdir `dirname $(DESTDIR)$(pkglibdir)` -rmdir `dirname $(DESTDIR)$(pkgsysconfdir)` -.PHONY: ppd ppd-stamp-pre ppd-stamp-nonls ppd-stamp-nls ppd-stamp-phony ppd-catalog-clean ppd-clean +.PHONY: ppd ppd-stamp-pre ppd-stamp-nonls ppd-stamp-nls ppd-stamp-phony ppd-catalog-clean ppd-clean $(INSTALL_BLACKLIST) all-local: $(INSTALL_DATA_LOCAL_DEPS) ppd: ppd-stamp -ppd-stamp: cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ $(top_srcdir)/src/xml/xml-stamp +ppd-stamp: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(top_srcdir)/src/xml/xml-stamp $(MAKE) ppd-stamp-pre $(MAKE) ppd-stamp-phony touch ppd-stamp @@ -1243,10 +1879,10 @@ ppd-stamp: cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ $(t ppd-stamp-phony: $(PPD) ppd-catalog-clean: - -$(RM) -r catalog + $(RM) -rf catalog ppd-clean: - -$(RM) -r ppd + $(RM) -rf ppd ppd-stamp-pre: ppd-catalog-clean ppd-clean @@ -1258,32 +1894,32 @@ ppd-catalog: ppd-catalog-clean $(INSTALL_DATA) $$file "catalog/$$lang/gutenprint_$$lang.po"; \ done -ppd-nonls: cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ +ppd-nonls: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(mkdir_p) ppd/C $(MAKE) ppd-catalog-clean - LC_ALL= LANG= LANGUAGE= $(STP_NONLS_ENV) ./cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ @WHICH_PPDS@ $(EXTRA_GENPPD_OPTS) -l C -p ppd/C + LC_ALL= LANG= LANGUAGE= $(STP_NONLS_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ $(EXTRA_GENPPD_OPTS) -l C -p ppd/C -ppd-global: cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ +ppd-global: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @echo "Global PPDs:" $(mkdir_p) ppd/Global $(MAKE) ppd-catalog - LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global $(MAKE) ppd-catalog-clean -ppd-global-ln: cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ +ppd-global-ln: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @echo "Global PPDs (localized numbers for testing):" $(mkdir_p) ppd/Global $(MAKE) ppd-catalog - LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global -N + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global -N $(MAKE) ppd-catalog-clean -ppd-nls: cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ ppd-nonls +ppd-nls: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ ppd-nonls $(mkdir_p) ppd $(MAKE) ppd-catalog - for language in `$(STP_ENV) ./cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ -L` ; do \ - mkdir ppd/$$language ; \ - echo "$$language:" ; \ - LC_ALL=$$language LANG=$$language LANGUAGE=$$language $(STP_ENV) ./cups-genppd.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -l $$language -p ppd/$$language; \ + for language in `$(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ -L` ; do \ + $(mkdir_p) ppd/$$language ; \ + echo -n "$$language: " ; \ + LC_ALL=$$language LANG=$$language LANGUAGE=$$language $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -l $$language -p ppd/$$language; \ done $(MAKE) ppd-catalog-clean diff --git a/src/cups/backend_common.c b/src/cups/backend_common.c new file mode 100644 index 0000000..1139e12 --- /dev/null +++ b/src/cups/backend_common.c @@ -0,0 +1,863 @@ +/* + * CUPS Backend common code + * + * Copyright (c) 2007-2014 Solomon Peachy <pizza@shaftnet.org> + * + * The latest version of this program can be found at: + * + * http://git.shaftnet.org/cgit/selphy_print.git + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * [http://www.gnu.org/licenses/gpl-2.0.html] + * + */ + +#include "backend_common.h" + +#define BACKEND_VERSION "0.42G" +#ifndef URI_PREFIX +#error "Must Define URI_PREFIX" +#endif + +/* Global variables */ +int dyesub_debug = 0; +int extra_vid = -1; +int extra_pid = -1; +int extra_type = -1; +char *use_serno = NULL; + +/* Support Functions */ + +#define ID_BUF_SIZE 2048 +static char *get_device_id(struct libusb_device_handle *dev) +{ + int length; + int iface = 0; + char *buf = malloc(ID_BUF_SIZE + 1); + + if (libusb_kernel_driver_active(dev, iface)) + libusb_detach_kernel_driver(dev, iface); + + libusb_claim_interface(dev, iface); + + if (libusb_control_transfer(dev, + LIBUSB_REQUEST_TYPE_CLASS | LIBUSB_ENDPOINT_IN | + LIBUSB_RECIPIENT_INTERFACE, + 0, 0, + (iface << 8), + (unsigned char *)buf, ID_BUF_SIZE, 5000) < 0) + { + *buf = '\0'; + goto done; + } + + /* length is the first two bytes, MSB first */ + length = (((unsigned)buf[0] & 255) << 8) | + ((unsigned)buf[1] & 255); + + /* Sanity checks */ + if (length > ID_BUF_SIZE || length < 14) + length = (((unsigned)buf[1] & 255) << 8) | + ((unsigned)buf[0] & 255); + + if (length > ID_BUF_SIZE) + length = ID_BUF_SIZE; + + if (length < 14) { + *buf = '\0'; + goto done; + } + + /* Move, and terminate */ + memmove(buf, buf + 2, length); + buf[length] = '\0'; + +done: + libusb_release_interface(dev, iface); + + return buf; +} + +int read_data(struct libusb_device_handle *dev, uint8_t endp, + uint8_t *buf, int buflen, int *readlen) +{ + int ret; + + /* Clear buffer */ + memset(buf, 0, buflen); + + ret = libusb_bulk_transfer(dev, endp, + buf, + buflen, + readlen, + 10000); + + if (ret < 0) { + ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, *readlen, buflen, endp); + goto done; + } + + if (dyesub_debug) { + int i; + DEBUG("<- "); + for (i = 0 ; i < *readlen; i++) { + DEBUG2("%02x ", *(buf+i)); + } + DEBUG2("\n"); + } + +done: + return ret; +} + +int send_data(struct libusb_device_handle *dev, uint8_t endp, + uint8_t *buf, int len) +{ + int num = 0; + + if (dyesub_debug) { + DEBUG("Sending %d bytes to printer\n", len); + } + + while (len) { + int len2 = (len > 65536) ? 65536: len; + int ret = libusb_bulk_transfer(dev, endp, + buf, len2, + &num, 15000); + + if (dyesub_debug) { + int i; + DEBUG("-> "); + for (i = 0 ; i < len2; i++) { + DEBUG2("%02x ", *(buf+i)); + } + DEBUG2("\n"); + } + + if (ret < 0) { + ERROR("Failure to send data to printer (libusb error %d: (%d/%d to 0x%02x))\n", ret, num, len, endp); + return ret; + } + len -= num; + buf += num; + } + + return 0; +} + +int terminate = 0; + +static void sigterm_handler(int signum) { + UNUSED(signum); + + terminate = 1; + INFO("Job Cancelled"); +} + +static char *sanitize_string(char *str) { + int len = strlen(str); + + while(len && (str[len-1] <= 0x20)) { + str[len-1] = 0; + len--; + } + return str; +} + +/* + + These functions are Public Domain code obtained from: + + http://www.geekhideout.com/urlcode.shtml + +*/ +#include <ctype.h> /* for isalnum() */ +static char to_hex(char code) { + static const char hex[] = "0123456789abcdef"; + return hex[code & 15]; +} +static char from_hex(char ch) { + return isdigit(ch) ? ch - '0' : tolower(ch) - 'a' + 10; +} +/* Note -- caller must free returned pointer! */ +static char *url_encode(char *str) { + char *pstr = str, *buf = malloc(strlen(str) * 3 + 1), *pbuf = buf; + + while (*pstr) { + if (isalnum(*pstr) || *pstr == '-' || *pstr == '_' || *pstr == '.' || *pstr == '~') + *pbuf++ = *pstr; + else if (*pstr == ' ') + *pbuf++ = '+'; + else + *pbuf++ = '%', *pbuf++ = to_hex(*pstr >> 4), *pbuf++ = to_hex(*pstr & 15); + pstr++; + } + *pbuf = '\0'; + return buf; +} +static char *url_decode(char *str) { + char *pstr = str, *buf = malloc(strlen(str) + 1), *pbuf = buf; + while (*pstr) { + if (*pstr == '%') { + if (pstr[1] && pstr[2]) { + *pbuf++ = from_hex(pstr[1]) << 4 | from_hex(pstr[2]); + pstr += 2; + } + } else if (*pstr == '+') { + *pbuf++ = ' '; + } else { + *pbuf++ = *pstr; + } + pstr++; + } + *pbuf = '\0'; + return buf; +} + +/* And now back to our regularly-scheduled programming */ + +static int print_scan_output(struct libusb_device *device, + struct libusb_device_descriptor *desc, + char *prefix, char *manuf2, + int found, int match, + int scan_only, char *match_serno, + struct dyesub_backend *backend) +{ + struct libusb_device_handle *dev; + + char buf[256]; + char *product = NULL, *serial = NULL, *manuf = NULL; + + if (libusb_open(device, &dev)) { + ERROR("Could not open device %04x:%04x (need to be root?)\n", desc->idVendor, desc->idProduct); + found = -1; + goto abort; + } + + /* Query detailed info */ + if (desc->iManufacturer) { + libusb_get_string_descriptor_ascii(dev, desc->iManufacturer, (unsigned char*)buf, STR_LEN_MAX); + sanitize_string(buf); + manuf = url_encode(buf); + } + buf[0] = 0; + if (desc->iProduct) { + libusb_get_string_descriptor_ascii(dev, desc->iProduct, (unsigned char *)buf, STR_LEN_MAX); + sanitize_string(buf); + product = url_encode(buf); + } + buf[0] = 0; + if (desc->iSerialNumber) { + libusb_get_string_descriptor_ascii(dev, desc->iSerialNumber, (unsigned char*)buf, STR_LEN_MAX); + sanitize_string(buf); + } else if (backend->query_serno) { + /* XXX this is ... a cut-n-paste hack */ + + 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... */ + if (!libusb_claim_interface(dev, iface)) { + int i; + uint8_t endp_up, endp_down; + 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) { + if (config->interface[0].altsetting[0].endpoint[i].bEndpointAddress & LIBUSB_ENDPOINT_IN) + endp_up = config->interface[0].altsetting[0].endpoint[i].bEndpointAddress; + else + endp_down = config->interface[0].altsetting[0].endpoint[i].bEndpointAddress; + } + } + + /* 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); + } + } + + if (!strlen(buf)) { + WARNING("**** THIS PRINTER DOES NOT REPORT A SERIAL NUMBER!\n"); + WARNING("**** If you intend to use multiple printers of this typpe, you\n"); + WARNING("**** must only plug one in at a time or unexpected behaivor will occur!\n"); + serial = strdup("NONE_UNKNOWN"); + } else { + serial = url_encode(buf); + } + + if (dyesub_debug) + DEBUG("%sVID: %04X PID: %04X Manuf: '%s' Product: '%s' Serial: '%s'\n", + match ? "MATCH: " : "", + desc->idVendor, desc->idProduct, manuf, product, serial); + + if (scan_only) { + int j = 0, k = 0; + char *ieee_id = get_device_id(dev); + char *product2 = url_decode(product); + + /* URLify the manuf and model strings */ + if (strlen(manuf2)) + strncpy(buf, manuf2, sizeof(buf) - 2); + else + strncpy(buf, manuf, sizeof(buf) - 2); + k = strlen(buf); + buf[k++] = '/'; + buf[k] = 0; + + j = (manuf2 && strlen(manuf2)) ? strlen(manuf2) + 1 : 0; + strncpy(buf + k, product + j, sizeof(buf)-k); + + fprintf(stdout, "direct %s://%s?serial=%s&backend=%s \"%s\" \"%s\" \"%s\" \"\"\n", + prefix, buf, serial, backend->uri_prefix, + product2, product2, + ieee_id? ieee_id : ""); + + if (ieee_id) + free(ieee_id); + if (product2) + free(product2); + } + + /* If a serial number was passed down, use it. */ + if (match_serno && strcmp(match_serno, (char*)serial)) { + found = -1; + } + + /* Free things up */ + if(serial) free(serial); + if(manuf) free(manuf); + if(product) free(product); + + libusb_close(dev); +abort: + + return found; +} + +static struct dyesub_backend *backends[] = { + &canonselphy_backend, + &kodak6800_backend, + &kodak605_backend, + &kodak1400_backend, + &shinkos2145_backend, + &updr150_backend, + &mitsu70x_backend, + &dnpds40_backend, + NULL, +}; + +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 found = -1; + + /* Enumerate and find suitable device */ + num = libusb_get_device_list(ctx, list); + + 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 (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; + 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; + + found = print_scan_output((*list)[i], &desc, + URI_PREFIX, backends[k]->devices[j].manuf_str, + found, (found == i), + scan_only, match_serno, + backends[k]); + + if (found != -1 && !scan_only) + break; + } + + return found; +} + +static struct dyesub_backend *find_backend(char *uri_prefix) +{ + int i; + + + if (!uri_prefix) + return NULL; + + for (i = 0; ; i++) { + struct dyesub_backend *backend = backends[i]; + if (!backend) + return NULL; + if (!strcmp(uri_prefix, backend->uri_prefix)) + return backend; + } + return NULL; +} + +static void print_license_blurb(void) +{ + const char *license = "\n\ +Copyright 2007-2014 Solomon Peachy <pizza AT shaftnet DOT org>\n\ +\n\ +This program is free software; you can redistribute it and/or modify it\n\ +under the terms of the GNU General Public License as published by the Free\n\ +Software Foundation; either version 2 of the License, or (at your option)\n\ +any later version.\n\ +\n\ +This program is distributed in the hope that it will be useful, but\n\ +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n\ +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License\n\ +for more details.\n\ +\n\ +You should have received a copy of the GNU General Public License\n\ +along with this program; if not, write to the Free Software\n\ +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n\ +\n [http://www.gnu.org/licenses/gpl-2.0.html]\n\n"; + + fprintf(stderr, "%s", license); +} + +static void print_help(char *argv0, struct dyesub_backend *backend) +{ + struct libusb_context *ctx = NULL; + struct libusb_device **list = NULL; + + char *ptr = strrchr(argv0, '/'); + if (ptr) + ptr++; + else + ptr = argv0; + + if (!backend) + backend = find_backend(ptr); + + if (!backend) { + int i; + 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 ] [ -S serialnum ] [ -B backendname ] \n"); + DEBUG(" [ -V extra_vid ] [ -P extra_pid ] [ -T extra_type ] \n"); + DEBUG(" [ [ backend_specific_args ] | [ - | infile ] ]\n"); + for (i = 0; ; i++) { + backend = backends[i]; + if (!backend) + break; + DEBUG(" -B %s\t# %s version %s\n", + backend->uri_prefix, backend->name, backend->version); + if (backend->cmdline_usage) + backend->cmdline_usage(); + } + } else { + DEBUG("Standalone %s backend version %s\n", + backend->name, backend->version); + DEBUG("\t%s\n", backend->uri_prefix); + DEBUG("\t[ -D ] [ -S serialnum ] \n"); + DEBUG("\t[ -V extra_vid ] [ -P extra_pid ] [ -T extra_type ] \n"); + DEBUG("\t\t[ infile | - ]\n"); + + if (backend->cmdline_usage) + backend->cmdline_usage(); + } + libusb_init(&ctx); + find_and_enumerate(ctx, &list, backend, NULL, P_ANY, 1); + libusb_free_device_list(list, 1); + libusb_exit(ctx); +} + +int main (int argc, char **argv) +{ + struct libusb_context *ctx = NULL; + struct libusb_device **list = NULL; + struct libusb_device_handle *dev; + struct libusb_config_descriptor *config; + + struct dyesub_backend *backend = NULL; + void * backend_ctx = NULL; + + uint8_t endp_up = 0; + uint8_t endp_down = 0; + + int data_fd = fileno(stdin); + + int i; + int claimed; + int backend_cmd = 0; + + int ret = 0; + 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); + DEBUG("Copyright 2007-2014 Solomon Peachy\n"); + DEBUG("This free software comes with ABSOLUTELY NO WARRANTY! \n"); + DEBUG("Licensed under the GNU GPL. Run with '-G' for more details.\n"); + DEBUG("\n"); + + /* First pass at cmdline parsing */ + if (getenv("DYESUB_DEBUG")) + dyesub_debug++; + if (getenv("EXTRA_PID")) + extra_pid = strtol(getenv("EXTRA_PID"), NULL, 16); + if (getenv("EXTRA_VID")) + extra_pid = strtol(getenv("EXTRA_VID"), NULL, 16); + if (getenv("EXTRA_PID")) + 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: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': + 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 (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 ); + + } + + /* 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]; + 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 { + 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 */ + { + char *ptr = strstr (uri, "backend="), *ptr2; + if (!ptr) { + ERROR("Invalid URI prefix (%s)\n", uri); + exit(1); + } + ptr += 8; + ptr2 = strchr(ptr, '&'); + if (ptr2) + *ptr2 = 0; + + backend = find_backend(ptr); + if (!backend) { + ERROR("Invalid backend (%s)\n", ptr); + exit(1); + } + if (ptr2) + *ptr2 = '&'; + } + + use_serno = strchr(uri, '='); + if (!use_serno || !*(use_serno+1)) { + ERROR("Invalid URI (%s)\n", uri); + exit(1); + } + use_serno++; + { + char *ptr = strchr(use_serno, '&'); + if (ptr) + *ptr = 0; + } + } else { + srand(getpid()); + jobid = rand(); + + /* Grab the filename */ + fname = argv[optind]; + + 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); + } + } + } + } + + /* 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 = 5; /* CUPS_BACKEND_CANCEL */ + goto done; + } + } + + /* Libusb setup */ + libusb_init(&ctx); + /* Enumerate devices */ + found = find_and_enumerate(ctx, &list, backend, use_serno, printer_type, 0); + + if (found == -1) { + ERROR("Printer open failure (No suitable printers found!)\n"); + ret = 4; /* CUPS_BACKEND_STOP */ + goto done; + } + + ret = libusb_open(list[found], &dev); + if (ret) { + ERROR("Printer open failure (Need to be root?) (%d)\n", ret); + goto done; + } + + claimed = libusb_kernel_driver_active(dev, iface); + if (claimed) { + ret = libusb_detach_kernel_driver(dev, iface); + if (ret) { + ERROR("Printer open failure (Could not detach printer from kernel)\n"); + goto done_close; + } + } + + ret = libusb_claim_interface(dev, iface); + if (ret) { + ERROR("Printer open failure (Could not claim printer interface)\n"); + goto done_close; + } + + ret = libusb_get_active_config_descriptor(list[found], &config); + if (ret) { + ERROR("Printer open failure (Could not fetch config descriptor)\n"); + goto done_close; + } + + 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) { + if (config->interface[0].altsetting[0].endpoint[i].bEndpointAddress & LIBUSB_ENDPOINT_IN) + endp_up = config->interface[0].altsetting[0].endpoint[i].bEndpointAddress; + else + endp_down = config->interface[0].altsetting[0].endpoint[i].bEndpointAddress; + } + } + + /* 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) + goto done_claimed; + } + + /* 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) { + ret = backend->early_parse(backend_ctx, data_fd); + if (ret < 0) + goto done_multiple; + } + + /* Read in data */ + if (backend->read_parse(backend_ctx, data_fd)) { + if (pages) + goto done_multiple; + else + goto done_claimed; + } + + INFO("Printing page %d\n", ++pages); + + ret = backend->main_loop(backend_ctx, copies); + if (ret) + goto done_claimed; + + /* Since we have no way of telling if there's more data remaining + to be read (without actually trying to read it), always assume + multiple print jobs. */ + goto newpage; + +done_multiple: + close(data_fd); + + /* Done printing */ + INFO("All printing done (%d pages * %d copies)\n", pages, copies); + ret = 0; + +done_claimed: + libusb_release_interface(dev, iface); + +done_close: +#if 0 + if (claimed) + libusb_attach_kernel_driver(dev, iface); +#endif + libusb_close(dev); +done: + + if (backend && backend_ctx) + backend->teardown(backend_ctx); + + if (list) + libusb_free_device_list(list, 1); + if (ctx) + libusb_exit(ctx); + + return ret; +} + diff --git a/src/cups/backend_common.h b/src/cups/backend_common.h new file mode 100644 index 0000000..286dedd --- /dev/null +++ b/src/cups/backend_common.h @@ -0,0 +1,153 @@ +/* + * CUPS Backend common code + * + * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org> + * + * The latest version of this program can be found at: + * + * http://git.shaftnet.org/cgit/selphy_print.git + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * [http://www.gnu.org/licenses/gpl-2.0.html] + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <signal.h> + +#include <libusb-1.0/libusb.h> +#include <arpa/inet.h> + +#ifndef __BACKEND_COMMON_H +#define __BACKEND_COMMON_H + +#define STR_LEN_MAX 64 +#define DEBUG( ... ) fprintf(stderr, "DEBUG: " __VA_ARGS__ ) +#define DEBUG2( ... ) fprintf(stderr, __VA_ARGS__ ) +#define INFO( ... ) fprintf(stderr, "INFO: " __VA_ARGS__ ) +#define WARNING( ... ) fprintf(stderr, "WARNING: " __VA_ARGS__ ) +#define ERROR( ... ) do { fprintf(stderr, "ERROR: " __VA_ARGS__ ); sleep(1); } while (0) + +#if (__BYTE_ORDER == __LITTLE_ENDIAN) +#define le32_to_cpu(__x) __x +#define le16_to_cpu(__x) __x +#define be16_to_cpu(__x) ntohs(__x) +#define be32_to_cpu(__x) ntohl(__x) +#else +#define le32_to_cpu(x) \ + ({ \ + uint32_t __x = (x); \ + ((uint32_t)( \ + (((uint32_t)(__x) & (uint32_t)0x000000ffUL) << 24) | \ + (((uint32_t)(__x) & (uint32_t)0x0000ff00UL) << 8) | \ + (((uint32_t)(__x) & (uint32_t)0x00ff0000UL) >> 8) | \ + (((uint32_t)(__x) & (uint32_t)0xff000000UL) >> 24) )); \ + }) +#define le16_to_cpu(x) \ + ({ \ + uint16_t __x = (x); \ + ((uint16_t)( \ + (((uint16_t)(__x) & (uint16_t)0x00ff) << 8) | \ + (((uint16_t)(__x) & (uint16_t)0xff00) >> 8) | \ + }) +#define be32_to_cpu(__x) __x +#define be16_to_cpu(__x) __x +#endif + +#define cpu_to_le16 le16_to_cpu +#define cpu_to_le32 le32_to_cpu +#define cpu_to_be16 be16_to_cpu +#define cpu_to_be32 be32_to_cpu + +/* To cheat the compiler */ +#define UNUSED(expr) do { (void)(expr); } while (0) + +/* To enumerate supported devices */ +enum { + P_ANY = 0, + P_ES1, + P_ES2_20, + P_ES3_30, + P_ES40_CP790, + P_ES40, + P_CP790, + P_CP_XXX, + P_CP10, + P_KODAK_6800, + P_KODAK_6850, + P_KODAK_1400_805, + P_KODAK_605, + P_SHINKO_S2145, + P_SONY_UPDR150, + P_MITSU_D70X, + P_DNP_DS40, + P_DNP_DS80, + P_END, +}; + +struct device_id { + uint16_t vid; + uint16_t pid; + int type; /* P_** */ + char *manuf_str; +}; + +/* Backend Functions */ +struct dyesub_backend { + char *name; + char *version; + char *uri_prefix; + void (*cmdline_usage)(void); + void *(*init)(void); + void (*attach)(void *ctx, struct libusb_device_handle *dev, + 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); + struct device_id devices[]; +}; + +/* Exported functions */ +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); + +/* Exported 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 dnpds40_backend; + +#endif /* __BACKEND_COMMON_H */ diff --git a/src/cups/blacklist b/src/cups/blacklist new file mode 100644 index 0000000..02e3ae7 --- /dev/null +++ b/src/cups/blacklist @@ -0,0 +1,136 @@ +# Gutenprint USB backend 'quirks' file. +# +# This file ensures that all printers handled by the Gutenprint CUPS backends +# are blacklisted by the default CUPS USB backend. +# +# Please note that this file requires CUPS 1.6.4 or 1.7-rc2 (or newer). +# + +# Canon CP-10 +0x04a9 0x304a blacklist + +# Canon CP-100 +0x04a9 0x3063 blacklist + +# Canon CP-200 +0x04a9 0x307c blacklist + +# Canon CP-220 +0x04a9 0x30bd blacklist + +# Canon CP-300 +0x04a9 0x307d blacklist + +# Canon CP-330 +0x04a9 0x30be blacklist + +# Canon SELPHY CP400 +0x04a9 0x30f6 blacklist + +# Canon SELPHY CP500 +0x04a9 0x30f5 blacklist + +# Canon SELPHY CP510 +0x04a9 0x3128 blacklist + +# Canon SELPHY CP520 +# ??? UNKNOWN + +# Canon SELPHY CP530 +0x04a9 0x31b1 blacklist + +# Canon SELPHY CP600 +0x04a9 0x310b blacklist + +# Canon SELPHY CP710 +0x04a9 0x3127 blacklist + +# Canon SELPHY CP720 +0x04a9 0x3143 blacklist + +# Canon SELPHY CP730 +0x04a9 0x3142 blacklist + +# Canon SELPHY CP740 +0x04a9 0x3171 blacklist + +# Canon SELPHY CP750 +0x04a9 0x3170 blacklist + +# Canon SELPHY CP760 +0x04a9 0x31ab blacklist + +# Canon SELPHY CP770 +0x04a9 0x31aa blacklist + +# Canon SELPHY CP780 +0x04a9 0x31dd blacklist + +# Canon SELPHY CP790 +0x04a9 0x31e7 blacklist + +# Canon SELPHY CP800 +0x04a9 0x3214 blacklist + +# Canon SELPHY CP810 +0x04a9 0x3256 blacklist + +# Canon SELPHY CP820 +# ??? UNKNOWN + +# Canon SELPHY CP900 +0x04a9 0x3255 blacklist + +# Canon SELPHY CP910 +# ??? UNKNOWN + +# Canon SELPHY ES1 +0x04a9 0x3141 blacklist + +# Canon SELPHY ES2 +0x04a9 0x3185 blacklist + +# Canon SELPHY ES20 +0x04a9 0x3186 blacklist + +# Canon SELPHY ES3 +0x04a9 0x31af blacklist + +# Canon SELPHY ES30 +0x04a9 0x31b0 blacklist + +# Canon SELPHY ES40 +0x04a9 0x31ee blacklist + +# Kodak 805 +0x040a 0x4034 blacklist + +# Kodak 1400 +0x040a 0x4022 blacklist + +# Kodak 6800 +0x040a 0x4021 blacklist + +# Kodak 6850 +0x040a 0x402b blacklist + +# Kodak 605 +0x040a 0x402e blacklist + +# Shinko CHC-S2145 (aka Sinfonia CS2) +0x10ce 0x000e blacklist + +# Sony UP-DR150 +0x054c 0x01e8 blacklist + +# Mitsubishi CP-D70/CP-D707 +0x06d3 0x3b30 blacklist + +# DNP DS40 + Citizen CX +0x1343 0x0003 blacklist + +# DNP DS80 + Citizen CX-W +0x1343 0x0004 blacklist + +# DNP DS-RX1 + Citizen CY +0x1343 0x0005 blacklist diff --git a/src/cups/dnpds40_print.c b/src/cups/dnpds40_print.c new file mode 100644 index 0000000..c3cc689 --- /dev/null +++ b/src/cups/dnpds40_print.c @@ -0,0 +1,1017 @@ +/* + * DNP DS40/DS80 Photo Printer CUPS backend -- libusb-1.0 version + * + * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org> + * + * Development of this backend was sponsored by: + * + * Marco Di Antonio and [ ilgruppodigitale.com ] + * + * The latest version of this program can be found at: + * + * http://git.shaftnet.org/cgit/selphy_print.git + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * [http://www.gnu.org/licenses/gpl-2.0.html] + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <signal.h> + +#include "backend_common.h" + +#define USB_VID_DNP 0x1343 +#define USB_PID_DNP_DS40 0x0003 // Also Citizen CX +#define USB_PID_DNP_DS80 0x0004 // Also Citizen CX-W +#define USB_PID_DNP_DSRX1 0x0005 // Also Citizen CY + +//#define USB_PID_CITIZEN_CW-01 XXXXX +//#define USB_PID_CITIZEN_OP900 XXXXX +//#define USB_PID_CITIZEN_CW-02 XXXXX +//#define USB_PID_CITIZEN_OP900II XXXXX +//#define USB_VID_MITSU 0x06D3 +//#define USB_PID_MITSU_CP3800DW XXXXX + +/* Private data stucture */ +struct dnpds40_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + + int type; + + int buf_needed; + uint32_t last_matte; + + uint8_t *qty_offset; + + uint8_t *databuf; + int datalen; +}; + +struct dnpds40_cmd { + uint8_t esc; /* Fixed at ascii ESC, aka 0x1B */ + uint8_t p; /* Fixed at ascii 'P' aka 0x50 */ + uint8_t arg1[6]; + uint8_t arg2[16]; + uint8_t arg3[8]; /* Decimal value of arg4's length, or empty */ + uint8_t arg4[0]; /* Extra payload if arg3 is non-empty + Doesn't have to be sent in the same URB */ + + /* All unused elements are set to 0x20 (ie ascii space) */ +}; + +#define min(__x, __y) ((__x) < (__y)) ? __x : __y + +static void dnpds40_build_cmd(struct dnpds40_cmd *cmd, char *arg1, char *arg2, uint32_t arg3_len) +{ + memset(cmd, 0x20, sizeof(*cmd)); + cmd->esc = 0x1b; + cmd->p = 0x50; + memcpy(cmd->arg1, arg1, min(strlen(arg1), sizeof(cmd->arg1))); + memcpy(cmd->arg2, arg2, min(strlen(arg2), sizeof(cmd->arg2))); + if (arg3_len) { + char buf[9]; + snprintf(buf, sizeof(buf), "%08u", arg3_len); + memcpy(cmd->arg3, buf, 8); + } + +} + +static void dnpds40_cleanup_string(char *start, int len) +{ + char *ptr = strchr(start, 0x0d); + + if (ptr && (ptr - start < len)) { + *ptr = 0x00; /* If there is a <CR>, terminate there */ + len = ptr - start; + } else { + start[--len] = 0x00; /* force null-termination */ + } + + /* Trim trailing spaces */ + while (len && start[len-1] == ' ') { + start[--len] = 0; + } +} + +static char *dnpds40_media_types(char *str) +{ + char tmp[4]; + int i; + + memcpy(tmp, str + 4, 3); + tmp[3] = 0; + + i = atoi(tmp); + + switch (i) { + case 200: return "5x3.5 (L)"; + case 210: return "5x7 (2L)"; + case 300: return "6x4 (PC)"; + case 310: return "6x8 (A5)"; + case 400: return "6x9 (A5W)"; + case 500: return "8x10"; + case 510: return "8x12"; + default: + break; + } + + return "Unknown type"; +} + +static char *dnpds40_statuses(char *str) +{ + char tmp[6]; + int i; + memcpy(tmp, str, 5); + tmp[5] = 0; + + i = atoi(tmp); + + switch (i) { + case 0: return "Idle"; + case 1: return "Printing"; + case 500: return "Cooling Print Head"; + case 510: return "Cooling Paper Motor"; + case 1000: return "Cover Open"; + case 1010: return "No Scrap Box"; + case 1100: return "Paper End"; + case 1200: return "Ribbon End"; + case 1300: return "Paper Jam"; + case 1400: return "Ribbon Error"; + case 1500: return "Paper Definition Error"; + case 1600: return "Data Error"; + case 2000: return "Head Voltage Error"; + case 2100: return "Head Position Error"; + case 2200: return "Power Supply Fan Error"; + case 2300: return "Cutter Error"; + case 2400: return "Pinch Roller Error"; + case 2500: return "Abnormal Head Temperature"; + case 2600: return "Abnormal Media Temperature"; + case 2610: return "Abnormal Paper Motor Temperature"; + case 2700: return "Ribbon Tension Error"; + case 2800: return "RF-ID Module Error"; + case 3000: return "System Error"; + default: + break; + } + + return "Unkown Error"; +} + +static int dnpds40_do_cmd(struct dnpds40_ctx *ctx, + struct dnpds40_cmd *cmd, + uint8_t *data, int len) +{ + int ret; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + (uint8_t*)cmd, sizeof(*cmd)))) + return ret; + + if (data && len) + if ((ret = send_data(ctx->dev, ctx->endp_down, + data, len))) + return ret; + + return 0; +} + +static uint8_t * dnpds40_resp_cmd(struct dnpds40_ctx *ctx, + struct dnpds40_cmd *cmd, + int *len) +{ + char tmp[9]; + uint8_t *respbuf; + + int ret, i, num = 0; + + memset(tmp, 0, sizeof(tmp)); + + if ((ret = dnpds40_do_cmd(ctx, cmd, NULL, 0))) + return NULL; + + /* Read in the response header */ + ret = read_data(ctx->dev, ctx->endp_up, + (uint8_t*)tmp, 8, &num); + if (ret < 0) + return NULL; + + if (num != 8) { + ERROR("Short read! (%d/%d)\n", num, 8); + return NULL; + } + + i = atoi(tmp); /* Length of payload in bytes, possibly padded */ + respbuf = malloc(i); + + /* Read in the actual response */ + ret = read_data(ctx->dev, ctx->endp_up, + respbuf, i, &num); + if (ret < 0) { + free(respbuf); + return NULL; + } + + if (num != i) { + ERROR("Short read! (%d/%d)\n", num, i); + free(respbuf); + return NULL; + } + + *len = num; + return respbuf; +} + +static int dnpds40_query_serno(struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, char *buf, int buf_len) +{ + struct dnpds40_cmd cmd; + uint8_t *resp; + int len = 0; + + struct dnpds40_ctx ctx = { + .dev = dev, + .endp_up = endp_up, + .endp_down = endp_down, + }; + + /* Get Serial Number */ + dnpds40_build_cmd(&cmd, "INFO", "SERIAL_NUMBER", 0); + + resp = dnpds40_resp_cmd(&ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + strncpy(buf, (char*)resp, buf_len); + buf[buf_len-1] = 0; + + free(resp); + + return 0; +} + +static void *dnpds40_init(void) +{ + struct dnpds40_ctx *ctx = malloc(sizeof(struct dnpds40_ctx)); + if (!ctx) + return NULL; + memset(ctx, 0, sizeof(struct dnpds40_ctx)); + + ctx->type = P_ANY; + + return ctx; +} + +static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +{ + struct dnpds40_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); + + /* Map out device type */ + if (desc.idProduct == USB_PID_DNP_DS40) + ctx->type = P_DNP_DS40; + else + ctx->type = P_DNP_DS80; + +} + +static void dnpds40_teardown(void *vctx) { + struct dnpds40_ctx *ctx = vctx; + + if (!ctx) + return; + + if (ctx->databuf) + free(ctx->databuf); + free(ctx); +} + +#define MAX_PRINTJOB_LEN (((2448*7536+1024+54))*3+1024) /* Worst-case */ + +static int dnpds40_read_parse(void *vctx, int data_fd) { + struct dnpds40_ctx *ctx = vctx; + int run = 1; + char buf[9] = { 0 }; + + uint32_t matte = 0, multicut = 0, dpi = 0; + + if (!ctx) + return 1; + + if (ctx->databuf) { + free(ctx->databuf); + ctx->databuf = NULL; + } + + /* There's no way to figure out the total job length in advance, we + have to parse the stream until we get to the image plane data, + and even then the stream can contain arbitrary commands later. + + So instead, we allocate a buffer of the maximum possible length, + then parse the incoming stream until we hit the START command at + the end of the job. + */ + + ctx->datalen = 0; + ctx->databuf = malloc(MAX_PRINTJOB_LEN); + if (!ctx->databuf) { + ERROR("Memory allocation failure!\n"); + return 2; + } + + while (run) { + int remain, i, j; + /* Read in command header */ + i = read(data_fd, ctx->databuf + ctx->datalen, + sizeof(struct dnpds40_cmd)); + if (i < 0) + return i; + if (i == 0) + break; + if (i < (int) sizeof(struct dnpds40_cmd)) + return 1; + + if (ctx->databuf[ctx->datalen + 0] != 0x1b || + ctx->databuf[ctx->datalen + 1] != 0x50) { + ERROR("Unrecognized header data format @%d!\n", ctx->datalen); + return 1; + } + + /* Parse out length of data chunk, if any */ + memcpy(buf, ctx->databuf + ctx->datalen + 24, 8); + j = atoi(buf); + + /* Read in data chunk as quickly as possible */ + remain = j; + while (remain > 0) { + i = read(data_fd, ctx->databuf + ctx->datalen + sizeof(struct dnpds40_cmd), + remain); + if (i < 0) + return i; + if (i == 0) + return 1; + ctx->datalen += i; + remain -= i; + } + ctx->datalen -= j; /* Back it off */ + + /* Check for some offsets */ + if(!memcmp("CNTRL QTY", ctx->databuf + ctx->datalen+2, 9)) { + ctx->qty_offset = ctx->databuf + ctx->datalen + 32; + } + if(!memcmp("CNTRL OVERCOAT", ctx->databuf + ctx->datalen+2, 14)) { + memcpy(buf, ctx->databuf + ctx->datalen + 32, 8); + matte = atoi(buf); + matte = le32_to_cpu(matte); + } + if(!memcmp("CNTRL MULTICUT", ctx->databuf + ctx->datalen+2, 14)) { + memcpy(buf, ctx->databuf + ctx->datalen + 32, 8); + multicut = atoi(buf); + multicut = le32_to_cpu(multicut); + } + if(!memcmp("IMAGE YPLANE", ctx->databuf + ctx->datalen + 2, 12)) { + uint32_t x_ppm; + memcpy(&x_ppm, ctx->databuf + ctx->datalen + 32 + 42, sizeof(x_ppm)); + x_ppm = le32_to_cpu(x_ppm); + + ctx->buf_needed = 1; + dpi = 300; + + if (x_ppm == 23615) { /* pixels per meter, aka 600dpi */ + dpi = 600; + if (ctx->type == P_DNP_DS80) { /* DS80/CX-W */ + if (matte && (multicut == 21 || // A4 length + multicut == 20 || // 8x4*3 + multicut == 19 || // 8x8+8x4 + multicut == 15 || // 8x6*2 + multicut == 7)) // 8x12 + ctx->buf_needed = 2; + } else { /* DS40/CX/CY/etc */ + if (multicut == 4 || // 6x8 + multicut == 5 || // 6x9 + multicut == 12) // 6x4*2 + ctx->buf_needed = 2; + else if (matte && multicut == 3) // 5x7 + ctx->buf_needed = 2; + } + + /* If we are missing a multicut command, + we can't parse this job so must assume + worst case size needing both buffers! */ + if (!multicut) + ctx->buf_needed = 2; + } + } + + /* This is the last block.. */ + if(!memcmp("CNTRL START", ctx->databuf + ctx->datalen + 2, 11)) + run = 0; + + /* Add in the size of this chunk */ + ctx->datalen += sizeof(struct dnpds40_cmd) + j; + } + + /* Special case: switching to matte or back needs both buffers */ + if (matte != ctx->last_matte) + ctx->buf_needed = 2; + + DEBUG("dpi %u matte %u(%u) mcut %u bufs %d\n", + dpi, matte, ctx->last_matte, multicut, ctx->buf_needed); + + /* Track if our last print was matte */ + ctx->last_matte = matte; + + if (!ctx->datalen) + return 1; + + return 0; +} + +static int dnpds40_main_loop(void *vctx, int copies) { + struct dnpds40_ctx *ctx = vctx; + int ret; + struct dnpds40_cmd cmd; + uint8_t *resp = NULL; + int len = 0; + + uint8_t *ptr; + char buf[9]; + + if (!ctx) + return 1; + + /* Parse job to figure out quantity offset. */ + if (copies > 1 && ctx->qty_offset) { + snprintf(buf, sizeof(buf), "%07d\r", copies); + memcpy(ctx->qty_offset, buf, 8); + + // XXX should we set/reset BUFFCNTRL? + // XXX should we verify we have sufficient media for prints? + } + +top: + + if (resp) free(resp); + + /* Query status */ + dnpds40_build_cmd(&cmd, "STATUS", "", 0); + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + dnpds40_cleanup_string((char*)resp, len); + + /* If we're not idle */ + if (strcmp("00000", (char*)resp)) { + if (!strcmp("00001", (char*)resp)) { + free(resp); + /* Query buffer state */ + dnpds40_build_cmd(&cmd, "INFO", "FREE_PBUFFER", 0); + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + dnpds40_cleanup_string((char*)resp, len); + + /* Check to see if we have sufficient buffers */ + if (!strcmp("FBP00", (char*)resp) || + (ctx->buf_needed == 1 && !strcmp("FBP01", (char*)resp))) { + INFO("Insufficient printer buffers, retrying...\n"); + sleep(1); + goto top; + } + } else if (!strcmp("00500", (char*)resp) || + !strcmp("00510", (char*)resp)) { + INFO("Printer cooling, retrying...\n"); + sleep(1); + goto top; + } + free(resp); + ERROR("Printer Status: %s\n", dnpds40_statuses((char*)resp)); + return 1; + } + + /* Send the stream over as individual data chunks */ + ptr = ctx->databuf; + + while(ptr && ptr < (ctx->databuf + ctx->datalen)) { + int i; + buf[8] = 0; + memcpy(buf, ptr + 24, 8); + i = atoi(buf) + 32; + + + if ((ret = send_data(ctx->dev, ctx->endp_down, + ptr, i))) + return ret; + + ptr += i; + } + + /* This printer handles copies internally */ + if (ctx->qty_offset) + copies = 1; + + /* Clean up */ + if (terminate) + copies = 1; + + INFO("Print complete (%d copies remaining)\n", copies - 1); + + if (copies && --copies) { + goto top; + } + + if (resp) free(resp); + + return 0; +} + +static int dnpds40_get_info(struct dnpds40_ctx *ctx) +{ + struct dnpds40_cmd cmd; + uint8_t *resp; + int len = 0; + + /* Get Serial Number */ + dnpds40_build_cmd(&cmd, "INFO", "SERIAL_NUMBER", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Serial Number: '%s'\n", (char*)resp); + + free(resp); + + /* Get Firmware Version */ + dnpds40_build_cmd(&cmd, "INFO", "FVER", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Firmware Version: '%s'\n", (char*)resp); + + free(resp); + + /* Get Sensor Info */ + dnpds40_build_cmd(&cmd, "INFO", "SENSOR", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Sensor Info: '%s'\n", (char*)resp); + // XXX parse this out. Each token is 'XXX-###' delimited by '; ' + + free(resp); + + /* Get Qty of prints made on this media? */ + dnpds40_build_cmd(&cmd, "INFO", "PQTY", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Prints Performed(?): '%s'\n", (char*)resp + 4); + + free(resp); + + /* Get Horizonal resolution */ + dnpds40_build_cmd(&cmd, "INFO", "RESOLUTION_H", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Horizontal Resolution: '%s' dpi\n", (char*)resp + 3); + + free(resp); + + /* Get Vertical resolution */ + dnpds40_build_cmd(&cmd, "INFO", "RESOLUTION_V", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Vertical Resolution: '%s' dpi\n", (char*)resp + 3); + + free(resp); + + /* Get Media Color offset */ + dnpds40_build_cmd(&cmd, "INFO", "MCOLOR", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Media Color Offset: '%02x%02x%02x%02x'\n", *(resp+2), *(resp+3), + *(resp+4), *(resp+5)); + + free(resp); + + /* Get Media Lot */ + dnpds40_build_cmd(&cmd, "INFO", "MLOT", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Media Lot Code: '%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x'\n", + *(resp+2), *(resp+3), *(resp+4), *(resp+5), *(resp+6), *(resp+7), + *(resp+8), *(resp+9), *(resp+10), *(resp+11), *(resp+12), *(resp+13)); + + free(resp); + + /* Get Media ID Set (?) */ + dnpds40_build_cmd(&cmd, "MNT_RD", "MEDIA_ID_SET", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Media ID(?): '%s'\n", (char*)resp+4); + + free(resp); + + /* Get Color Control Data Version */ + dnpds40_build_cmd(&cmd, "TBL_RD", "Version", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Color Data Version: '%s'\n", (char*)resp); + + free(resp); + + /* Get Color Control Data Checksum */ + dnpds40_build_cmd(&cmd, "MNT_RD", "CTRLD_CHKSUM", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Color Data Checksum: '%s'\n", (char*)resp); + + free(resp); + + + return 0; +} + +static int dnpds40_get_status(struct dnpds40_ctx *ctx) +{ + struct dnpds40_cmd cmd; + uint8_t *resp; + int len = 0; + + /* Generate command */ + dnpds40_build_cmd(&cmd, "STATUS", "", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Printer Status: %s => %s\n", (char*)resp, dnpds40_statuses((char*)resp)); + + free(resp); + + /* Generate command */ + dnpds40_build_cmd(&cmd, "INFO", "FREE_PBUFFER", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Free Buffers: '%s'\n", (char*)resp + 3); + + free(resp); + + /* Get Media Info */ + dnpds40_build_cmd(&cmd, "INFO", "MEDIA", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Media Type: '%s'\n", dnpds40_media_types((char*)resp)); + +#if 0 + switch (*(resp+3)) { + case '1': + INFO(" Stickier paper\n"); + break; + case '0': + INFO(" Standard paper\n"); + break; + default: + INFO(" Unknown paper(%c)\n", *(resp+4)); + break; + } + switch (*(resp+6)) { + case '1': + INFO(" With mark\n"); + break; + case '0': + INFO(" Without mark\n"); + break; + default: + INFO(" Unknown mark(%c)\n", *(resp+7)); + break; + } +#endif + + free(resp); + + /* Get Media remaining */ + dnpds40_build_cmd(&cmd, "INFO", "MQTY", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Prints Remaining: '%s'\n", (char*)resp + 4); + + free(resp); + + return 0; +} + +static int dnpds40_get_counters(struct dnpds40_ctx *ctx) +{ + struct dnpds40_cmd cmd; + uint8_t *resp; + int len = 0; + + /* Generate command */ + dnpds40_build_cmd(&cmd, "MNT_RD", "COUNTER_LIFE", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Lifetime Counter: '%s'\n", (char*)resp+2); + + free(resp); + + /* Generate command */ + dnpds40_build_cmd(&cmd, "MNT_RD", "COUNTER_A", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("A Counter: '%s'\n", (char*)resp+2); + + free(resp); + + /* Generate command */ + dnpds40_build_cmd(&cmd, "MNT_RD", "COUNTER_B", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("B Counter: '%s'\n", (char*)resp+2); + + free(resp); + + /* Generate command */ + dnpds40_build_cmd(&cmd, "MNT_RD", "COUNTER_P", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("P Counter: '%s'\n", (char*)resp+2); + + free(resp); + + /* Generate command */ + dnpds40_build_cmd(&cmd, "MNT_RD", "COUNTER_M", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("M Counter: '%s'\n", (char*)resp+2); + + free(resp); + + /* Generate command */ + dnpds40_build_cmd(&cmd, "MNT_RD", "COUNTER_MATTE", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return -1; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Matte Counter: '%s'\n", (char*)resp+4); + + free(resp); + + return 0; +} + +static int dnpds40_clear_counter(struct dnpds40_ctx *ctx, char counter) +{ + struct dnpds40_cmd cmd; + char msg[4]; + int ret; + + /* Generate command */ + dnpds40_build_cmd(&cmd, "MNT_WT", "COUNTER_CLEAR", 4); + msg[0] = 'C'; + msg[1] = counter; + msg[2] = 0x0d; /* ie carriage return, ASCII '\r' */ + msg[3] = 0x00; + + if ((ret = dnpds40_do_cmd(ctx, &cmd, (uint8_t*)msg, 4))) + return ret; + + return 0; +} + +static int dnpds40_set_counter_p(struct dnpds40_ctx *ctx, char *arg) +{ + struct dnpds40_cmd cmd; + char msg[9]; + int i = atoi(arg); + int ret; + + /* Generate command */ + dnpds40_build_cmd(&cmd, "MNT_WT", "COUNTERP_SET", 8); + snprintf(msg, sizeof(msg), "%08d", i); + + if ((ret = dnpds40_do_cmd(ctx, &cmd, (uint8_t*)msg, 8))) + return ret; + + return 0; +} + +static void dnpds40_cmdline(void) +{ + DEBUG("\t\t[ -i ] # Query printer info\n"); + DEBUG("\t\t[ -s ] # Query status\n"); + DEBUG("\t\t[ -n ] # Query counters\n"); + DEBUG("\t\t[ -N A|B|M ] # Clear counter A/B/M\n"); + DEBUG("\t\t[ -p num ] # Set counter P\n"); + +} + +static int dnpds40_cmdline_arg(void *vctx, int argc, char **argv) +{ + struct dnpds40_ctx *ctx = vctx; + int i, j = 0; + + /* Reset arg parsing */ + optind = 1; + opterr = 0; + while ((i = getopt(argc, argv, "inN:p:s")) >= 0) { + switch(i) { + case 'i': + if (ctx) { + j = dnpds40_get_info(ctx); + break; + } + return 1; + case 'n': + if (ctx) { + j = dnpds40_get_counters(ctx); + break; + } + return 1; + case 'N': + if (optarg[0] != 'A' && + optarg[0] != 'B' && + optarg[0] != 'M') + return -1; + if (ctx) { + j = dnpds40_clear_counter(ctx, optarg[0]); + break; + } + return 1; + case 'p': + if (ctx) { + j = dnpds40_set_counter_p(ctx, optarg); + break; + } + return 1; + case 's': + if (ctx) { + j = dnpds40_get_status(ctx); + break; + } + return 1; + default: + break; /* Ignore completely */ + } + + if (j) return j; + } + + return 0; +} + +/* Exported */ +struct dyesub_backend dnpds40_backend = { + .name = "DNP DS40/DS80/DSRX1", + .version = "0.29", + .uri_prefix = "dnpds40", + .cmdline_usage = dnpds40_cmdline, + .cmdline_arg = dnpds40_cmdline_arg, + .init = dnpds40_init, + .attach = dnpds40_attach, + .teardown = dnpds40_teardown, + .read_parse = dnpds40_read_parse, + .main_loop = dnpds40_main_loop, + .query_serno = dnpds40_query_serno, + .devices = { + { USB_VID_DNP, USB_PID_DNP_DS40, P_DNP_DS40, ""}, + { USB_VID_DNP, USB_PID_DNP_DS80, P_DNP_DS80, ""}, + { USB_VID_DNP, USB_PID_DNP_DSRX1, P_DNP_DS40, ""}, +// { USB_VID_CITIZEN, USB_PID_CITIZEN_CW-02, P_DNP_DS40, ""}, +// { USB_VID_CITIZEN, USB_PID_CITIZEN_OP900II, P_DNP_DS40, ""}, +// { USB_VID_CITIZEN, USB_PID_CITIZEN_CW-01, P_DNP_DS40, ""}, +// { USB_VID_CITIZEN, USB_PID_CITIZEN_OP900, P_DNP_DS40, ""}, +// { USB_VID_MITSU, USB_PID_MITSU_CP38000W, P_DNP_DS80, ""}, + { 0, 0, 0, ""} + } +}; diff --git a/src/cups/genppd.c b/src/cups/genppd.c index f2dded8..7b55c13 100644 --- a/src/cups/genppd.c +++ b/src/cups/genppd.c @@ -1,5 +1,5 @@ /* - * "$Id: genppd.c,v 1.192 2012/03/25 17:54:32 rlk Exp $" + * "$Id: genppd.c,v 1.196 2014/02/13 02:30:27 rlk Exp $" * * PPD file generation program for the CUPS drivers. * @@ -40,6 +40,8 @@ * Include necessary headers... */ +#pragma GCC diagnostic ignored "-Wformat-nonliteral" + #ifdef HAVE_CONFIG_H #include <config.h> #endif @@ -55,27 +57,25 @@ #include <ctype.h> #include <errno.h> #include <libgen.h> +#if defined(HAVE_VARARGS_H) && !defined(HAVE_STDARG_H) +#include <varargs.h> +#else +#include <stdarg.h> +#endif #ifdef CUPS_DRIVER_INTERFACE # ifdef HAVE_LIBZ # undef HAVE_LIBZ # endif /* HAVE_LIBZ */ #endif /* CUPS_DRIVER_INTERFACE */ - -static const char *cups_modeldir = CUPS_MODELDIR; - #ifdef HAVE_LIBZ #include <zlib.h> -static const char *gzext = ".gz"; -#else -static const char *gzext = ""; -# define gzopen fopen -# define gzclose fclose -# define gzFile FILE * -# define gzprintf fprintf -# define gzputs(f,s) fputs((s),(f)) +static int use_compression = 1; #endif +static const char *cups_modeldir = CUPS_MODELDIR; +static const char *gpext = ""; + #include <cups/cups.h> #include <cups/raster.h> @@ -165,6 +165,17 @@ const char *parameter_level_names[] = _("Extra 5") }; +#ifdef HAVE_LIBZ +typedef union +{ + gzFile gzf; + FILE *f; +} _gpfile; + +typedef _gpfile *gpFile; +#else +#define gpFile FILE * +#endif /* * Local functions... @@ -184,18 +195,22 @@ static void help(void); static void printlangs(char** langs); static void printmodels(int verbose); static void usage(void); +static gpFile gpopen(const char *path, const char *mode); +static int gpclose(gpFile f); #endif /* !CUPS_DRIVER_INTERFACE */ +static int gpputs(gpFile f, const char *s); +static int gpprintf(gpFile f, const char *format, ...); static char **getlangs(void); static int is_special_option(const char *name); -static void print_group_close(gzFile fp, stp_parameter_class_t p_class, +static void print_group_close(gpFile fp, stp_parameter_class_t p_class, stp_parameter_level_t p_level, const char *language, const stp_string_list_t *po); -static void print_group_open(gzFile fp, stp_parameter_class_t p_class, +static void print_group_open(gpFile fp, stp_parameter_class_t p_class, stp_parameter_level_t p_level, const char *language, const stp_string_list_t *po); -static int write_ppd(gzFile fp, const stp_printer_t *p, +static int write_ppd(gpFile fp, const stp_printer_t *p, const char *language, const char *ppd_location, ppd_type_t ppd_type, const char *filename); @@ -357,7 +372,7 @@ cat_ppd(const char *uri) /* I - Driver URI */ cups_modeldir, cups_modeldir[strlen(cups_modeldir) - 1] == '/' ? "" : "/", lang ? lang : "C", - filename, gzext); + filename, gpext); return (write_ppd(stdout, p, lang, ppd_location, ppd_type, filename)); } @@ -459,7 +474,7 @@ main(int argc, /* I - Number of command-line arguments */ for (;;) { - if ((i = getopt(argc, argv, "23hvqc:p:l:LMVd:saNCb")) == -1) + if ((i = getopt(argc, argv, "23hvqc:p:l:LMVd:saNCbZz")) == -1) break; switch (i) @@ -533,12 +548,26 @@ main(int argc, /* I - Number of command-line arguments */ case 'b': use_base_version = 1; break; + case 'z': +#ifdef HAVE_LIBZ + use_compression = 1; +#endif + break; + case 'Z': +#ifdef HAVE_LIBZ + use_compression = 0; +#endif + break; default: usage(); exit(EXIT_FAILURE); break; } } + if (use_compression) + gpext = ".gz"; + else + gpext = ""; if (optind < argc) { int n, numargs; numargs = argc-optind; @@ -653,11 +682,12 @@ generate_ppd( ppd_type_t ppd_type) /* I - full, simplified, no color */ { int status; /* Exit status */ - gzFile fp; /* File to write to */ + gpFile fp; /* File to write to */ char filename[1024], /* Filename */ ppd_location[1024]; /* Installed location */ struct stat dir; /* Prefix dir status */ const char *ppd_infix; + static int ppd_counter = 0; /* Notification counter */ /* * Skip the PostScript drivers... @@ -706,13 +736,13 @@ generate_ppd( snprintf(filename, sizeof(filename) - 1, "%s/stp-%s.%s%s%s%s", prefix, stp_printer_get_driver(p), GUTENPRINT_RELEASE_VERSION, - ppd_infix, ppdext, gzext); + ppd_infix, ppdext, gpext); /* * Open the PPD file... */ - if ((fp = gzopen(filename, "wb")) == NULL) + if ((fp = gpopen(filename, "wb")) == NULL) { fprintf(stderr, "cups-genppd: Unable to create file \"%s\" - %s.\n", filename, strerror(errno)); @@ -721,7 +751,7 @@ generate_ppd( if (verbose) fprintf(stderr, "Writing %s...\n", filename); - else + else if ((ppd_counter++ % 50) == 0) fprintf(stderr, "."); snprintf(ppd_location, sizeof(ppd_location), "%s%s%s/%s", @@ -737,7 +767,7 @@ generate_ppd( status = write_ppd(fp, p, language, ppd_location, ppd_type, basename(filename)); - gzclose(fp); + gpclose(fp); return (status); } @@ -761,13 +791,19 @@ help(void) " -V Show version information and defaults.\n" " The default is to output PPDs.\n"); puts("Options:\n" + " -N Localize numbers.\n" " -l locale Output PPDs translated with messages for locale.\n" " -p prefix Output PPDs in directory prefix.\n" " -d prefix Embed directory prefix in PPD file.\n" " -s Generate simplified PPD files.\n" " -a Generate all (simplified and full) PPD files.\n" " -q Quiet mode.\n" - " -v Verbose mode.\n" + " -v Verbose mode.\n"); + puts( +#ifdef HAVE_LIBZ + " -z Compress PPD files.\n" + " -Z Don't compress PPD files.\n" +#endif "models:\n" " A list of printer models, either the driver or quoted full name.\n"); } @@ -834,8 +870,102 @@ printmodels(int verbose) /* I - Verbosity level */ exit(EXIT_SUCCESS); } +static gpFile +gpopen(const char *path, const char *mode) +{ +#ifdef HAVE_LIBZ + gpFile f = stp_malloc(sizeof(_gpfile)); + if (use_compression) + { + f->gzf = gzopen(path, mode); + if (!f->gzf) + { + stp_free(f); + return NULL; + } + return f; + } + else +#endif + { + FILE *fl = fopen(path, mode); +#ifdef HAVE_LIBZ + if (fl) + { + f->f = fl; + return f; + } + else + { + stp_free(f); + return NULL; + } +#else + return fl; +#endif + } +} + +static int +gpclose(gpFile f) +{ + int status; +#ifdef HAVE_LIBZ + if (use_compression) + status = gzclose(f->gzf); + else + status = fclose(f->f); + stp_free(f); +#else + status = fclose(f); +#endif + return status; +} + #endif /* !CUPS_DRIVER_INTERFACE */ +static int +gpputs(gpFile f, const char *s) +{ +#ifdef HAVE_LIBZ + if (use_compression) + return gzputs(f->gzf, s); + else + return fputs(s, f->f); +#else + return fputs(s, f); +#endif +} + +static int +gpprintf(gpFile f, const char *format, ...) +{ + int status; + int current_allocation = 64; + char *result = stp_malloc(current_allocation); + while (1) + { + int bytes; + va_list args; + va_start(args, format); + bytes = vsnprintf(result, current_allocation, format, args); + va_end(args); + if (bytes >= 0 && bytes < current_allocation) + break; + else + { + stp_free(result); + if (bytes < 0) + current_allocation *= 2; + else + current_allocation = bytes + 1; + result = stp_malloc(current_allocation); + } + } + status = gpputs(f, result); + stp_free(result); + return status; +} /* * 'getlangs()' - Get a list of available translations. @@ -921,7 +1051,7 @@ bytelen(const char *buffer) #define PPD_MAX_SHORT_NICKNAME (31) static void -print_ppd_header(gzFile fp, ppd_type_t ppd_type, int model, const char *driver, +print_ppd_header(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, @@ -932,36 +1062,36 @@ print_ppd_header(gzFile fp, ppd_type_t ppd_type, int model, const char *driver, /* * Write a standard header... */ - gzputs(fp, "*PPD-Adobe: \"4.3\"\n"); - gzputs(fp, "*% PPD file for CUPS/Gutenprint.\n"); - gzputs(fp, "*% Copyright 1993-2008 by Mike Sweet and Robert Krawitz.\n"); - gzputs(fp, "*% This program is free software; you can redistribute it and/or\n"); - gzputs(fp, "*% modify it under the terms of the GNU General Public License,\n"); - gzputs(fp, "*% version 2, as published by the Free Software Foundation.\n"); - gzputs(fp, "*%\n"); - gzputs(fp, "*% This program is distributed in the hope that it will be useful, but\n"); - gzputs(fp, "*% WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n"); - gzputs(fp, "*% or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License\n"); - gzputs(fp, "*% for more details.\n"); - gzputs(fp, "*%\n"); - gzputs(fp, "*% You should have received a copy of the GNU General Public License\n"); - gzputs(fp, "*% along with this program; if not, write to the Free Software\n"); - gzputs(fp, "*% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"); - gzputs(fp, "*%\n"); - gzputs(fp, "*FormatVersion: \"4.3\"\n"); + gpputs(fp, "*PPD-Adobe: \"4.3\"\n"); + gpputs(fp, "*% PPD file for CUPS/Gutenprint.\n"); + gpputs(fp, "*% Copyright 1993-2008 by Mike Sweet and Robert Krawitz.\n"); + gpputs(fp, "*% This program is free software; you can redistribute it and/or\n"); + gpputs(fp, "*% modify it under the terms of the GNU General Public License,\n"); + gpputs(fp, "*% version 2, as published by the Free Software Foundation.\n"); + gpputs(fp, "*%\n"); + gpputs(fp, "*% This program is distributed in the hope that it will be useful, but\n"); + gpputs(fp, "*% WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n"); + gpputs(fp, "*% or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License\n"); + gpputs(fp, "*% for more details.\n"); + gpputs(fp, "*%\n"); + gpputs(fp, "*% You should have received a copy of the GNU General Public License\n"); + gpputs(fp, "*% along with this program; if not, write to the Free Software\n"); + gpputs(fp, "*% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"); + gpputs(fp, "*%\n"); + gpputs(fp, "*FormatVersion: \"4.3\"\n"); if (use_base_version) - gzputs(fp, "*FileVersion: \"" BASE_VERSION "\"\n"); + gpputs(fp, "*FileVersion: \"" BASE_VERSION "\"\n"); else - gzputs(fp, "*FileVersion: \"" VERSION "\"\n"); + gpputs(fp, "*FileVersion: \"" VERSION "\"\n"); /* Specify language of PPD translation */ /* TRANSLATORS: Specify the language of the PPD translation. * Use the English name of your language here, e.g. "Swedish" instead of * "Svenska". */ - gzprintf(fp, "*LanguageVersion: %s\n", _("English")); + gpprintf(fp, "*LanguageVersion: %s\n", _("English")); if (language) - gzputs(fp, "*LanguageEncoding: UTF-8\n"); + gpputs(fp, "*LanguageEncoding: UTF-8\n"); else - gzputs(fp, "*LanguageEncoding: ISOLatin1\n"); + gpputs(fp, "*LanguageEncoding: ISOLatin1\n"); /* * Strictly speaking, the PCFileName attribute should be a 12 character * max (12345678.ppd) filename, as a requirement of the old PPD spec. @@ -969,10 +1099,10 @@ print_ppd_header(gzFile fp, ppd_type_t ppd_type, int model, const char *driver, * the driver name, and makes the filename all UPPERCASE as well... */ - gzprintf(fp, "*PCFileName: \"STP%05d.PPD\"\n", + gpprintf(fp, "*PCFileName: \"STP%05d.PPD\"\n", stp_get_printer_index_by_driver(driver) + ((int) ppd_type * stp_printer_model_count())); - gzprintf(fp, "*Manufacturer: \"%s\"\n", manufacturer); + gpprintf(fp, "*Manufacturer: \"%s\"\n", manufacturer); /* * The Product attribute specifies the string returned by the PostScript @@ -983,36 +1113,36 @@ print_ppd_header(gzFile fp, ppd_type_t ppd_type, int model, const char *driver, * CUPS-based drivers. (This is a change from Gutenprint 5.0 and earlier) */ - gzprintf(fp, "*Product: \"(%s)\"\n", long_name); + gpprintf(fp, "*Product: \"(%s)\"\n", long_name); /* * The ModelName attribute now provides the long name rather than the * short driver name... The rastertoprinter driver looks up both... */ - gzprintf(fp, "*ModelName: \"%s\"\n", long_name); + gpprintf(fp, "*ModelName: \"%s\"\n", long_name); strncpy(short_long_name, long_name, PPD_MAX_SHORT_NICKNAME); short_long_name[PPD_MAX_SHORT_NICKNAME] = '\0'; - gzprintf(fp, "*ShortNickName: \"%s\"\n", short_long_name); + gpprintf(fp, "*ShortNickName: \"%s\"\n", short_long_name); /* * NOTE - code in rastertoprinter looks for this version string. * If this is changed, the corresponding change must be made in * rastertoprinter.c. Look for "ppd->nickname" */ - gzprintf(fp, "*NickName: \"%s%s%s%s\"\n", + gpprintf(fp, "*NickName: \"%s%s%s%s\"\n", long_name, CUPS_PPD_NICKNAME_STRING, VERSION, (ppd_type == PPD_SIMPLIFIED ? " Simplified" : ppd_type == PPD_NO_COLOR_OPTS ? " No Color Options" : "")); if (cups_ppd_ps_level == 2) - gzputs(fp, "*PSVersion: \"(2017.000) 550\"\n"); + gpputs(fp, "*PSVersion: \"(2017.000) 550\"\n"); else - gzputs(fp, "*PSVersion: \"(3010.000) 0\"\n"); - gzprintf(fp, "*LanguageLevel: \"%d\"\n", cups_ppd_ps_level); + gpputs(fp, "*PSVersion: \"(3010.000) 0\"\n"); + gpprintf(fp, "*LanguageLevel: \"%d\"\n", cups_ppd_ps_level); } static void -print_ppd_header_3(gzFile fp, ppd_type_t ppd_type, int model, const char *driver, +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, @@ -1020,17 +1150,17 @@ print_ppd_header_3(gzFile fp, ppd_type_t ppd_type, int model, const char *driver char **all_langs) { int i; - gzputs(fp, "*FileSystem: False\n"); - gzputs(fp, "*LandscapeOrientation: Plus90\n"); - gzputs(fp, "*TTRasterizer: Type42\n"); + gpputs(fp, "*FileSystem: False\n"); + gpputs(fp, "*LandscapeOrientation: Plus90\n"); + gpputs(fp, "*TTRasterizer: Type42\n"); - gzputs(fp, "*cupsVersion: 1.2\n"); - gzputs(fp, "*cupsManualCopies: True\n"); - gzprintf(fp, "*cupsFilter: \"application/vnd.cups-raster 100 rastertogutenprint.%s\"\n", GUTENPRINT_RELEASE_VERSION); + 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) - gzputs(fp, "*cupsFilter: \"application/vnd.cups-command 33 commandtoepson\"\n"); + gpputs(fp, "*cupsFilter: \"application/vnd.cups-command 33 commandtoepson\"\n"); if (device_id) - gzprintf(fp, "*1284DeviceID: \"%s\"\n", device_id); + gpprintf(fp, "*1284DeviceID: \"%s\"\n", device_id); if (!language) { /* @@ -1044,31 +1174,31 @@ print_ppd_header_3(gzFile fp, ppd_type_t ppd_type, int model, const char *driver if (!strcmp(all_langs[i], "C") || !strcmp(all_langs[i], "en")) continue; - gzprintf(fp, "%s%s", prefix, all_langs[i]); + gpprintf(fp, "%s%s", prefix, all_langs[i]); prefix = " "; } if (!strcmp(prefix, " ")) - gzputs(fp, "\"\n"); + gpputs(fp, "\"\n"); } } static void -print_ppd_header_2(gzFile fp, ppd_type_t ppd_type, int model, const char *driver, +print_ppd_header_2(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) { - gzprintf(fp, "*StpDriverName: \"%s\"\n", driver); - gzprintf(fp, "*StpDriverModelFamily: \"%d_%s\"\n", model, family); - gzprintf(fp, "*StpPPDLocation: \"%s\"\n", ppd_location); - gzprintf(fp, "*StpLocale: \"%s\"\n", language ? language : "C"); + gpprintf(fp, "*StpDriverName: \"%s\"\n", driver); + gpprintf(fp, "*StpDriverModelFamily: \"%d_%s\"\n", model, family); + gpprintf(fp, "*StpPPDLocation: \"%s\"\n", ppd_location); + gpprintf(fp, "*StpLocale: \"%s\"\n", language ? language : "C"); } static void -print_page_sizes(gzFile fp, stp_vars_t *v, int simplified, +print_page_sizes(gpFile fp, stp_vars_t *v, int simplified, const stp_string_list_t *po) { int variable_sizes = 0; @@ -1149,62 +1279,62 @@ print_page_sizes(gzFile fp, stp_vars_t *v, int simplified, * applications still look for it to provide custom page size support. */ - gzprintf(fp, "*VariablePaperSize: %s\n\n", variable_sizes ? "true" : "false"); + gpprintf(fp, "*VariablePaperSize: %s\n\n", variable_sizes ? "true" : "false"); if (stp_parameter_has_category_value(v, &desc, "Color", "Yes")) - gzputs(fp, "*ColorKeyWords: \"PageSize\"\n"); - gzprintf(fp, "*OpenUI *PageSize/%s: PickOne\n", _("Media Size")); - gzputs(fp, "*OPOptionHints PageSize: \"dropdown\"\n"); - gzputs(fp, "*OrderDependency: 10 AnySetup *PageSize\n"); - gzprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", + gpputs(fp, "*ColorKeyWords: \"PageSize\"\n"); + gpprintf(fp, "*OpenUI *PageSize/%s: PickOne\n", _("Media Size")); + gpputs(fp, "*OPOptionHints PageSize: \"dropdown\"\n"); + gpputs(fp, "*OrderDependency: 10 AnySetup *PageSize\n"); + gpprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", desc.name, desc.p_type, desc.is_mandatory, desc.p_class, desc.p_level, desc.channel, 0.0, 0.0, 0.0); - gzprintf(fp, "*DefaultPageSize: %s\n", desc.deflt.str); - gzprintf(fp, "*StpDefaultPageSize: %s\n", desc.deflt.str); + gpprintf(fp, "*DefaultPageSize: %s\n", desc.deflt.str); + gpprintf(fp, "*StpDefaultPageSize: %s\n", desc.deflt.str); for (i = 0; i < cur_opt; i ++) { - gzprintf(fp, "*PageSize %s", the_papers[i].name); - gzprintf(fp, "/%s:\t\"<</PageSize[%d %d]/ImagingBBox null>>setpagedevice\"\n", + gpprintf(fp, "*PageSize %s", the_papers[i].name); + gpprintf(fp, "/%s:\t\"<</PageSize[%d %d]/ImagingBBox null>>setpagedevice\"\n", the_papers[i].text, the_papers[i].width, the_papers[i].height); } - gzputs(fp, "*CloseUI: *PageSize\n\n"); + gpputs(fp, "*CloseUI: *PageSize\n\n"); if (stp_parameter_has_category_value(v, &desc, "Color", "Yes")) - gzputs(fp, "*ColorKeyWords: \"PageRegion\"\n"); - gzprintf(fp, "*OpenUI *PageRegion/%s: PickOne\n", _("Media Size")); - gzputs(fp, "*OPOptionHints PageRegion: \"dropdown\"\n"); - gzputs(fp, "*OrderDependency: 10 AnySetup *PageRegion\n"); - gzprintf(fp, "*DefaultPageRegion: %s\n", desc.deflt.str); - gzprintf(fp, "*StpDefaultPageRegion: %s\n", desc.deflt.str); + gpputs(fp, "*ColorKeyWords: \"PageRegion\"\n"); + gpprintf(fp, "*OpenUI *PageRegion/%s: PickOne\n", _("Media Size")); + gpputs(fp, "*OPOptionHints PageRegion: \"dropdown\"\n"); + gpputs(fp, "*OrderDependency: 10 AnySetup *PageRegion\n"); + gpprintf(fp, "*DefaultPageRegion: %s\n", desc.deflt.str); + gpprintf(fp, "*StpDefaultPageRegion: %s\n", desc.deflt.str); for (i = 0; i < cur_opt; i ++) { - gzprintf(fp, "*PageRegion %s", the_papers[i].name); - gzprintf(fp, "/%s:\t\"<</PageSize[%d %d]/ImagingBBox null>>setpagedevice\"\n", + gpprintf(fp, "*PageRegion %s", the_papers[i].name); + gpprintf(fp, "/%s:\t\"<</PageSize[%d %d]/ImagingBBox null>>setpagedevice\"\n", the_papers[i].text, the_papers[i].width, the_papers[i].height); } - gzputs(fp, "*CloseUI: *PageRegion\n\n"); + gpputs(fp, "*CloseUI: *PageRegion\n\n"); - gzprintf(fp, "*DefaultImageableArea: %s\n", desc.deflt.str); - gzprintf(fp, "*StpDefaultImageableArea: %s\n", desc.deflt.str); + gpprintf(fp, "*DefaultImageableArea: %s\n", desc.deflt.str); + gpprintf(fp, "*StpDefaultImageableArea: %s\n", desc.deflt.str); for (i = 0; i < cur_opt; i ++) { - gzprintf(fp, "*ImageableArea %s", the_papers[i].name); - gzprintf(fp, "/%s:\t\"%d %d %d %d\"\n", the_papers[i].text, + gpprintf(fp, "*ImageableArea %s", the_papers[i].name); + gpprintf(fp, "/%s:\t\"%d %d %d %d\"\n", the_papers[i].text, the_papers[i].left, the_papers[i].bottom, the_papers[i].right, the_papers[i].top); } - gzputs(fp, "\n"); + gpputs(fp, "\n"); - gzprintf(fp, "*DefaultPaperDimension: %s\n", desc.deflt.str); - gzprintf(fp, "*StpDefaultPaperDimension: %s\n", desc.deflt.str); + gpprintf(fp, "*DefaultPaperDimension: %s\n", desc.deflt.str); + gpprintf(fp, "*StpDefaultPaperDimension: %s\n", desc.deflt.str); for (i = 0; i < cur_opt; i ++) { - gzprintf(fp, "*PaperDimension %s", the_papers[i].name); - gzprintf(fp, "/%s:\t\"%d %d\"\n", + gpprintf(fp, "*PaperDimension %s", the_papers[i].name); + gpprintf(fp, "/%s:\t\"%d %d\"\n", the_papers[i].text, the_papers[i].width, the_papers[i].height); } - gzputs(fp, "\n"); + gpputs(fp, "\n"); if (variable_sizes) { @@ -1221,18 +1351,18 @@ print_page_sizes(gzFile fp, stp_vars_t *v, int simplified, if (right > width) width = right; - gzprintf(fp, "*MaxMediaWidth: \"%d\"\n", max_width); - gzprintf(fp, "*MaxMediaHeight: \"%d\"\n", max_height); - gzprintf(fp, "*HWMargins: %d %d %d %d\n", + gpprintf(fp, "*MaxMediaWidth: \"%d\"\n", max_width); + gpprintf(fp, "*MaxMediaHeight: \"%d\"\n", max_height); + gpprintf(fp, "*HWMargins: %d %d %d %d\n", left, height - bottom, width - right, top); - gzputs(fp, "*CustomPageSize True: \"pop pop pop <</PageSize[5 -2 roll]/ImagingBBox null>>setpagedevice\"\n"); - gzprintf(fp, "*ParamCustomPageSize Width: 1 points %d %d\n", + gpputs(fp, "*CustomPageSize True: \"pop pop pop <</PageSize[5 -2 roll]/ImagingBBox null>>setpagedevice\"\n"); + gpprintf(fp, "*ParamCustomPageSize Width: 1 points %d %d\n", min_width, max_width); - gzprintf(fp, "*ParamCustomPageSize Height: 2 points %d %d\n", + gpprintf(fp, "*ParamCustomPageSize Height: 2 points %d %d\n", min_height, max_height); - gzputs(fp, "*ParamCustomPageSize WidthOffset: 3 points 0 0\n"); - gzputs(fp, "*ParamCustomPageSize HeightOffset: 4 points 0 0\n"); - gzputs(fp, "*ParamCustomPageSize Orientation: 5 int 0 0\n\n"); + gpputs(fp, "*ParamCustomPageSize WidthOffset: 3 points 0 0\n"); + gpputs(fp, "*ParamCustomPageSize HeightOffset: 4 points 0 0\n"); + gpputs(fp, "*ParamCustomPageSize Orientation: 5 int 0 0\n\n"); stp_clear_string_parameter(v, "PageSize"); } @@ -1242,33 +1372,33 @@ print_page_sizes(gzFile fp, stp_vars_t *v, int simplified, } static void -print_color_setup(gzFile fp, int simplified, int printer_is_color, +print_color_setup(gpFile fp, int simplified, int printer_is_color, const stp_string_list_t *po) { - gzputs(fp, "*ColorKeyWords: \"ColorModel\"\n"); - gzprintf(fp, "*OpenUI *ColorModel/%s: PickOne\n", _("Color Model")); - gzputs(fp, "*OPOptionHints ColorModel: \"radiobuttons\"\n"); - gzputs(fp, "*OrderDependency: 2 AnySetup *ColorModel\n"); + gpputs(fp, "*ColorKeyWords: \"ColorModel\"\n"); + gpprintf(fp, "*OpenUI *ColorModel/%s: PickOne\n", _("Color Model")); + gpputs(fp, "*OPOptionHints ColorModel: \"radiobuttons\"\n"); + gpputs(fp, "*OrderDependency: 2 AnySetup *ColorModel\n"); if (printer_is_color) { - gzputs(fp, "*DefaultColorModel: RGB\n"); - gzputs(fp, "*StpDefaultColorModel: RGB\n"); + gpputs(fp, "*DefaultColorModel: RGB\n"); + gpputs(fp, "*StpDefaultColorModel: RGB\n"); } else { - gzputs(fp, "*DefaultColorModel: Gray\n"); - gzputs(fp, "*StpDefaultColorModel: Gray\n"); + gpputs(fp, "*DefaultColorModel: Gray\n"); + gpputs(fp, "*StpDefaultColorModel: Gray\n"); } - gzprintf(fp, "*ColorModel Gray/%s:\t\"<<" + gpprintf(fp, "*ColorModel Gray/%s:\t\"<<" "/cupsColorSpace %d" "/cupsColorOrder %d" "%s" ">>setpagedevice\"\n", _("Grayscale"), CUPS_CSPACE_W, CUPS_ORDER_CHUNKED, simplified ? "/cupsBitsPerColor 8/cupsPreferredBitsPerColor 16" : ""); - gzprintf(fp, "*ColorModel Black/%s:\t\"<<" + gpprintf(fp, "*ColorModel Black/%s:\t\"<<" "/cupsColorSpace %d" "/cupsColorOrder %d" "%s" @@ -1278,28 +1408,28 @@ print_color_setup(gzFile fp, int simplified, int printer_is_color, if (printer_is_color) { - gzprintf(fp, "*ColorModel RGB/%s:\t\"<<" + gpprintf(fp, "*ColorModel RGB/%s:\t\"<<" "/cupsColorSpace %d" "/cupsColorOrder %d" "%s" ">>setpagedevice\"\n", _("RGB Color"), CUPS_CSPACE_RGB, CUPS_ORDER_CHUNKED, simplified ? "/cupsBitsPerColor 8/cupsPreferredBitsPerColor 16" : ""); - gzprintf(fp, "*ColorModel CMY/%s:\t\"<<" + gpprintf(fp, "*ColorModel CMY/%s:\t\"<<" "/cupsColorSpace %d" "/cupsColorOrder %d" "%s" ">>setpagedevice\"\n", _("CMY Color"), CUPS_CSPACE_CMY, CUPS_ORDER_CHUNKED, simplified ? "/cupsBitsPerColor 8/cupsPreferredBitsPerColor 16" : ""); - gzprintf(fp, "*ColorModel CMYK/%s:\t\"<<" + gpprintf(fp, "*ColorModel CMYK/%s:\t\"<<" "/cupsColorSpace %d" "/cupsColorOrder %d" "%s" ">>setpagedevice\"\n", _("CMYK"), CUPS_CSPACE_CMYK, CUPS_ORDER_CHUNKED, simplified ? "/cupsBitsPerColor 8/cupsPreferredBitsPerColor 16" : ""); - gzprintf(fp, "*ColorModel KCMY/%s:\t\"<<" + gpprintf(fp, "*ColorModel KCMY/%s:\t\"<<" "/cupsColorSpace %d" "/cupsColorOrder %d" "%s" @@ -1308,30 +1438,30 @@ print_color_setup(gzFile fp, int simplified, int printer_is_color, simplified ? "/cupsBitsPerColor 8/cupsPreferredBitsPerColor 16" : ""); } - gzputs(fp, "*CloseUI: *ColorModel\n\n"); + gpputs(fp, "*CloseUI: *ColorModel\n\n"); if (!simplified) { /* * 8 or 16 bit color (16 bit is slower) */ - gzputs(fp, "*ColorKeyWords: \"StpColorPrecision\"\n"); - gzprintf(fp, "*OpenUI *StpColorPrecision/%s: PickOne\n", _("Color Precision")); - gzputs(fp, "*OPOptionHints StpColorPrecision: \"radiobuttons\"\n"); - gzputs(fp, "*OrderDependency: 1 AnySetup *StpColorPrecision\n"); - gzputs(fp, "*DefaultStpColorPrecision: Normal\n"); - gzputs(fp, "*StpDefaultStpColorPrecision: Normal\n"); - gzprintf(fp, "*StpColorPrecision Normal/%s:\t\"<<" + gpputs(fp, "*ColorKeyWords: \"StpColorPrecision\"\n"); + gpprintf(fp, "*OpenUI *StpColorPrecision/%s: PickOne\n", _("Color Precision")); + gpputs(fp, "*OPOptionHints StpColorPrecision: \"radiobuttons\"\n"); + gpputs(fp, "*OrderDependency: 1 AnySetup *StpColorPrecision\n"); + gpputs(fp, "*DefaultStpColorPrecision: Normal\n"); + gpputs(fp, "*StpDefaultStpColorPrecision: Normal\n"); + gpprintf(fp, "*StpColorPrecision Normal/%s:\t\"<<" "/cupsBitsPerColor 8>>setpagedevice\"\n", _("Normal")); - gzprintf(fp, "*StpColorPrecision Best/%s:\t\"<<" + gpprintf(fp, "*StpColorPrecision Best/%s:\t\"<<" "/cupsBitsPerColor 8" "/cupsPreferredBitsPerColor 16>>setpagedevice\"\n", _("Best")); - gzputs(fp, "*CloseUI: *StpColorPrecision\n\n"); + gpputs(fp, "*CloseUI: *StpColorPrecision\n\n"); } } static void print_group( - gzFile fp, /* I - File to write to */ + gpFile fp, /* I - File to write to */ const char *what, stp_parameter_class_t p_class, /* I - Option class */ stp_parameter_level_t p_level, /* I - Option level */ @@ -1343,7 +1473,7 @@ print_group( const char *level = stp_i18n_lookup(po, parameter_level_names[p_level]); size_t bytes = bytelen(class) + bytelen(level); snprintf(buf, 40, "%s%s%s", class, bytes < 39 ? " " : "", level); - gzprintf(fp, "*%sGroup: C%dL%d/%s\n", what, p_class, p_level, buf); + gpprintf(fp, "*%sGroup: C%dL%d/%s\n", what, p_class, p_level, buf); if (language && !strcmp(language, "C") && !strcmp(what, "Open")) { char **all_langs = getlangs();/* All languages */ @@ -1364,12 +1494,12 @@ print_group( level = stp_i18n_lookup(altpo, parameter_level_names[p_level]); bytes = bytelen(class) + bytelen(level); snprintf(buf, 40, "%s%s%s", class, bytes < 39 ? " " : "", level); - gzprintf(fp, "*%s.Translation C%dL%d/%s: \"\"\n", + gpprintf(fp, "*%s.Translation C%dL%d/%s: \"\"\n", lang, p_class, p_level, buf); } } } - gzputs(fp, "\n"); + gpputs(fp, "\n"); } /* @@ -1378,7 +1508,7 @@ print_group( static void print_group_close( - gzFile fp, /* I - File to write to */ + gpFile fp, /* I - File to write to */ stp_parameter_class_t p_class, /* I - Option class */ stp_parameter_level_t p_level, /* I - Option level */ const char *language, /* I - language */ @@ -1394,7 +1524,7 @@ print_group_close( static void print_group_open( - gzFile fp, /* I - File to write to */ + gpFile fp, /* I - File to write to */ stp_parameter_class_t p_class, /* I - Option class */ stp_parameter_level_t p_level, /* I - Option level */ const char *language, /* I - language */ @@ -1404,7 +1534,7 @@ print_group_open( } static void -print_one_option(gzFile fp, stp_vars_t *v, const stp_string_list_t *po, +print_one_option(gpFile fp, stp_vars_t *v, const stp_string_list_t *po, ppd_type_t ppd_type, const stp_parameter_t *lparam, const stp_parameter_t *desc) { @@ -1418,10 +1548,10 @@ print_one_option(gzFile fp, stp_vars_t *v, const stp_string_list_t *po, int is_color_opt = stp_parameter_has_category_value(v, desc, "Color", "Yes"); int skip_color = (ppd_type == PPD_NO_COLOR_OPTS && is_color_opt); if (is_color_opt) - gzprintf(fp, "*ColorKeyWords: \"Stp%s\"\n", desc->name); - gzprintf(fp, "*OpenUI *Stp%s/%s: PickOne\n", + gpprintf(fp, "*ColorKeyWords: \"Stp%s\"\n", desc->name); + gpprintf(fp, "*OpenUI *Stp%s/%s: PickOne\n", desc->name, stp_i18n_lookup(po, desc->text)); - gzprintf(fp, "*OrderDependency: 10 AnySetup *Stp%s\n", desc->name); + gpprintf(fp, "*OrderDependency: 10 AnySetup *Stp%s\n", desc->name); switch (desc->p_type) { case STP_PARAMETER_TYPE_STRING_LIST: @@ -1429,72 +1559,72 @@ print_one_option(gzFile fp, stp_vars_t *v, const stp_string_list_t *po, if (! skip_color) { if (num_opts > 3) - gzprintf(fp, "*OPOptionHints Stp%s: \"dropdown\"\n", lparam->name); + gpprintf(fp, "*OPOptionHints Stp%s: \"dropdown\"\n", lparam->name); else - gzprintf(fp, "*OPOptionHints Stp%s: \"radiobuttons\"\n", lparam->name); + gpprintf(fp, "*OPOptionHints Stp%s: \"radiobuttons\"\n", lparam->name); } - gzprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", + gpprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", desc->name, desc->p_type, desc->is_mandatory, desc->p_class, desc->p_level, desc->channel, 0.0, 0.0, 0.0); if (desc->is_mandatory) { - gzprintf(fp, "*DefaultStp%s: %s\n", desc->name, desc->deflt.str); - gzprintf(fp, "*StpDefaultStp%s: %s\n", desc->name, desc->deflt.str); + gpprintf(fp, "*DefaultStp%s: %s\n", desc->name, desc->deflt.str); + gpprintf(fp, "*StpDefaultStp%s: %s\n", desc->name, desc->deflt.str); } else { - gzprintf(fp, "*DefaultStp%s: None\n", desc->name); - gzprintf(fp, "*StpDefaultStp%s: None\n", desc->name); - gzprintf(fp, "*Stp%s %s/%s: \"\"\n", desc->name, "None", _("None")); + gpprintf(fp, "*DefaultStp%s: None\n", desc->name); + gpprintf(fp, "*StpDefaultStp%s: None\n", desc->name); + gpprintf(fp, "*Stp%s %s/%s: \"\"\n", desc->name, "None", _("None")); } for (i = 0; i < num_opts; i++) { opt = stp_string_list_param(desc->bounds.str, i); if (skip_color && strcmp(opt->name, desc->deflt.str) != 0) - gzprintf(fp, "*?Stp%s %s/%s: \"\"\n", + gpprintf(fp, "*?Stp%s %s/%s: \"\"\n", desc->name, opt->name, stp_i18n_lookup(po, opt->text)); else - gzprintf(fp, "*Stp%s %s/%s: \"\"\n", + gpprintf(fp, "*Stp%s %s/%s: \"\"\n", desc->name, opt->name, stp_i18n_lookup(po, opt->text)); } break; case STP_PARAMETER_TYPE_BOOLEAN: - gzprintf(fp, "*OPOptionHints Stp%s: \"checkbox\"\n", lparam->name); - gzprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", + gpprintf(fp, "*OPOptionHints Stp%s: \"checkbox\"\n", lparam->name); + gpprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", desc->name, desc->p_type, desc->is_mandatory, desc->p_class, desc->p_level, desc->channel, 0.0, 0.0, desc->deflt.boolean ? 1.0 : 0.0); if (desc->is_mandatory) { - gzprintf(fp, "*DefaultStp%s: %s\n", desc->name, + gpprintf(fp, "*DefaultStp%s: %s\n", desc->name, desc->deflt.boolean ? "True" : "False"); - gzprintf(fp, "*StpDefaultStp%s: %s\n", desc->name, + gpprintf(fp, "*StpDefaultStp%s: %s\n", desc->name, desc->deflt.boolean ? "True" : "False"); if (skip_color) - gzprintf(fp, "*Stp%s %s/%s: \"\"\n", + gpprintf(fp, "*Stp%s %s/%s: \"\"\n", desc->name, desc->deflt.boolean ? "True" : "False", desc->deflt.boolean ? _("Yes") : _("No")); } else { - gzprintf(fp, "*DefaultStp%s: None\n", desc->name); - gzprintf(fp, "*StpDefaultStp%s: None\n", desc->name); - gzprintf(fp, "*Stp%s %s/%s: \"\"\n", desc->name, "None", _("None")); + gpprintf(fp, "*DefaultStp%s: None\n", desc->name); + gpprintf(fp, "*StpDefaultStp%s: None\n", desc->name); + gpprintf(fp, "*Stp%s %s/%s: \"\"\n", desc->name, "None", _("None")); } - gzprintf(fp, "*%sStp%s %s/%s: \"\"\n", + gpprintf(fp, "*%sStp%s %s/%s: \"\"\n", (skip_color ? "?" : ""), desc->name, "False", _("No")); - gzprintf(fp, "*%sStp%s %s/%s: \"\"\n", + gpprintf(fp, "*%sStp%s %s/%s: \"\"\n", (skip_color ? "?" : ""), desc->name, "True", _("Yes")); break; case STP_PARAMETER_TYPE_DOUBLE: - gzprintf(fp, "*OPOptionHints Stp%s: \"slider input spinbox\"\n", + gpprintf(fp, "*OPOptionHints Stp%s: \"slider input spinbox\"\n", lparam->name); - gzprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", + gpprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", desc->name, desc->p_type, desc->is_mandatory, desc->p_class, desc->p_level, desc->channel, desc->bounds.dbl.lower, desc->bounds.dbl.upper, desc->deflt.dbl); - gzprintf(fp, "*DefaultStp%s: None\n", desc->name); - gzprintf(fp, "*StpDefaultStp%s: None\n", desc->name); + gpprintf(fp, "*DefaultStp%s: None\n", desc->name); + gpprintf(fp, "*StpDefaultStp%s: None\n", desc->name); if (!skip_color) { for (i = desc->bounds.dbl.lower * 1000; @@ -1502,55 +1632,55 @@ print_one_option(gzFile fp, stp_vars_t *v, const stp_string_list_t *po, { if (desc->deflt.dbl * 1000 == i && desc->is_mandatory) { - gzprintf(fp, "*Stp%s None/%.3f: \"\"\n", + gpprintf(fp, "*Stp%s None/%.3f: \"\"\n", desc->name, ((double) i) * .001); printed_default_value = 1; } else - gzprintf(fp, "*Stp%s %d/%.3f: \"\"\n", + gpprintf(fp, "*Stp%s %d/%.3f: \"\"\n", desc->name, i, ((double) i) * .001); } } if (!desc->is_mandatory) - gzprintf(fp, "*Stp%s None/%s: \"\"\n", desc->name, _("None")); + gpprintf(fp, "*Stp%s None/%s: \"\"\n", desc->name, _("None")); else if (! printed_default_value) - gzprintf(fp, "*Stp%s None/%.3f: \"\"\n", desc->name, desc->deflt.dbl); - gzprintf(fp, "*CloseUI: *Stp%s\n\n", desc->name); + gpprintf(fp, "*Stp%s None/%.3f: \"\"\n", desc->name, desc->deflt.dbl); + gpprintf(fp, "*CloseUI: *Stp%s\n\n", desc->name); /* * Add custom option code and value parameter... */ - gzprintf(fp, "*CustomStp%s True: \"pop\"\n", desc->name); - gzprintf(fp, "*ParamCustomStp%s Value/%s: 1 real %.3f %.3f\n\n", + gpprintf(fp, "*CustomStp%s True: \"pop\"\n", desc->name); + gpprintf(fp, "*ParamCustomStp%s Value/%s: 1 real %.3f %.3f\n\n", desc->name, _("Value"), desc->bounds.dbl.lower, desc->bounds.dbl.upper); if (!simplified && !skip_color) { if (is_color_opt) - gzprintf(fp, "*ColorKeyWords: \"StpFine%s\"\n", desc->name); - gzprintf(fp, "*OpenUI *StpFine%s/%s %s: PickOne\n", + gpprintf(fp, "*ColorKeyWords: \"StpFine%s\"\n", desc->name); + gpprintf(fp, "*OpenUI *StpFine%s/%s %s: PickOne\n", desc->name, stp_i18n_lookup(po, desc->text), _("Fine Adjustment")); - gzprintf(fp, "*OPOptionHints StpFine%s: \"hide\"\n", lparam->name); - gzprintf(fp, "*StpStpFine%s: %d %d %d %d %d %.3f %.3f %.3f\n", + gpprintf(fp, "*OPOptionHints StpFine%s: \"hide\"\n", lparam->name); + gpprintf(fp, "*StpStpFine%s: %d %d %d %d %d %.3f %.3f %.3f\n", desc->name, STP_PARAMETER_TYPE_INVALID, 0, 0, 0, -1, 0.0, 0.0, 0.0); - gzprintf(fp, "*DefaultStpFine%s: None\n", desc->name); - gzprintf(fp, "*StpDefaultStpFine%s: None\n", desc->name); - gzprintf(fp, "*StpFine%s None/0.000: \"\"\n", desc->name); + gpprintf(fp, "*DefaultStpFine%s: None\n", desc->name); + gpprintf(fp, "*StpDefaultStpFine%s: None\n", desc->name); + gpprintf(fp, "*StpFine%s None/0.000: \"\"\n", desc->name); for (i = 0; i < 100; i += 5) - gzprintf(fp, "*StpFine%s %d/%.3f: \"\"\n", + gpprintf(fp, "*StpFine%s %d/%.3f: \"\"\n", desc->name, i, ((double) i) * .001); - gzprintf(fp, "*CloseUI: *StpFine%s\n\n", desc->name); + gpprintf(fp, "*CloseUI: *StpFine%s\n\n", desc->name); } print_close_ui = 0; break; case STP_PARAMETER_TYPE_DIMENSION: - gzprintf(fp, "*OPOptionHints Stp%s: \"length slider input spinbox\"\n", + gpprintf(fp, "*OPOptionHints Stp%s: \"length slider input spinbox\"\n", lparam->name); - gzprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", + gpprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", desc->name, desc->p_type, desc->is_mandatory, desc->p_class, desc->p_level, desc->channel, (double) desc->bounds.dimension.lower, @@ -1558,16 +1688,16 @@ print_one_option(gzFile fp, stp_vars_t *v, const stp_string_list_t *po, (double) desc->deflt.dimension); if (desc->is_mandatory) { - gzprintf(fp, "*DefaultStp%s: %d\n", + gpprintf(fp, "*DefaultStp%s: %d\n", desc->name, desc->deflt.dimension); - gzprintf(fp, "*StpDefaultStp%s: %d\n", + gpprintf(fp, "*StpDefaultStp%s: %d\n", desc->name, desc->deflt.dimension); } else { - gzprintf(fp, "*DefaultStp%s: None\n", desc->name); - gzprintf(fp, "*StpDefaultStp%s: None\n", desc->name); - gzprintf(fp, "*Stp%s %s/%s: \"\"\n", desc->name, "None", _("None")); + gpprintf(fp, "*DefaultStp%s: None\n", desc->name); + gpprintf(fp, "*StpDefaultStp%s: None\n", desc->name); + gpprintf(fp, "*Stp%s %s/%s: \"\"\n", desc->name, "None", _("None")); } if (!skip_color) { @@ -1576,26 +1706,26 @@ print_one_option(gzFile fp, stp_vars_t *v, const stp_string_list_t *po, { snprintf(dimstr, sizeof(dimstr), _("%.1f mm"), (double)i * 25.4 / 72.0); - gzprintf(fp, "*Stp%s %d/%s: \"\"\n", desc->name, i, dimstr); + gpprintf(fp, "*Stp%s %d/%s: \"\"\n", desc->name, i, dimstr); } } print_close_ui = 0; - gzprintf(fp, "*CloseUI: *Stp%s\n\n", desc->name); + gpprintf(fp, "*CloseUI: *Stp%s\n\n", desc->name); /* * Add custom option code and value parameter... */ - gzprintf(fp, "*CustomStp%s True: \"pop\"\n", desc->name); - gzprintf(fp, "*ParamCustomStp%s Value/%s: 1 points %d %d\n\n", + gpprintf(fp, "*CustomStp%s True: \"pop\"\n", desc->name); + gpprintf(fp, "*ParamCustomStp%s Value/%s: 1 points %d %d\n\n", desc->name, _("Value"), desc->bounds.dimension.lower, desc->bounds.dimension.upper); break; case STP_PARAMETER_TYPE_INT: - gzprintf(fp, "*OPOptionHints Stp%s: \"input spinbox\"\n", lparam->name); - gzprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", + gpprintf(fp, "*OPOptionHints Stp%s: \"input spinbox\"\n", lparam->name); + gpprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", desc->name, desc->p_type, desc->is_mandatory, desc->p_class, desc->p_level, desc->channel, (double) desc->bounds.integer.lower, @@ -1603,33 +1733,33 @@ print_one_option(gzFile fp, stp_vars_t *v, const stp_string_list_t *po, (double) desc->deflt.integer); if (desc->is_mandatory) { - gzprintf(fp, "*DefaultStp%s: %d\n", desc->name, desc->deflt.integer); - gzprintf(fp, "*StpDefaultStp%s: %d\n", desc->name, desc->deflt.integer); + gpprintf(fp, "*DefaultStp%s: %d\n", desc->name, desc->deflt.integer); + gpprintf(fp, "*StpDefaultStp%s: %d\n", desc->name, desc->deflt.integer); if (skip_color) - gzprintf(fp, "*Stp%s %d/%d: \"\"\n", desc->name, + gpprintf(fp, "*Stp%s %d/%d: \"\"\n", desc->name, desc->deflt.integer, desc->deflt.integer); } else { - gzprintf(fp, "*DefaultStp%s: None\n", desc->name); - gzprintf(fp, "*StpDefaultStp%s: None\n", desc->name); - gzprintf(fp, "*Stp%s %s/%s: \"\"\n", desc->name, "None", _("None")); + gpprintf(fp, "*DefaultStp%s: None\n", desc->name); + gpprintf(fp, "*StpDefaultStp%s: None\n", desc->name); + gpprintf(fp, "*Stp%s %s/%s: \"\"\n", desc->name, "None", _("None")); } for (i = desc->bounds.integer.lower; i <= desc->bounds.integer.upper; i++) { - gzprintf(fp, "*%sStp%s %d/%d: \"\"\n", + gpprintf(fp, "*%sStp%s %d/%d: \"\"\n", (skip_color ? "?" : ""), desc->name, i, i); } print_close_ui = 0; - gzprintf(fp, "*CloseUI: *Stp%s\n\n", desc->name); + gpprintf(fp, "*CloseUI: *Stp%s\n\n", desc->name); /* * Add custom option code and value parameter... */ - gzprintf(fp, "*CustomStp%s True: \"pop\"\n", desc->name); - gzprintf(fp, "*ParamCustomStp%s Value/%s: 1 int %d %d\n\n", desc->name, + gpprintf(fp, "*CustomStp%s True: \"pop\"\n", desc->name); + gpprintf(fp, "*ParamCustomStp%s Value/%s: 1 int %d %d\n\n", desc->name, _("Value"), desc->bounds.dimension.lower, desc->bounds.dimension.upper); @@ -1638,11 +1768,11 @@ print_one_option(gzFile fp, stp_vars_t *v, const stp_string_list_t *po, break; } if (print_close_ui) - gzprintf(fp, "*CloseUI: *Stp%s\n\n", desc->name); + gpprintf(fp, "*CloseUI: *Stp%s\n\n", desc->name); } static void -print_one_localization(gzFile fp, const stp_string_list_t *po, +print_one_localization(gpFile fp, const stp_string_list_t *po, int simplified, const char *lang, const stp_parameter_t *lparam, const stp_parameter_t *desc) @@ -1651,30 +1781,30 @@ print_one_localization(gzFile fp, const stp_string_list_t *po, int i; const stp_param_string_t *opt; char dimstr[255]; /* Dimension string */ - - gzprintf(fp, "*%s.Translation Stp%s/%s: \"\"\n", lang, + + gpprintf(fp, "*%s.Translation Stp%s/%s: \"\"\n", lang, desc->name, stp_i18n_lookup(po, desc->text)); switch (desc->p_type) { case STP_PARAMETER_TYPE_STRING_LIST: if (!desc->is_mandatory) - gzprintf(fp, "*%s.Stp%s %s/%s: \"\"\n", lang, desc->name, + gpprintf(fp, "*%s.Stp%s %s/%s: \"\"\n", lang, desc->name, "None", _("None")); num_opts = stp_string_list_count(desc->bounds.str); for (i = 0; i < num_opts; i++) { opt = stp_string_list_param(desc->bounds.str, i); - gzprintf(fp, "*%s.Stp%s %s/%s: \"\"\n", lang, + gpprintf(fp, "*%s.Stp%s %s/%s: \"\"\n", lang, desc->name, opt->name, stp_i18n_lookup(po, opt->text)); } break; case STP_PARAMETER_TYPE_BOOLEAN: if (!desc->is_mandatory) - gzprintf(fp, "*%s.Stp%s %s/%s: \"\"\n", lang, desc->name, + gpprintf(fp, "*%s.Stp%s %s/%s: \"\"\n", lang, desc->name, "None", _("None")); - gzprintf(fp, "*%s.Stp%s %s/%s: \"\"\n", lang, desc->name, "False", _("No")); - gzprintf(fp, "*%s.Stp%s %s/%s: \"\"\n", lang, desc->name, "True", _("Yes")); + gpprintf(fp, "*%s.Stp%s %s/%s: \"\"\n", lang, desc->name, "False", _("No")); + gpprintf(fp, "*%s.Stp%s %s/%s: \"\"\n", lang, desc->name, "True", _("Yes")); break; case STP_PARAMETER_TYPE_DOUBLE: @@ -1684,28 +1814,28 @@ print_one_localization(gzFile fp, const stp_string_list_t *po, i <= desc->bounds.dbl.upper * 1000; i += 100) { if (desc->deflt.dbl * 1000 == i && desc->is_mandatory) - gzprintf(fp, "*%s.Stp%s None/%.3f: \"\"\n", lang, + gpprintf(fp, "*%s.Stp%s None/%.3f: \"\"\n", lang, desc->name, ((double) i) * .001); else - gzprintf(fp, "*%s.Stp%s %d/%.3f: \"\"\n", lang, + gpprintf(fp, "*%s.Stp%s %d/%.3f: \"\"\n", lang, desc->name, i, ((double) i) * .001); } } if (!desc->is_mandatory) - gzprintf(fp, "*%s.Stp%s None/%s: \"\"\n", lang, desc->name, _("None")); - gzprintf(fp, "*%s.ParamCustomStp%s Value/%s: \"\"\n", lang, + gpprintf(fp, "*%s.Stp%s None/%s: \"\"\n", lang, desc->name, _("None")); + gpprintf(fp, "*%s.ParamCustomStp%s Value/%s: \"\"\n", lang, desc->name, _("Value")); if (!simplified) { - gzprintf(fp, "*%s.Translation StpFine%s/%s %s: \"\"\n", lang, + gpprintf(fp, "*%s.Translation StpFine%s/%s %s: \"\"\n", lang, desc->name, stp_i18n_lookup(po, desc->text), _("Fine Adjustment")); - gzprintf(fp, "*%s.StpFine%s None/%.3f: \"\"\n", lang, + gpprintf(fp, "*%s.StpFine%s None/%.3f: \"\"\n", lang, desc->name, 0.0); if (localize_numbers) { for (i = 0; i < 100; i += 5) - gzprintf(fp, "*%s.StpFine%s %d/%.3f: \"\"\n", lang, + gpprintf(fp, "*%s.StpFine%s %d/%.3f: \"\"\n", lang, desc->name, i, ((double) i) * .001); } } @@ -1713,7 +1843,7 @@ print_one_localization(gzFile fp, const stp_string_list_t *po, case STP_PARAMETER_TYPE_DIMENSION: if (!desc->is_mandatory) - gzprintf(fp, "*%s.Stp%s %s/%s: \"\"\n", lang, desc->name, + gpprintf(fp, "*%s.Stp%s %s/%s: \"\"\n", lang, desc->name, "None", _("None")); /* Unlike the other fields, dimensions are not strictly numbers */ for (i = desc->bounds.dimension.lower; @@ -1721,26 +1851,26 @@ print_one_localization(gzFile fp, const stp_string_list_t *po, { snprintf(dimstr, sizeof(dimstr), _("%.1f mm"), (double)i * 25.4 / 72.0); - gzprintf(fp, "*%s.Stp%s %d/%s: \"\"\n", lang, + gpprintf(fp, "*%s.Stp%s %d/%s: \"\"\n", lang, desc->name, i, dimstr); } - gzprintf(fp, "*%s.ParamCustomStp%s Value/%s: \"\"\n", lang, + gpprintf(fp, "*%s.ParamCustomStp%s Value/%s: \"\"\n", lang, desc->name, _("Value")); break; case STP_PARAMETER_TYPE_INT: if (!desc->is_mandatory) - gzprintf(fp, "*%s.Stp%s %s/%s: \"\"\n", lang, desc->name, + gpprintf(fp, "*%s.Stp%s %s/%s: \"\"\n", lang, desc->name, "None", _("None")); if (localize_numbers) { for (i = desc->bounds.integer.lower; i <= desc->bounds.integer.upper; i++) { - gzprintf(fp, "*%s.Stp%s %d/%d: \"\"\n", lang, desc->name, i, i); + gpprintf(fp, "*%s.Stp%s %d/%d: \"\"\n", lang, desc->name, i, i); } } - gzprintf(fp, "*%s.ParamCustomStp%s Value/%s: \"\"\n", lang, + gpprintf(fp, "*%s.ParamCustomStp%s Value/%s: \"\"\n", lang, desc->name, _("Value")); break; @@ -1750,44 +1880,44 @@ print_one_localization(gzFile fp, const stp_string_list_t *po, } static void -print_standard_fonts(gzFile fp) +print_standard_fonts(gpFile fp) { - gzputs(fp, "\n*DefaultFont: Courier\n"); - gzputs(fp, "*Font AvantGarde-Book: Standard \"(001.006S)\" Standard ROM\n"); - gzputs(fp, "*Font AvantGarde-BookOblique: Standard \"(001.006S)\" Standard ROM\n"); - gzputs(fp, "*Font AvantGarde-Demi: Standard \"(001.007S)\" Standard ROM\n"); - gzputs(fp, "*Font AvantGarde-DemiOblique: Standard \"(001.007S)\" Standard ROM\n"); - gzputs(fp, "*Font Bookman-Demi: Standard \"(001.004S)\" Standard ROM\n"); - gzputs(fp, "*Font Bookman-DemiItalic: Standard \"(001.004S)\" Standard ROM\n"); - gzputs(fp, "*Font Bookman-Light: Standard \"(001.004S)\" Standard ROM\n"); - gzputs(fp, "*Font Bookman-LightItalic: Standard \"(001.004S)\" Standard ROM\n"); - gzputs(fp, "*Font Courier: Standard \"(002.004S)\" Standard ROM\n"); - gzputs(fp, "*Font Courier-Bold: Standard \"(002.004S)\" Standard ROM\n"); - gzputs(fp, "*Font Courier-BoldOblique: Standard \"(002.004S)\" Standard ROM\n"); - gzputs(fp, "*Font Courier-Oblique: Standard \"(002.004S)\" Standard ROM\n"); - gzputs(fp, "*Font Helvetica: Standard \"(001.006S)\" Standard ROM\n"); - gzputs(fp, "*Font Helvetica-Bold: Standard \"(001.007S)\" Standard ROM\n"); - gzputs(fp, "*Font Helvetica-BoldOblique: Standard \"(001.007S)\" Standard ROM\n"); - gzputs(fp, "*Font Helvetica-Narrow: Standard \"(001.006S)\" Standard ROM\n"); - gzputs(fp, "*Font Helvetica-Narrow-Bold: Standard \"(001.007S)\" Standard ROM\n"); - gzputs(fp, "*Font Helvetica-Narrow-BoldOblique: Standard \"(001.007S)\" Standard ROM\n"); - gzputs(fp, "*Font Helvetica-Narrow-Oblique: Standard \"(001.006S)\" Standard ROM\n"); - gzputs(fp, "*Font Helvetica-Oblique: Standard \"(001.006S)\" Standard ROM\n"); - gzputs(fp, "*Font NewCenturySchlbk-Bold: Standard \"(001.009S)\" Standard ROM\n"); - gzputs(fp, "*Font NewCenturySchlbk-BoldItalic: Standard \"(001.007S)\" Standard ROM\n"); - gzputs(fp, "*Font NewCenturySchlbk-Italic: Standard \"(001.006S)\" Standard ROM\n"); - gzputs(fp, "*Font NewCenturySchlbk-Roman: Standard \"(001.007S)\" Standard ROM\n"); - gzputs(fp, "*Font Palatino-Bold: Standard \"(001.005S)\" Standard ROM\n"); - gzputs(fp, "*Font Palatino-BoldItalic: Standard \"(001.005S)\" Standard ROM\n"); - gzputs(fp, "*Font Palatino-Italic: Standard \"(001.005S)\" Standard ROM\n"); - gzputs(fp, "*Font Palatino-Roman: Standard \"(001.005S)\" Standard ROM\n"); - gzputs(fp, "*Font Symbol: Special \"(001.007S)\" Special ROM\n"); - gzputs(fp, "*Font Times-Bold: Standard \"(001.007S)\" Standard ROM\n"); - gzputs(fp, "*Font Times-BoldItalic: Standard \"(001.009S)\" Standard ROM\n"); - gzputs(fp, "*Font Times-Italic: Standard \"(001.007S)\" Standard ROM\n"); - gzputs(fp, "*Font Times-Roman: Standard \"(001.007S)\" Standard ROM\n"); - gzputs(fp, "*Font ZapfChancery-MediumItalic: Standard \"(001.007S)\" Standard ROM\n"); - gzputs(fp, "*Font ZapfDingbats: Special \"(001.004S)\" Standard ROM\n"); + gpputs(fp, "\n*DefaultFont: Courier\n"); + gpputs(fp, "*Font AvantGarde-Book: Standard \"(001.006S)\" Standard ROM\n"); + gpputs(fp, "*Font AvantGarde-BookOblique: Standard \"(001.006S)\" Standard ROM\n"); + gpputs(fp, "*Font AvantGarde-Demi: Standard \"(001.007S)\" Standard ROM\n"); + gpputs(fp, "*Font AvantGarde-DemiOblique: Standard \"(001.007S)\" Standard ROM\n"); + gpputs(fp, "*Font Bookman-Demi: Standard \"(001.004S)\" Standard ROM\n"); + gpputs(fp, "*Font Bookman-DemiItalic: Standard \"(001.004S)\" Standard ROM\n"); + gpputs(fp, "*Font Bookman-Light: Standard \"(001.004S)\" Standard ROM\n"); + gpputs(fp, "*Font Bookman-LightItalic: Standard \"(001.004S)\" Standard ROM\n"); + gpputs(fp, "*Font Courier: Standard \"(002.004S)\" Standard ROM\n"); + gpputs(fp, "*Font Courier-Bold: Standard \"(002.004S)\" Standard ROM\n"); + gpputs(fp, "*Font Courier-BoldOblique: Standard \"(002.004S)\" Standard ROM\n"); + gpputs(fp, "*Font Courier-Oblique: Standard \"(002.004S)\" Standard ROM\n"); + gpputs(fp, "*Font Helvetica: Standard \"(001.006S)\" Standard ROM\n"); + gpputs(fp, "*Font Helvetica-Bold: Standard \"(001.007S)\" Standard ROM\n"); + gpputs(fp, "*Font Helvetica-BoldOblique: Standard \"(001.007S)\" Standard ROM\n"); + gpputs(fp, "*Font Helvetica-Narrow: Standard \"(001.006S)\" Standard ROM\n"); + gpputs(fp, "*Font Helvetica-Narrow-Bold: Standard \"(001.007S)\" Standard ROM\n"); + gpputs(fp, "*Font Helvetica-Narrow-BoldOblique: Standard \"(001.007S)\" Standard ROM\n"); + gpputs(fp, "*Font Helvetica-Narrow-Oblique: Standard \"(001.006S)\" Standard ROM\n"); + gpputs(fp, "*Font Helvetica-Oblique: Standard \"(001.006S)\" Standard ROM\n"); + gpputs(fp, "*Font NewCenturySchlbk-Bold: Standard \"(001.009S)\" Standard ROM\n"); + gpputs(fp, "*Font NewCenturySchlbk-BoldItalic: Standard \"(001.007S)\" Standard ROM\n"); + gpputs(fp, "*Font NewCenturySchlbk-Italic: Standard \"(001.006S)\" Standard ROM\n"); + gpputs(fp, "*Font NewCenturySchlbk-Roman: Standard \"(001.007S)\" Standard ROM\n"); + gpputs(fp, "*Font Palatino-Bold: Standard \"(001.005S)\" Standard ROM\n"); + gpputs(fp, "*Font Palatino-BoldItalic: Standard \"(001.005S)\" Standard ROM\n"); + gpputs(fp, "*Font Palatino-Italic: Standard \"(001.005S)\" Standard ROM\n"); + gpputs(fp, "*Font Palatino-Roman: Standard \"(001.005S)\" Standard ROM\n"); + gpputs(fp, "*Font Symbol: Special \"(001.007S)\" Special ROM\n"); + gpputs(fp, "*Font Times-Bold: Standard \"(001.007S)\" Standard ROM\n"); + gpputs(fp, "*Font Times-BoldItalic: Standard \"(001.009S)\" Standard ROM\n"); + gpputs(fp, "*Font Times-Italic: Standard \"(001.007S)\" Standard ROM\n"); + gpputs(fp, "*Font Times-Roman: Standard \"(001.007S)\" Standard ROM\n"); + gpputs(fp, "*Font ZapfChancery-MediumItalic: Standard \"(001.007S)\" Standard ROM\n"); + gpputs(fp, "*Font ZapfDingbats: Special \"(001.004S)\" Standard ROM\n"); } /* @@ -1796,7 +1926,7 @@ print_standard_fonts(gzFile fp) static int /* O - Exit status */ write_ppd( - gzFile fp, /* I - File to write to */ + gpFile fp, /* I - File to write to */ const stp_printer_t *p, /* I - Printer driver */ const char *language, /* I - Primary language */ const char *ppd_location, /* I - Location of PPD file */ @@ -1858,17 +1988,17 @@ write_ppd( if (stp_string_list_is_present(desc.bounds.str, "Color")) { printer_is_color = 1; - gzputs(fp, "*ColorDevice: True\n"); + gpputs(fp, "*ColorDevice: True\n"); } else { printer_is_color = 0; - gzputs(fp, "*ColorDevice: False\n"); + gpputs(fp, "*ColorDevice: False\n"); } if (strcmp(desc.deflt.str, "Color") == 0) - gzputs(fp, "*DefaultColorSpace: RGB\n"); + gpputs(fp, "*DefaultColorSpace: RGB\n"); else - gzputs(fp, "*DefaultColorSpace: Gray\n"); + gpputs(fp, "*DefaultColorSpace: Gray\n"); } stp_parameter_description_destroy(&desc); @@ -1879,15 +2009,15 @@ write_ppd( /* Macintosh color management */ #ifdef __APPLE__ - gzputs(fp, "*cupsICCProfile Gray../Grayscale: \"/System/Library/ColorSync/Profiles/sRGB Profile.icc\"\n"); - gzputs(fp, "*cupsICCProfile RGB../Color: \"/System/Library/ColorSync/Profiles/sRGB Profile.icc\"\n"); - gzputs(fp, "*cupsICCProfile CMYK../Color: \"/System/Library/ColorSync/Profiles/Generic CMYK Profile.icc\"\n"); - gzputs(fp, "*APSupportsCustomColorMatching: true\n"); - gzputs(fp, "*APDefaultCustomColorMatchingProfile: sRGB\n"); - gzputs(fp, "*APCustomColorMatchingProfile: sRGB\n"); + gpputs(fp, "*cupsICCProfile Gray../Grayscale: \"/System/Library/ColorSync/Profiles/sRGB Profile.icc\"\n"); + gpputs(fp, "*cupsICCProfile RGB../Color: \"/System/Library/ColorSync/Profiles/sRGB Profile.icc\"\n"); + gpputs(fp, "*cupsICCProfile CMYK../Color: \"/System/Library/ColorSync/Profiles/Generic CMYK Profile.icc\"\n"); + gpputs(fp, "*APSupportsCustomColorMatching: true\n"); + gpputs(fp, "*APDefaultCustomColorMatchingProfile: sRGB\n"); + gpputs(fp, "*APCustomColorMatchingProfile: sRGB\n"); #endif - gzputs(fp, "\n"); + gpputs(fp, "\n"); print_ppd_header_2(fp, ppd_type, model, driver, family, long_name, manufacturer, device_id, ppd_location, language, po, @@ -1915,33 +2045,34 @@ write_ppd( */ stp_describe_parameter(v, "MediaType", &desc); - num_opts = stp_string_list_count(desc.bounds.str); - if (num_opts > 0) + if (desc.p_type == STP_PARAMETER_TYPE_STRING_LIST && desc.is_active && + stp_string_list_count(desc.bounds.str) > 0) { int is_color_opt = stp_parameter_has_category_value(v, &desc, "Color", "Yes"); int nocolor = skip_color && is_color_opt; + num_opts = stp_string_list_count(desc.bounds.str); if (is_color_opt) - gzprintf(fp, "*ColorKeyWords: \"MediaType\"\n"); - gzprintf(fp, "*OpenUI *MediaType/%s: PickOne\n", _("Media Type")); - gzputs(fp, "*OPOptionHints MediaType: \"dropdown\"\n"); - gzputs(fp, "*OrderDependency: 10 AnySetup *MediaType\n"); - gzprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", + gpprintf(fp, "*ColorKeyWords: \"MediaType\"\n"); + gpprintf(fp, "*OpenUI *MediaType/%s: PickOne\n", _("Media Type")); + gpputs(fp, "*OPOptionHints MediaType: \"dropdown\"\n"); + gpputs(fp, "*OrderDependency: 10 AnySetup *MediaType\n"); + gpprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", desc.name, desc.p_type, desc.is_mandatory, desc.p_class, desc.p_level, desc.channel, 0.0, 0.0, 0.0); - gzprintf(fp, "*DefaultMediaType: %s\n", desc.deflt.str); - gzprintf(fp, "*StpDefaultMediaType: %s\n", desc.deflt.str); + gpprintf(fp, "*DefaultMediaType: %s\n", desc.deflt.str); + gpprintf(fp, "*StpDefaultMediaType: %s\n", desc.deflt.str); for (i = 0; i < num_opts; i ++) { opt = stp_string_list_param(desc.bounds.str, i); - gzprintf(fp, "*%sMediaType %s/%s:\t\"<</MediaType(%s)>>setpagedevice\"\n", + gpprintf(fp, "*%sMediaType %s/%s:\t\"<</MediaType(%s)>>setpagedevice\"\n", nocolor && strcmp(opt->name, desc.deflt.str) != 0 ? "?" : "", opt->name, stp_i18n_lookup(po, opt->text), opt->name); } - gzputs(fp, "*CloseUI: *MediaType\n\n"); + gpputs(fp, "*CloseUI: *MediaType\n\n"); } stp_parameter_description_destroy(&desc); @@ -1950,33 +2081,34 @@ write_ppd( */ stp_describe_parameter(v, "InputSlot", &desc); - num_opts = stp_string_list_count(desc.bounds.str); - if (num_opts > 0) + if (desc.p_type == STP_PARAMETER_TYPE_STRING_LIST && desc.is_active && + stp_string_list_count(desc.bounds.str) > 0) { int is_color_opt = stp_parameter_has_category_value(v, &desc, "Color", "Yes"); int nocolor = skip_color && is_color_opt; + num_opts = stp_string_list_count(desc.bounds.str); if (is_color_opt) - gzprintf(fp, "*ColorKeyWords: \"InputSlot\"\n"); - gzprintf(fp, "*OpenUI *InputSlot/%s: PickOne\n", _("Media Source")); - gzputs(fp, "*OPOptionHints InputSlot: \"dropdown\"\n"); - gzputs(fp, "*OrderDependency: 10 AnySetup *InputSlot\n"); - gzprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", + gpprintf(fp, "*ColorKeyWords: \"InputSlot\"\n"); + gpprintf(fp, "*OpenUI *InputSlot/%s: PickOne\n", _("Media Source")); + gpputs(fp, "*OPOptionHints InputSlot: \"dropdown\"\n"); + gpputs(fp, "*OrderDependency: 10 AnySetup *InputSlot\n"); + gpprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", desc.name, desc.p_type, desc.is_mandatory, desc.p_class, desc.p_level, desc.channel, 0.0, 0.0, 0.0); - gzprintf(fp, "*DefaultInputSlot: %s\n", desc.deflt.str); - gzprintf(fp, "*StpDefaultInputSlot: %s\n", desc.deflt.str); + gpprintf(fp, "*DefaultInputSlot: %s\n", desc.deflt.str); + gpprintf(fp, "*StpDefaultInputSlot: %s\n", desc.deflt.str); for (i = 0; i < num_opts; i ++) { opt = stp_string_list_param(desc.bounds.str, i); - gzprintf(fp, "*%sInputSlot %s/%s:\t\"<</MediaClass(%s)>>setpagedevice\"\n", + gpprintf(fp, "*%sInputSlot %s/%s:\t\"<</MediaClass(%s)>>setpagedevice\"\n", nocolor && strcmp(opt->name, desc.deflt.str) != 0 ? "?" : "", opt->name, stp_i18n_lookup(po, opt->text), opt->name); } - gzputs(fp, "*CloseUI: *InputSlot\n\n"); + gpputs(fp, "*CloseUI: *InputSlot\n\n"); } stp_parameter_description_destroy(&desc); @@ -1991,21 +2123,21 @@ write_ppd( stp_parameter_has_category_value(v, &desc, "Color", "Yes"); int nocolor = skip_color && is_color_opt; if (is_color_opt) - gzprintf(fp, "*ColorKeyWords: \"Quality\"\n"); + gpprintf(fp, "*ColorKeyWords: \"Quality\"\n"); stp_clear_string_parameter(v, "Resolution"); has_quality_parameter = 1; num_opts = stp_string_list_count(desc.bounds.str); - gzprintf(fp, "*OpenUI *StpQuality/%s: PickOne\n", stp_i18n_lookup(po, desc.text)); + gpprintf(fp, "*OpenUI *StpQuality/%s: PickOne\n", stp_i18n_lookup(po, desc.text)); if (num_opts > 3) - gzputs(fp, "*OPOptionHints Quality: \"radiobuttons\"\n"); + gpputs(fp, "*OPOptionHints Quality: \"radiobuttons\"\n"); else - gzputs(fp, "*OPOptionHints Quality: \"dropdown\"\n"); - gzputs(fp, "*OrderDependency: 10 AnySetup *StpQuality\n"); - gzprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", + gpputs(fp, "*OPOptionHints Quality: \"dropdown\"\n"); + gpputs(fp, "*OrderDependency: 10 AnySetup *StpQuality\n"); + gpprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", desc.name, desc.p_type, desc.is_mandatory, desc.p_type, desc.p_level, desc.channel, 0.0, 0.0, 0.0); - gzprintf(fp, "*DefaultStpQuality: %s\n", desc.deflt.str); - gzprintf(fp, "*StpDefaultStpQuality: %s\n", desc.deflt.str); + gpprintf(fp, "*DefaultStpQuality: %s\n", desc.deflt.str); + gpprintf(fp, "*StpDefaultStpQuality: %s\n", desc.deflt.str); for (i = 0; i < num_opts; i++) { opt = stp_string_list_param(desc.bounds.str, i); @@ -2021,11 +2153,11 @@ write_ppd( stp_clear_string_parameter(v, "Resolution"); stp_parameter_description_destroy(&res_desc); } - gzprintf(fp, "*%sStpQuality %s/%s:\t\"<</HWResolution[%d %d]/cupsRowFeed %d>>setpagedevice\"\n", + gpprintf(fp, "*%sStpQuality %s/%s:\t\"<</HWResolution[%d %d]/cupsRowFeed %d>>setpagedevice\"\n", nocolor && strcmp(opt->name, desc.deflt.str) != 0 ? "?" : "", opt->name, stp_i18n_lookup(po, opt->text), xdpi, ydpi, i + 1); } - gzputs(fp, "*CloseUI: *StpQuality\n\n"); + gpputs(fp, "*CloseUI: *StpQuality\n\n"); } stp_parameter_description_destroy(&desc); stp_clear_string_parameter(v, "Quality"); @@ -2035,136 +2167,139 @@ write_ppd( */ stp_describe_parameter(v, "Resolution", &desc); - num_opts = stp_string_list_count(desc.bounds.str); - if (!simplified || desc.p_level == STP_PARAMETER_LEVEL_BASIC) + if (desc.p_type == STP_PARAMETER_TYPE_STRING_LIST && desc.is_active) { - int is_color_opt = - stp_parameter_has_category_value(v, &desc, "Color", "Yes"); - int nocolor = skip_color && is_color_opt; - stp_string_list_t *res_list = stp_string_list_create(); - char res_name[64]; /* Plenty long enough for XXXxYYYdpi */ - int resolution_ok; - int tmp_xdpi, tmp_ydpi; - - if (is_color_opt) - gzprintf(fp, "*ColorKeyWords: \"Resolution\"\n"); - gzprintf(fp, "*OpenUI *Resolution/%s: PickOne\n", _("Resolution")); - if (num_opts > 3) - gzputs(fp, "*OPOptionHints Resolution: \"resolution radiobuttons\"\n"); - else - gzputs(fp, "*OPOptionHints Resolution: \"resolution dropdown\"\n"); - gzputs(fp, "*OrderDependency: 10 AnySetup *Resolution\n"); - gzprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", - desc.name, desc.p_type, desc.is_mandatory, - desc.p_class, desc.p_level, desc.channel, 0.0, 0.0, 0.0); - if (has_quality_parameter) + num_opts = stp_string_list_count(desc.bounds.str); + if (!simplified || desc.p_level == STP_PARAMETER_LEVEL_BASIC) { - stp_parameter_t desc1; - stp_clear_string_parameter(v, "Resolution"); - stp_describe_parameter(v, "Quality", &desc1); - stp_set_string_parameter(v, "Quality", desc1.deflt.str); - stp_parameter_description_destroy(&desc1); - stp_describe_resolution(v, &xdpi, &ydpi); - stp_clear_string_parameter(v, "Quality"); - tmp_xdpi = xdpi; - while (tmp_xdpi > MAXIMUM_SAFE_PPD_X_RESOLUTION) - tmp_xdpi /= 2; - tmp_ydpi = ydpi; - while (tmp_ydpi > MAXIMUM_SAFE_PPD_Y_RESOLUTION) - tmp_ydpi /= 2; - if (tmp_ydpi < tmp_xdpi) - tmp_xdpi = tmp_ydpi; - /* - Make the default resolution look like an almost square resolution - so that applications using it will be less likely to generate - excess resolution. However, make the hardware resolution - match the printer default. - */ - (void) snprintf(res_name, 63, "%dx%ddpi", tmp_xdpi + 1, tmp_xdpi); - default_resolution = stp_strdup(res_name); - stp_string_list_add_string(res_list, res_name, res_name); - gzprintf(fp, "*DefaultResolution: %s\n", res_name); - gzprintf(fp, "*StpDefaultResolution: %s\n", res_name); - gzprintf(fp, "*Resolution %s/%s:\t\"<</HWResolution[%d %d]>>setpagedevice\"\n", - res_name, _("Automatic"), xdpi, ydpi); - gzprintf(fp, "*StpResolutionMap: %s %s\n", res_name, "None"); - } - else - { - stp_set_string_parameter(v, "Resolution", desc.deflt.str); - stp_describe_resolution(v, &xdpi, &ydpi); - - if (xdpi == ydpi) - (void) snprintf(res_name, 63, "%ddpi", xdpi); - else - (void) snprintf(res_name, 63, "%dx%ddpi", xdpi, ydpi); - gzprintf(fp, "*DefaultResolution: %s\n", res_name); - gzprintf(fp, "*StpDefaultResolution: %s\n", res_name); - /* - * We need to add this to the resolution list here so that - * some non-default resolution won't wind up with the - * default resolution name - */ - stp_string_list_add_string(res_list, res_name, res_name); - } + int is_color_opt = + stp_parameter_has_category_value(v, &desc, "Color", "Yes"); + int nocolor = skip_color && is_color_opt; + stp_string_list_t *res_list = stp_string_list_create(); + char res_name[64]; /* Plenty long enough for XXXxYYYdpi */ + int resolution_ok; + int tmp_xdpi, tmp_ydpi; - stp_clear_string_parameter(v, "Quality"); - for (i = 0; i < num_opts; i ++) - { - /* - * Strip resolution name to its essentials... - */ - opt = stp_string_list_param(desc.bounds.str, i); - stp_set_string_parameter(v, "Resolution", opt->name); - stp_describe_resolution(v, &xdpi, &ydpi); + if (is_color_opt) + gpprintf(fp, "*ColorKeyWords: \"Resolution\"\n"); + gpprintf(fp, "*OpenUI *Resolution/%s: PickOne\n", _("Resolution")); + if (num_opts > 3) + gpputs(fp, "*OPOptionHints Resolution: \"resolution radiobuttons\"\n"); + else + gpputs(fp, "*OPOptionHints Resolution: \"resolution dropdown\"\n"); + gpputs(fp, "*OrderDependency: 10 AnySetup *Resolution\n"); + gpprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", + desc.name, desc.p_type, desc.is_mandatory, + desc.p_class, desc.p_level, desc.channel, 0.0, 0.0, 0.0); + if (has_quality_parameter) + { + stp_parameter_t desc1; + stp_clear_string_parameter(v, "Resolution"); + stp_describe_parameter(v, "Quality", &desc1); + stp_set_string_parameter(v, "Quality", desc1.deflt.str); + stp_parameter_description_destroy(&desc1); + stp_describe_resolution(v, &xdpi, &ydpi); + stp_clear_string_parameter(v, "Quality"); + tmp_xdpi = xdpi; + while (tmp_xdpi > MAXIMUM_SAFE_PPD_X_RESOLUTION) + tmp_xdpi /= 2; + tmp_ydpi = ydpi; + while (tmp_ydpi > MAXIMUM_SAFE_PPD_Y_RESOLUTION) + tmp_ydpi /= 2; + if (tmp_ydpi < tmp_xdpi) + tmp_xdpi = tmp_ydpi; + /* + Make the default resolution look like an almost square resolution + so that applications using it will be less likely to generate + excess resolution. However, make the hardware resolution + match the printer default. + */ + (void) snprintf(res_name, 63, "%dx%ddpi", tmp_xdpi + 1, tmp_xdpi); + default_resolution = stp_strdup(res_name); + stp_string_list_add_string(res_list, res_name, res_name); + gpprintf(fp, "*DefaultResolution: %s\n", res_name); + gpprintf(fp, "*StpDefaultResolution: %s\n", res_name); + gpprintf(fp, "*Resolution %s/%s:\t\"<</HWResolution[%d %d]>>setpagedevice\"\n", + res_name, _("Automatic"), xdpi, ydpi); + gpprintf(fp, "*StpResolutionMap: %s %s\n", res_name, "None"); + } + else + { + stp_set_string_parameter(v, "Resolution", desc.deflt.str); + stp_describe_resolution(v, &xdpi, &ydpi); - /* This should only happen with a "None" resolution */ - if (xdpi == -1 || ydpi == -1) - continue; + if (xdpi == ydpi) + (void) snprintf(res_name, 63, "%ddpi", xdpi); + else + (void) snprintf(res_name, 63, "%dx%ddpi", xdpi, ydpi); + gpprintf(fp, "*DefaultResolution: %s\n", res_name); + gpprintf(fp, "*StpDefaultResolution: %s\n", res_name); + /* + * We need to add this to the resolution list here so that + * some non-default resolution won't wind up with the + * default resolution name + */ + stp_string_list_add_string(res_list, res_name, res_name); + } - resolution_ok = 0; - tmp_xdpi = xdpi; - while (tmp_xdpi > MAXIMUM_SAFE_PPD_X_RESOLUTION) - tmp_xdpi /= 2; - tmp_ydpi = ydpi; - while (tmp_ydpi > MAXIMUM_SAFE_PPD_Y_RESOLUTION) - tmp_ydpi /= 2; - do + stp_clear_string_parameter(v, "Quality"); + for (i = 0; i < num_opts; i ++) { - if (tmp_xdpi == tmp_ydpi) - (void) snprintf(res_name, 63, "%ddpi", tmp_xdpi); - else - (void) snprintf(res_name, 63, "%dx%ddpi", tmp_xdpi, tmp_ydpi); - if ((!has_quality_parameter && - strcmp(opt->name, desc.deflt.str) == 0) || - !stp_string_list_is_present(res_list, res_name)) - { - resolution_ok = 1; - stp_string_list_add_string(res_list, res_name, opt->text); - } - else if (tmp_ydpi > tmp_xdpi && - tmp_ydpi < MAXIMUM_SAFE_PPD_Y_RESOLUTION) - /* Note that we're incrementing the *higher* resolution. - This will generate less aliasing, and apps that convert - down to a square resolution will do the right thing. */ - tmp_ydpi++; - else if (tmp_xdpi < MAXIMUM_SAFE_PPD_X_RESOLUTION) - tmp_xdpi++; - else + /* + * Strip resolution name to its essentials... + */ + opt = stp_string_list_param(desc.bounds.str, i); + stp_set_string_parameter(v, "Resolution", opt->name); + stp_describe_resolution(v, &xdpi, &ydpi); + + /* This should only happen with a "None" resolution */ + if (xdpi == -1 || ydpi == -1) + continue; + + resolution_ok = 0; + tmp_xdpi = xdpi; + while (tmp_xdpi > MAXIMUM_SAFE_PPD_X_RESOLUTION) tmp_xdpi /= 2; - } while (!resolution_ok); - stp_string_list_add_string(resolutions, res_name, opt->text); - gzprintf(fp, "*%sResolution %s/%s:\t\"<</HWResolution[%d %d]/cupsCompression %d>>setpagedevice\"\n", - nocolor && strcmp(opt->name, desc.deflt.str) != 0 ? "?" : "", - res_name, stp_i18n_lookup(po, opt->text), xdpi, ydpi, i + 1); - if (strcmp(res_name, opt->name) != 0) - gzprintf(fp, "*StpResolutionMap: %s %s\n", res_name, opt->name); - } + tmp_ydpi = ydpi; + while (tmp_ydpi > MAXIMUM_SAFE_PPD_Y_RESOLUTION) + tmp_ydpi /= 2; + do + { + if (tmp_xdpi == tmp_ydpi) + (void) snprintf(res_name, 63, "%ddpi", tmp_xdpi); + else + (void) snprintf(res_name, 63, "%dx%ddpi", tmp_xdpi, tmp_ydpi); + if ((!has_quality_parameter && + strcmp(opt->name, desc.deflt.str) == 0) || + !stp_string_list_is_present(res_list, res_name)) + { + resolution_ok = 1; + stp_string_list_add_string(res_list, res_name, opt->text); + } + else if (tmp_ydpi > tmp_xdpi && + tmp_ydpi < MAXIMUM_SAFE_PPD_Y_RESOLUTION) + /* Note that we're incrementing the *higher* resolution. + This will generate less aliasing, and apps that convert + down to a square resolution will do the right thing. */ + tmp_ydpi++; + else if (tmp_xdpi < MAXIMUM_SAFE_PPD_X_RESOLUTION) + tmp_xdpi++; + else + tmp_xdpi /= 2; + } while (!resolution_ok); + stp_string_list_add_string(resolutions, res_name, opt->text); + gpprintf(fp, "*%sResolution %s/%s:\t\"<</HWResolution[%d %d]/cupsCompression %d>>setpagedevice\"\n", + nocolor && strcmp(opt->name, desc.deflt.str) != 0 ? "?" : "", + res_name, stp_i18n_lookup(po, opt->text), xdpi, ydpi, i + 1); + if (strcmp(res_name, opt->name) != 0) + gpprintf(fp, "*StpResolutionMap: %s %s\n", res_name, opt->name); + } - stp_string_list_destroy(res_list); - stp_clear_string_parameter(v, "Resolution"); - gzputs(fp, "*CloseUI: *Resolution\n\n"); + stp_string_list_destroy(res_list); + stp_clear_string_parameter(v, "Resolution"); + gpputs(fp, "*CloseUI: *Resolution\n\n"); + } } stp_parameter_description_destroy(&desc); @@ -2172,14 +2307,14 @@ write_ppd( stp_describe_parameter(v, "OutputOrder", &desc); if (desc.p_type == STP_PARAMETER_TYPE_STRING_LIST) { - gzprintf(fp, "*OpenUI *OutputOrder/%s: PickOne\n", _("Output Order")); - gzputs(fp, "*OPOptionHints OutputOrder: \"radiobuttons\"\n"); - gzputs(fp, "*OrderDependency: 10 AnySetup *OutputOrder\n"); - gzprintf(fp, "*DefaultOutputOrder: %s\n", desc.deflt.str); - gzprintf(fp, "*StpDefaultOutputOrder: %s\n", desc.deflt.str); - gzprintf(fp, "*OutputOrder Normal/%s: \"\"\n", _("Normal")); - gzprintf(fp, "*OutputOrder Reverse/%s: \"\"\n", _("Reverse")); - gzputs(fp, "*CloseUI: *OutputOrder\n\n"); + gpprintf(fp, "*OpenUI *OutputOrder/%s: PickOne\n", _("Output Order")); + gpputs(fp, "*OPOptionHints OutputOrder: \"radiobuttons\"\n"); + gpputs(fp, "*OrderDependency: 10 AnySetup *OutputOrder\n"); + gpprintf(fp, "*DefaultOutputOrder: %s\n", desc.deflt.str); + gpprintf(fp, "*StpDefaultOutputOrder: %s\n", desc.deflt.str); + gpprintf(fp, "*OutputOrder Normal/%s: \"\"\n", _("Normal")); + gpprintf(fp, "*OutputOrder Reverse/%s: \"\"\n", _("Reverse")); + gpputs(fp, "*CloseUI: *OutputOrder\n\n"); } stp_parameter_description_destroy(&desc); @@ -2198,41 +2333,41 @@ write_ppd( int is_color_opt = stp_parameter_has_category_value(v, &desc, "Color", "Yes"); if (is_color_opt) - gzprintf(fp, "*ColorKeyWords: \"InputSlot\"\n"); - gzprintf(fp, "*OpenUI *Duplex/%s: PickOne\n", _("2-Sided Printing")); - gzputs(fp, "*OPOptionHints Duplex: \"radiobuttons\"\n"); - gzputs(fp, "*OrderDependency: 10 AnySetup *Duplex\n"); - gzprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", + gpprintf(fp, "*ColorKeyWords: \"InputSlot\"\n"); + gpprintf(fp, "*OpenUI *Duplex/%s: PickOne\n", _("2-Sided Printing")); + gpputs(fp, "*OPOptionHints Duplex: \"radiobuttons\"\n"); + gpputs(fp, "*OrderDependency: 10 AnySetup *Duplex\n"); + gpprintf(fp, "*StpStp%s: %d %d %d %d %d %.3f %.3f %.3f\n", desc.name, desc.p_type, desc.is_mandatory, desc.p_class, desc.p_level, desc.channel, 0.0, 0.0, 0.0); - gzprintf(fp, "*DefaultDuplex: %s\n", desc.deflt.str); - gzprintf(fp, "*StpDefaultDuplex: %s\n", desc.deflt.str); + gpprintf(fp, "*DefaultDuplex: %s\n", desc.deflt.str); + gpprintf(fp, "*StpDefaultDuplex: %s\n", desc.deflt.str); for (i = 0; i < num_opts; i++) { opt = stp_string_list_param(desc.bounds.str, i); if (strcmp(opt->name, "None") == 0) - gzprintf(fp, "*Duplex %s/%s: \"<</Duplex false>>setpagedevice\"\n", opt->name, stp_i18n_lookup(po, opt->text)); + gpprintf(fp, "*Duplex %s/%s: \"<</Duplex false>>setpagedevice\"\n", opt->name, stp_i18n_lookup(po, opt->text)); else if (strcmp(opt->name, "DuplexNoTumble") == 0) - gzprintf(fp, "*Duplex %s/%s: \"<</Duplex true/Tumble false>>setpagedevice\"\n", opt->name, stp_i18n_lookup(po, opt->text)); + gpprintf(fp, "*Duplex %s/%s: \"<</Duplex true/Tumble false>>setpagedevice\"\n", opt->name, stp_i18n_lookup(po, opt->text)); else if (strcmp(opt->name, "DuplexTumble") == 0) - gzprintf(fp, "*Duplex %s/%s: \"<</Duplex true/Tumble true>>setpagedevice\"\n", opt->name, stp_i18n_lookup(po, opt->text)); + gpprintf(fp, "*Duplex %s/%s: \"<</Duplex true/Tumble true>>setpagedevice\"\n", opt->name, stp_i18n_lookup(po, opt->text)); } - gzputs(fp, "*CloseUI: *Duplex\n\n"); + gpputs(fp, "*CloseUI: *Duplex\n\n"); } } stp_parameter_description_destroy(&desc); - gzprintf(fp, "*OpenUI *StpiShrinkOutput/%s: PickOne\n", + gpprintf(fp, "*OpenUI *StpiShrinkOutput/%s: PickOne\n", _("Shrink Page If Necessary to Fit Borders")); - gzputs(fp, "*OPOptionHints StpiShrinkOutput: \"radiobuttons\"\n"); - gzputs(fp, "*OrderDependency: 10 AnySetup *StpiShrinkOutput\n"); - gzputs(fp, "*DefaultStpiShrinkOutput: Shrink\n"); - gzputs(fp, "*StpDefaultStpiShrinkOutput: Shrink\n"); - gzprintf(fp, "*StpiShrinkOutput %s/%s: \"\"\n", "Shrink", _("Shrink (print the whole page)")); - gzprintf(fp, "*StpiShrinkOutput %s/%s: \"\"\n", "Crop", _("Crop (preserve dimensions)")); - gzprintf(fp, "*StpiShrinkOutput %s/%s: \"\"\n", "Expand", _("Expand (use maximum page area)")); - gzputs(fp, "*CloseUI: *StpiShrinkOutput\n\n"); + gpputs(fp, "*OPOptionHints StpiShrinkOutput: \"radiobuttons\"\n"); + gpputs(fp, "*OrderDependency: 10 AnySetup *StpiShrinkOutput\n"); + gpputs(fp, "*DefaultStpiShrinkOutput: Shrink\n"); + gpputs(fp, "*StpDefaultStpiShrinkOutput: Shrink\n"); + gpprintf(fp, "*StpiShrinkOutput %s/%s: \"\"\n", "Shrink", _("Shrink (print the whole page)")); + gpprintf(fp, "*StpiShrinkOutput %s/%s: \"\"\n", "Crop", _("Crop (preserve dimensions)")); + gpprintf(fp, "*StpiShrinkOutput %s/%s: \"\"\n", "Expand", _("Expand (use maximum page area)")); + gpputs(fp, "*CloseUI: *StpiShrinkOutput\n\n"); param_list = stp_get_parameter_list(v); @@ -2281,10 +2416,10 @@ write_ppd( { opt = stp_string_list_param(desc.bounds.str, i); if (strcmp(opt->name, "None") != 0) - gzprintf(fp, "*APPrinterPreset %s/%s: \"*StpImageType %s\"\n", + gpprintf(fp, "*APPrinterPreset %s/%s: \"*StpImageType %s\"\n", opt->name, stp_i18n_lookup(po, opt->text), opt->name); } - gzputs(fp, "\n"); + gpputs(fp, "\n"); } } stp_parameter_description_destroy(&desc); @@ -2321,8 +2456,8 @@ write_ppd( stp_describe_parameter(v, "PageSize", &desc); num_opts = stp_string_list_count(desc.bounds.str); - gzprintf(fp, "*%s.Translation PageSize/%s: \"\"\n", lang, _("Media Size")); - gzprintf(fp, "*%s.Translation PageRegion/%s: \"\"\n", lang, _("Media Size")); + gpprintf(fp, "*%s.Translation PageSize/%s: \"\"\n", lang, _("Media Size")); + gpprintf(fp, "*%s.Translation PageRegion/%s: \"\"\n", lang, _("Media Size")); for (i = 0; i < num_opts; i++) { @@ -2347,8 +2482,8 @@ write_ppd( strcmp(opt->name, "Custom") != 0) continue; - gzprintf(fp, "*%s.PageSize %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); - gzprintf(fp, "*%s.PageRegion %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); + gpprintf(fp, "*%s.PageSize %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); + gpprintf(fp, "*%s.PageRegion %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); } stp_parameter_description_destroy(&desc); @@ -2357,16 +2492,16 @@ write_ppd( * Do we support color? */ - gzprintf(fp, "*%s.Translation ColorModel/%s: \"\"\n", lang, _("Color Model")); - gzprintf(fp, "*%s.ColorModel Gray/%s: \"\"\n", lang, _("Grayscale")); - gzprintf(fp, "*%s.ColorModel Black/%s: \"\"\n", lang, _("Inverted Grayscale")); + gpprintf(fp, "*%s.Translation ColorModel/%s: \"\"\n", lang, _("Color Model")); + gpprintf(fp, "*%s.ColorModel Gray/%s: \"\"\n", lang, _("Grayscale")); + gpprintf(fp, "*%s.ColorModel Black/%s: \"\"\n", lang, _("Inverted Grayscale")); if (printer_is_color) { - gzprintf(fp, "*%s.ColorModel RGB/%s: \"\"\n", lang, _("RGB Color")); - gzprintf(fp, "*%s.ColorModel CMY/%s: \"\"\n", lang, _("CMY Color")); - gzprintf(fp, "*%s.ColorModel CMYK/%s: \"\"\n", lang, _("CMYK")); - gzprintf(fp, "*%s.ColorModel KCMY/%s: \"\"\n", lang, _("KCMY")); + gpprintf(fp, "*%s.ColorModel RGB/%s: \"\"\n", lang, _("RGB Color")); + gpprintf(fp, "*%s.ColorModel CMY/%s: \"\"\n", lang, _("CMY Color")); + gpprintf(fp, "*%s.ColorModel CMYK/%s: \"\"\n", lang, _("CMYK")); + gpprintf(fp, "*%s.ColorModel KCMY/%s: \"\"\n", lang, _("KCMY")); } if (!simplified) @@ -2374,9 +2509,9 @@ write_ppd( /* * 8 or 16 bit color (16 bit is slower) */ - gzprintf(fp, "*%s.Translation StpColorPrecision/%s: \"\"\n", lang, _("Color Precision")); - gzprintf(fp, "*%s.StpColorPrecision Normal/%s: \"\"\n", lang, _("Normal")); - gzprintf(fp, "*%s.StpColorPrecision Best/%s: \"\"\n", lang, _("Best")); + gpprintf(fp, "*%s.Translation StpColorPrecision/%s: \"\"\n", lang, _("Color Precision")); + gpprintf(fp, "*%s.StpColorPrecision Normal/%s: \"\"\n", lang, _("Normal")); + gpprintf(fp, "*%s.StpColorPrecision Best/%s: \"\"\n", lang, _("Best")); } /* @@ -2384,16 +2519,16 @@ write_ppd( */ stp_describe_parameter(v, "MediaType", &desc); - num_opts = stp_string_list_count(desc.bounds.str); - - if (num_opts > 0) + if (desc.p_type == STP_PARAMETER_TYPE_STRING_LIST && desc.is_active && + stp_string_list_count(desc.bounds.str) > 0) { - gzprintf(fp, "*%s.Translation MediaType/%s: \"\"\n", lang, _("Media Type")); + num_opts = stp_string_list_count(desc.bounds.str); + gpprintf(fp, "*%s.Translation MediaType/%s: \"\"\n", lang, _("Media Type")); for (i = 0; i < num_opts; i ++) { opt = stp_string_list_param(desc.bounds.str, i); - gzprintf(fp, "*%s.MediaType %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); + gpprintf(fp, "*%s.MediaType %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); } } stp_parameter_description_destroy(&desc); @@ -2403,16 +2538,17 @@ write_ppd( */ stp_describe_parameter(v, "InputSlot", &desc); - num_opts = stp_string_list_count(desc.bounds.str); - if (num_opts > 0) + if (desc.p_type == STP_PARAMETER_TYPE_STRING_LIST && desc.is_active && + stp_string_list_count(desc.bounds.str) > 0) { - gzprintf(fp, "*%s.Translation InputSlot/%s: \"\"\n", lang, _("Media Source")); + num_opts = stp_string_list_count(desc.bounds.str); + gpprintf(fp, "*%s.Translation InputSlot/%s: \"\"\n", lang, _("Media Source")); for (i = 0; i < num_opts; i ++) { opt = stp_string_list_param(desc.bounds.str, i); - gzprintf(fp, "*%s.InputSlot %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); + gpprintf(fp, "*%s.InputSlot %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); } } stp_parameter_description_destroy(&desc); @@ -2424,12 +2560,12 @@ write_ppd( stp_describe_parameter(v, "Quality", &desc); if (desc.p_type == STP_PARAMETER_TYPE_STRING_LIST && desc.is_active) { - gzprintf(fp, "*%s.Translation StpQuality/%s: \"\"\n", lang, stp_i18n_lookup(po, desc.text)); + gpprintf(fp, "*%s.Translation StpQuality/%s: \"\"\n", lang, stp_i18n_lookup(po, desc.text)); num_opts = stp_string_list_count(desc.bounds.str); for (i = 0; i < num_opts; i++) { opt = stp_string_list_param(desc.bounds.str, i); - gzprintf(fp, "*%s.StpQuality %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); + gpprintf(fp, "*%s.StpQuality %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); } } stp_parameter_description_destroy(&desc); @@ -2439,19 +2575,19 @@ write_ppd( */ stp_describe_parameter(v, "Resolution", &desc); - num_opts = stp_string_list_count(resolutions); if (!simplified || desc.p_level == STP_PARAMETER_LEVEL_BASIC) { - gzprintf(fp, "*%s.Translation Resolution/%s: \"\"\n", lang, _("Resolution")); + gpprintf(fp, "*%s.Translation Resolution/%s: \"\"\n", lang, _("Resolution")); if (has_quality_parameter) - gzprintf(fp, "*%s.Resolution %s/%s: \"\"\n", lang, + gpprintf(fp, "*%s.Resolution %s/%s: \"\"\n", lang, default_resolution, _("Automatic")); + num_opts = stp_string_list_count(resolutions); for (i = 0; i < num_opts; i ++) { opt = stp_string_list_param(resolutions, i); - gzprintf(fp, "*%s.Resolution %s/%s: \"\"\n", lang, + gpprintf(fp, "*%s.Resolution %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); } } @@ -2465,9 +2601,9 @@ write_ppd( stp_describe_parameter(v, "OutputOrder", &desc); if (desc.p_type == STP_PARAMETER_TYPE_STRING_LIST) { - gzprintf(fp, "*%s.Translation OutputOrder/%s: \"\"\n", lang, _("Output Order")); - gzprintf(fp, "*%s.OutputOrder Normal/%s: \"\"\n", lang, _("Normal")); - gzprintf(fp, "*%s.OutputOrder Reverse/%s: \"\"\n", lang, _("Reverse")); + gpprintf(fp, "*%s.Translation OutputOrder/%s: \"\"\n", lang, _("Output Order")); + gpprintf(fp, "*%s.OutputOrder Normal/%s: \"\"\n", lang, _("Normal")); + gpprintf(fp, "*%s.OutputOrder Reverse/%s: \"\"\n", lang, _("Reverse")); } stp_parameter_description_destroy(&desc); @@ -2483,27 +2619,27 @@ write_ppd( num_opts = stp_string_list_count(desc.bounds.str); if (num_opts > 0) { - gzprintf(fp, "*%s.Translation Duplex/%s: \"\"\n", lang, _("2-Sided Printing")); + gpprintf(fp, "*%s.Translation Duplex/%s: \"\"\n", lang, _("2-Sided Printing")); for (i = 0; i < num_opts; i++) { opt = stp_string_list_param(desc.bounds.str, i); if (strcmp(opt->name, "None") == 0) - gzprintf(fp, "*%s.Duplex %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); + gpprintf(fp, "*%s.Duplex %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); else if (strcmp(opt->name, "DuplexNoTumble") == 0) - gzprintf(fp, "*%s.Duplex %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); + gpprintf(fp, "*%s.Duplex %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); else if (strcmp(opt->name, "DuplexTumble") == 0) - gzprintf(fp, "*%s.Duplex %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); + gpprintf(fp, "*%s.Duplex %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); } } } stp_parameter_description_destroy(&desc); - gzprintf(fp, "*%s.Translation StpiShrinkOutput/%s: \"\"\n", lang, + gpprintf(fp, "*%s.Translation StpiShrinkOutput/%s: \"\"\n", lang, _("Shrink Page If Necessary to Fit Borders")); - gzprintf(fp, "*%s.StpiShrinkOutput %s/%s: \"\"\n", lang, "Shrink", _("Shrink (print the whole page)")); - gzprintf(fp, "*%s.StpiShrinkOutput %s/%s: \"\"\n", lang, "Crop", _("Crop (preserve dimensions)")); - gzprintf(fp, "*%s.StpiShrinkOutput %s/%s: \"\"\n", lang, "Expand", _("Expand (use maximum page area)")); + gpprintf(fp, "*%s.StpiShrinkOutput %s/%s: \"\"\n", lang, "Shrink", _("Shrink (print the whole page)")); + gpprintf(fp, "*%s.StpiShrinkOutput %s/%s: \"\"\n", lang, "Crop", _("Crop (preserve dimensions)")); + gpprintf(fp, "*%s.StpiShrinkOutput %s/%s: \"\"\n", lang, "Expand", _("Expand (use maximum page area)")); param_list = stp_get_parameter_list(v); @@ -2543,7 +2679,7 @@ write_ppd( { opt = stp_string_list_param(desc.bounds.str, i); if (strcmp(opt->name, "None") != 0) - gzprintf(fp, "*%s.APPrinterPreset %s/%s: \"*StpImageType %s\"\n", + gpprintf(fp, "*%s.APPrinterPreset %s/%s: \"*StpImageType %s\"\n", lang, opt->name, opt->text, opt->name); } } @@ -2561,7 +2697,7 @@ write_ppd( */ print_standard_fonts(fp); - gzprintf(fp, "\n*%% End of %s\n", filename); + gpprintf(fp, "\n*%% End of %s\n", filename); stp_vars_destroy(v); @@ -2570,5 +2706,5 @@ write_ppd( /* - * End of "$Id: genppd.c,v 1.192 2012/03/25 17:54:32 rlk Exp $". + * End of "$Id: genppd.c,v 1.196 2014/02/13 02:30:27 rlk Exp $". */ diff --git a/src/cups/i18n.c b/src/cups/i18n.c index 81c4488..ee3e749 100644 --- a/src/cups/i18n.c +++ b/src/cups/i18n.c @@ -1,5 +1,5 @@ /* - * "$Id: i18n.c,v 1.8 2009/04/11 19:05:12 rlk Exp $" + * "$Id: i18n.c,v 1.9 2013/12/14 19:23:58 rlk Exp $" * * Internationalization functions for CUPS drivers. * @@ -244,12 +244,12 @@ stp_i18n_load(const char *locale) /* I - Locale name */ */ stpi_unquote(utf8str); - stp_string_list_add_string(po, id, utf8str); + stp_string_list_add_string_unsafe(po, id, utf8str); } else { stpi_unquote(str); - stp_string_list_add_string(po, id, str); + stp_string_list_add_string_unsafe(po, id, str); } } else if (!id[0] && str[0] && !ic) @@ -362,12 +362,12 @@ stp_i18n_load(const char *locale) /* I - Locale name */ */ stpi_unquote(utf8str); - stp_string_list_add_string(po, id, utf8str); + stp_string_list_add_string_unsafe(po, id, utf8str); } else { stpi_unquote(str); - stp_string_list_add_string(po, id, str); + stp_string_list_add_string_unsafe(po, id, str); } } @@ -479,5 +479,5 @@ stpi_unquote(char *s) /* IO - Original string */ /* - * End of "$Id: i18n.c,v 1.8 2009/04/11 19:05:12 rlk Exp $". + * End of "$Id: i18n.c,v 1.9 2013/12/14 19:23:58 rlk Exp $". */ diff --git a/src/cups/kodak1400_print.c b/src/cups/kodak1400_print.c new file mode 100644 index 0000000..bc1d0d0 --- /dev/null +++ b/src/cups/kodak1400_print.c @@ -0,0 +1,764 @@ +/* + * Kodak Professional 1400/805 CUPS backend -- libusb-1.0 version + * + * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org> + * + * The latest version of this program can be found at: + * + * http://git.shaftnet.org/cgit/selphy_print.git + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * [http://www.gnu.org/licenses/gpl-2.0.html] + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <signal.h> + +#include "backend_common.h" + +/* Program states */ +enum { + S_IDLE = 0, + S_PRINTER_READY_Y, + S_PRINTER_SENT_Y, + S_PRINTER_READY_M, + S_PRINTER_SENT_M, + S_PRINTER_READY_C, + S_PRINTER_SENT_C, + S_PRINTER_READY_L, + S_PRINTER_SENT_L, + S_PRINTER_DONE, + S_FINISHED, +}; + +#define CMDBUF_LEN 96 +#define READBACK_LEN 8 + +/* File header */ +struct kodak1400_hdr { + uint8_t hdr[4]; + uint16_t columns; + uint16_t null1; + uint16_t rows; + uint16_t null2; + uint32_t planesize; + uint32_t null3; + uint8_t matte; + uint8_t laminate; + uint8_t unk1; /* Always 0x01 */ + uint8_t lam_strength; + uint8_t null4[12]; +} __attribute__((packed)); + + +/* Private data stucture */ +struct kodak1400_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + + struct kodak1400_hdr hdr; + uint8_t *plane_r; + uint8_t *plane_g; + uint8_t *plane_b; +}; + +static int send_plane(struct kodak1400_ctx *ctx, + uint8_t planeno, uint8_t *planedata, + uint8_t *cmdbuf) +{ + uint16_t temp16; + int ret; + + if (planeno != 1) { + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x74; + cmdbuf[2] = 0x00; + cmdbuf[3] = 0x50; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, CMDBUF_LEN))) + return ret; + } + + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x5a; + cmdbuf[2] = 0x54; + cmdbuf[3] = planeno; + + if (planedata) { + temp16 = htons(ctx->hdr.columns); + memcpy(cmdbuf+7, &temp16, 2); + temp16 = htons(ctx->hdr.rows); + memcpy(cmdbuf+9, &temp16, 2); + } + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, CMDBUF_LEN))) + return ret; + + if (planedata) { + int i; + for (i = 0 ; i < ctx->hdr.rows ; i++) { + if ((ret = send_data(ctx->dev, ctx->endp_down, + planedata + i * ctx->hdr.columns, + ctx->hdr.columns))) + return ret; + } + } + + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x74; + cmdbuf[2] = 0x01; + cmdbuf[3] = 0x50; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, CMDBUF_LEN))) + return ret; + + return 0; +} + +#define UPDATE_SIZE 1552 +static int kodak1400_set_tonecurve(struct kodak1400_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[8]; + uint8_t respbuf[64]; + int ret = 0, num = 0; + + INFO("Set Tone Curve from '%s'\n", fname); + + uint16_t *data = malloc(UPDATE_SIZE); + + /* 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) != UPDATE_SIZE) { + ret = -2; + goto done; + } + close(tc_fd); + + /* Byteswap data to printer's format */ + for (ret = 0; ret < (UPDATE_SIZE-16)/2 ; ret++) { + data[ret] = cpu_to_le16(be16_to_cpu(data[ret])); + } + /* Null-terminate */ + memset(data + (UPDATE_SIZE-16)/2, 0, 16); + + /* Clear tables */ + memset(cmdbuf, 0, sizeof(cmdbuf)); + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0xa2; + if ((ret = send_data(dev, endp_down, + cmdbuf, 2))) { + ret = -3; + goto done; + } + + ret = read_data(dev, endp_up, + respbuf, sizeof(respbuf), &num); + + if (ret < 0) + goto done; + if (num != 8) { + ERROR("Short Read! (%d/%d)\n", num, 8); + ret = -4; + goto done; + } + if (respbuf[1] != 0x01) { + ERROR("Received unexpected response\n"); + ret = -5; + goto done; + } + + /* Set up the update command */ + memset(cmdbuf, 0, sizeof(cmdbuf)); + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0xa0; + cmdbuf[2] = 0x02; + cmdbuf[3] = 0x03; + cmdbuf[4] = 0x06; + cmdbuf[5] = 0x10; /* 06 10 == UPDATE_SIZE */ + if ((ret = send_data(dev, endp_down, + cmdbuf, 6))) + goto done; + + /* Send the payload over */ + if ((ret = send_data(dev, endp_down, + (uint8_t *) data, UPDATE_SIZE))) + goto done; + + /* get the response */ + ret = read_data(dev, endp_up, + respbuf, sizeof(respbuf), &num); + + if (ret < 0) + goto done; + if (num != 8) { + ERROR("Short Read! (%d/%d)\n", num, 8); + ret = -6; + goto done; + } + if (respbuf[1] != 0x00) { + ERROR("Received unexpected response!\n"); + ret = -7; + goto done; + } + +done: + free(data); + + return ret; +} + +static void kodak1400_cmdline(void) +{ + DEBUG("\t\t[ -C filename ] # Set tone curve\n"); +} + +int kodak1400_cmdline_arg(void *vctx, int argc, char **argv) +{ + struct kodak1400_ctx *ctx = vctx; + int i, j = 0; + + /* Reset arg parsing */ + optind = 1; + opterr = 0; + while ((i = getopt(argc, argv, "C:")) >= 0) { + switch(i) { + case 'C': + if (ctx) { + j = kodak1400_set_tonecurve(ctx, optarg); + break; + } + return 1; + default: + break; /* Ignore completely */ + } + + if (j) return j; + } + + return 0; +} + +static void *kodak1400_init(void) +{ + struct kodak1400_ctx *ctx = malloc(sizeof(struct kodak1400_ctx)); + if (!ctx) + return NULL; + memset(ctx, 0, sizeof(struct kodak1400_ctx)); + + return ctx; +} + +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; + + UNUSED(jobid); + + ctx->dev = dev; + ctx->endp_up = endp_up; + ctx->endp_down = endp_down; +} + + +static void kodak1400_teardown(void *vctx) { + struct kodak1400_ctx *ctx = vctx; + + if (!ctx) + return; + + if (ctx->plane_r) + free(ctx->plane_r); + if (ctx->plane_g) + free(ctx->plane_g); + if (ctx->plane_b) + free(ctx->plane_b); + free(ctx); +} + +static int kodak1400_read_parse(void *vctx, int data_fd) { + struct kodak1400_ctx *ctx = vctx; + int i, ret; + + if (!ctx) + return 1; + + if (ctx->plane_r) { + free(ctx->plane_r); + ctx->plane_r = NULL; + } + if (ctx->plane_g) { + free(ctx->plane_g); + ctx->plane_g = NULL; + } + if (ctx->plane_b) { + free(ctx->plane_b); + ctx->plane_b = NULL; + } + + /* 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; + ERROR("Read failed (%d/%d/%d)\n", + ret, 0, (int)sizeof(ctx->hdr)); + perror("ERROR: Read failed"); + return ret; + } + if (ctx->hdr.hdr[0] != 'P' || + ctx->hdr.hdr[1] != 'G' || + ctx->hdr.hdr[2] != 'H' || + ctx->hdr.hdr[3] != 'D') { + ERROR("Unrecognized data format!\n"); + return 1; + } + ctx->hdr.planesize = le32_to_cpu(ctx->hdr.planesize); + ctx->hdr.rows = le16_to_cpu(ctx->hdr.rows); + ctx->hdr.columns = le16_to_cpu(ctx->hdr.columns); + + /* Set up plane data */ + ctx->plane_r = malloc(ctx->hdr.planesize); + ctx->plane_g = malloc(ctx->hdr.planesize); + ctx->plane_b = malloc(ctx->hdr.planesize); + if (!ctx->plane_r || !ctx->plane_g || !ctx->plane_b) { + ERROR("Memory allocation failure!\n"); + return 1; + } + for (i = 0 ; i < ctx->hdr.rows ; i++) { + int j; + uint8_t *ptr; + for (j = 0 ; j < 3 ; j++) { + int remain; + if (j == 0) + ptr = ctx->plane_r + i * ctx->hdr.columns; + else if (j == 1) + ptr = ctx->plane_g + i * ctx->hdr.columns; + else if (j == 2) + ptr = ctx->plane_b + i * ctx->hdr.columns; + + remain = ctx->hdr.columns; + do { + ret = read(data_fd, ptr, remain); + if (ret < 0) { + ERROR("Read failed (%d/%d/%d) (%d/%d @ %d)\n", + ret, remain, ctx->hdr.columns, + i, ctx->hdr.rows, j); + perror("ERROR: Read failed"); + return ret; + } + ptr += ret; + remain -= ret; + } while (remain); + } + } + + return 0; +} + +static uint8_t idle_data[READBACK_LEN] = { 0xe4, 0x72, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 }; + +static int kodak1400_main_loop(void *vctx, int copies) { + struct kodak1400_ctx *ctx = vctx; + + uint8_t rdbuf[READBACK_LEN], rdbuf2[READBACK_LEN]; + uint8_t cmdbuf[CMDBUF_LEN]; + int last_state = -1, state = S_IDLE; + int num, ret; + uint16_t temp16; + +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); + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x72; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, CMDBUF_LEN))) + 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 (memcmp(rdbuf, rdbuf2, READBACK_LEN)) { + memcpy(rdbuf2, rdbuf, READBACK_LEN); + } else if (state == last_state) { + sleep(1); + } + last_state = state; + + /* Error handling */ + if (rdbuf[4] || rdbuf[5]) { + ERROR("Error code reported by printer (%02x/%02x), terminating print\n", + rdbuf[4], rdbuf[5]); + return 1; + } + + fflush(stderr); + + switch (state) { + case S_IDLE: + INFO("Printing started\n"); + + /* Send reset/attention */ + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x1b; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, CMDBUF_LEN))) + return ret; + + /* Send page setup */ + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x5a; + cmdbuf[2] = 0x53; + temp16 = be16_to_cpu(ctx->hdr.columns); + memcpy(cmdbuf+3, &temp16, 2); + temp16 = be16_to_cpu(ctx->hdr.rows); + memcpy(cmdbuf+5, &temp16, 2); + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, CMDBUF_LEN))) + return ret; + + /* Send lamination toggle? */ + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x59; + cmdbuf[2] = ctx->hdr.matte; // ??? + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, CMDBUF_LEN))) + return ret; + + /* Send matte toggle */ + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x60; + cmdbuf[2] = ctx->hdr.laminate; + + if (send_data(ctx->dev, ctx->endp_down, + cmdbuf, CMDBUF_LEN)) + return ret; + + /* Send lamination strength */ + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x62; + cmdbuf[2] = ctx->hdr.lam_strength; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, CMDBUF_LEN))) + return ret; + + /* Send unknown */ + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x61; + cmdbuf[2] = ctx->hdr.unk1; // ??? + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, CMDBUF_LEN))) + return ret; + + state = S_PRINTER_READY_Y; + break; + case S_PRINTER_READY_Y: + INFO("Sending YELLOW plane\n"); + if ((ret = send_plane(ctx, 1, ctx->plane_b, cmdbuf))) + return ret; + state = S_PRINTER_SENT_Y; + break; + case S_PRINTER_SENT_Y: + if (!memcmp(rdbuf, idle_data, READBACK_LEN)) + state = S_PRINTER_READY_M; + break; + case S_PRINTER_READY_M: + INFO("Sending MAGENTA plane\n"); + if ((ret = send_plane(ctx, 2, ctx->plane_g, cmdbuf))) + return ret; + state = S_PRINTER_SENT_M; + break; + case S_PRINTER_SENT_M: + if (!memcmp(rdbuf, idle_data, READBACK_LEN)) + state = S_PRINTER_READY_C; + break; + case S_PRINTER_READY_C: + INFO("Sending CYAN plane\n"); + if ((ret = send_plane(ctx, 3, ctx->plane_r, cmdbuf))) + return ret; + state = S_PRINTER_SENT_C; + break; + case S_PRINTER_SENT_C: + if (!memcmp(rdbuf, idle_data, READBACK_LEN)) { + if (ctx->hdr.laminate) + state = S_PRINTER_READY_L; + else + state = S_PRINTER_DONE; + } + break; + case S_PRINTER_READY_L: + INFO("Laminating page\n"); + if ((ret = send_plane(ctx, 4, NULL, cmdbuf))) + return ret; + state = S_PRINTER_SENT_L; + break; + case S_PRINTER_SENT_L: + if (!memcmp(rdbuf, idle_data, READBACK_LEN)) + state = S_PRINTER_DONE; + break; + case S_PRINTER_DONE: + INFO("Cleaning up\n"); + /* Cleanup */ + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x74; + cmdbuf[2] = 0x00; + cmdbuf[3] = 0x50; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, CMDBUF_LEN))) + return ret; + + state = S_FINISHED; + break; + default: + break; + }; + + if (state != S_FINISHED) + goto top; + + /* Clean up */ + if (terminate) + copies = 1; + + INFO("Print complete (%d copies remaining)\n", copies - 1); + + if (copies && --copies) { + state = S_IDLE; + goto top; + } + + return 0; +} + +/* Exported */ +#define USB_VID_KODAK 0x040A +#define USB_PID_KODAK_1400 0x4022 +#define USB_PID_KODAK_805 0x4034 + +struct dyesub_backend kodak1400_backend = { + .name = "Kodak 1400/805", + .version = "0.31", + .uri_prefix = "kodak1400", + .cmdline_usage = kodak1400_cmdline, + .cmdline_arg = kodak1400_cmdline_arg, + .init = kodak1400_init, + .attach = kodak1400_attach, + .teardown = kodak1400_teardown, + .read_parse = kodak1400_read_parse, + .main_loop = kodak1400_main_loop, + .devices = { + { USB_VID_KODAK, USB_PID_KODAK_1400, P_KODAK_1400_805, "Kodak"}, + { USB_VID_KODAK, USB_PID_KODAK_805, P_KODAK_1400_805, "Kodak"}, + { 0, 0, 0, ""} + } +}; + +/* Kodak 1400/805 data format + + Spool file consists of 36-byte header followed by row-interleaved BGR data. + Native printer resolution is 2560 pixels per row, and 3010 or 3612 rows. + + Header: + + 50 47 48 44 "PGHD" + XX XX Number of columns, Little endian. Fixed at 2560. + 00 00 NULL + XX XX Number of rows, Little Endian + 00 00 NULL + XX XX XX XX Number of bytes per plane, Little Endian + 00 00 00 00 NULL + XX 00 Glossy, 01 Matte (Note: Kodak805 only supports Glossy) + XX 01 to laminate, 00 to not. + 01 Unkown, always set to 01 + XX Lamination Strength: + + 3c Glossy + 28 Matte +5 + 2e Matte +4 + 34 Matte +3 + 3a Matte +2 + 40 Matte +1 + 46 Matte + 52 Matte -1 + 5e Matte -2 + 6a Matte -3 + 76 Matte -4 + 82 Matte -5 + + 00 00 00 00 00 00 00 00 00 00 00 00 NULL + + ************************************************************************ + + The data format actually sent to the Kodak 1400 is rather different. + + All commands are null-padded to 96 bytes. + All readback values are 8 bytes long. + + Multi-byte numbers are sent BIG ENDIAN. + + Image data is sent via planes, one scanline per URB. + + <-- 1b 72 # Status query + --> e4 72 00 00 00 00 00 00 # Idle response + + <-- 1b 00 # Reset/attention? + <-- 1b 5a 53 0a 00 0b c2 # Setup (ie hdr.columns and hdr.rows) + <-- 1b 59 01 # ?? hdr.matte ? + <-- 1b 60 XX # hdr.lamination + <-- 1b 62 XX # hdr.lam_strength + <-- 1b 61 01 # ?? hdr.unk1 ? + + <-- 1b 5a 54 01 00 00 00 0a 00 0b c2 # start of plane 1 data + <-- row 1 + <-- row 2 + <-- row last + + <-- 1b 74 01 50 # ?? + + <-- 1b 72 # Status query + --> e4 72 00 00 00 00 50 59 # Printing plane 1 + [ repeats until...] + <-- 1b 72 # Status query + --> e4 72 00 00 40 00 50 59 # Paper loaded? + [ repeats until...] + <-- 1b 72 # Status query + --> e4 72 00 00 00 00 50 59 # Printing plane 1 + [ repeats until...] + <-- 1b 72 # Status query + --> e4 72 00 00 00 00 00 00 # Idle response + + <-- 1b 74 00 50 # ?? + <-- 1b 5a 54 02 00 00 00 0a 00 0b c2 # start of plane 2 data + <-- row 1 + <-- row 2 + <-- row last + <-- 1b 74 01 50 # ?? + + <-- 1b 72 # Status query + --> e4 72 00 00 00 00 50 4d # Printing plane 2 + [ repeats until...] + <-- 1b 72 # Status query + --> e4 72 00 00 00 00 00 00 # Idle response + + <-- 1b 74 00 50 # ?? + <-- 1b 5a 54 03 00 00 00 0a 00 0b c2 # start of plane 3 data + <-- row 1 + <-- row 2 + <-- row last + <-- 1b 74 01 50 # ?? + + <-- 1b 72 # Status query + --> e4 72 00 00 00 00 50 43 # Printing plane 3 + [ repeats until...] + <-- 1b 72 # Status query + --> e4 72 00 00 00 00 00 00 # Idle response + + ## this block is only present if lamination is used + + <-- 1b 74 00 50 # ?? + <-- 1b 5a 54 04 # start of lamination + <-- 1b 74 01 50 # ?? + + <-- 1b 72 # Status query + --> e4 72 00 00 00 00 50 50 # Laminating + [ repeats until...] + <-- 1b 72 # Status query + --> e4 72 00 00 00 00 00 00 # Idle response + + ## end lamination block + + <-- 1b 74 00 50 # ?? + + [[ DONE ]] + + Other readback codes seen: + + e4 72 00 00 10 00 50 59 -- ??? + 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] + e4 72 00 00 02 01 00 00 -- media off, error red. [out of paper] + e4 72 00 00 02 00 00 00 -- media off, error red. [out of paper] + e4 72 00 00 02 00 50 50 -- media on, error red. [paper jam while laminating] + + ********************************************* + Calibration data: + + <-- 1b a2 # ?? Reset cal tables? + --> 00 01 00 00 00 00 00 00 + + <-- 1b a0 02 03 06 10 # 06 10 == 1552 bytes aka the CAL data. + <-- cal data + + [[ Data is organized as three blocks of 512 bytes followed by + 16 NULL bytes. + + Each block appears to be 256 entries of 16-bit LE data, + so each input value is translated into a 16-bit number in the printer. + + Assuming blocks are ordered BGR. + + ]] + + --> 00 00 00 00 00 00 00 00 + +*/ diff --git a/src/cups/kodak605_print.c b/src/cups/kodak605_print.c new file mode 100644 index 0000000..08df8f1 --- /dev/null +++ b/src/cups/kodak605_print.c @@ -0,0 +1,618 @@ +/* + * Kodak 605 Photo Printer CUPS backend -- libusb-1.0 version + * + * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org> + * + * The latest version of this program can be found at: + * + * http://git.shaftnet.org/cgit/selphy_print.git + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * [http://www.gnu.org/licenses/gpl-2.0.html] + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <signal.h> + +#include "backend_common.h" + +#define USB_VID_KODAK 0x040A +#define USB_PID_KODAK_605 0x402E + +/* 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 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] */ +} __attribute__((packed)); + +#define CMDBUF_LEN 4 + +/* Private data stucture */ +struct kodak605_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + + struct kodak605_hdr hdr; + uint8_t *databuf; + int datalen; +}; + +/* Program states */ +enum { + S_IDLE = 0, + S_READY, + S_STARTED, + S_SENT_HDR, + S_SENT_DATA, + S_FINISHED, +}; + +#define READBACK_LEN 120 + +static void *kodak605_init(void) +{ + struct kodak605_ctx *ctx = malloc(sizeof(struct kodak605_ctx)); + if (!ctx) + return NULL; + memset(ctx, 0, sizeof(struct kodak605_ctx)); + + return ctx; +} + +static void kodak605_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +{ + struct kodak605_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); + +} + +static void kodak605_teardown(void *vctx) { + struct kodak605_ctx *ctx = vctx; + + if (!ctx) + return; + + if (ctx->databuf) + free(ctx->databuf); + free(ctx); +} + +static int kodak605_read_parse(void *vctx, int data_fd) { + struct kodak605_ctx *ctx = vctx; + int ret; + + if (!ctx) + return 1; + + if (ctx->databuf) { + free(ctx->databuf); + ctx->databuf = NULL; + } + + /* 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; + ERROR("Read failed (%d/%d/%d)\n", + ret, 0, (int)sizeof(ctx->hdr)); + perror("ERROR: Read failed"); + return ret; + } + + if (ctx->hdr.hdr[0] != 0x01 || + ctx->hdr.hdr[1] != 0x40 || + ctx->hdr.hdr[2] != 0x0a || + ctx->hdr.hdr[3] != 0x00) { + ERROR("Unrecognized data format!\n"); + return(1); + } + + ctx->datalen = le16_to_cpu(ctx->hdr.rows) * le16_to_cpu(ctx->hdr.columns) * 3; + ctx->databuf = malloc(ctx->datalen); + if (!ctx->databuf) { + ERROR("Memory allocation failure!\n"); + return 2; + } + + { + 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); + } + + return 0; +} + +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 1; + + /* Printer handles generating copies.. */ +#if 1 + ctx->hdr.copies = copies; + copies = 1; +#else + ctx->hdr.copies = 1; +#endif + +top: + if (state != last_state) { + if (dyesub_debug) + DEBUG("last_state %d new %d\n", last_state, state); + } + + if (pending) + goto skip_query; + + /* Send Status Query */ + 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 ret; + +skip_query: + /* Read in the printer status */ + ret = read_data(ctx->dev, ctx->endp_up, + rdbuf, READBACK_LEN, &num); + if (ret < 0) + return ret; + + if (num < 10) { + ERROR("Short read! (%d/%d)\n", num, 10); + return 4; + } + + if (num != 10 && num != 76 && num != 113) { + ERROR("Unexpected readback from printer (%d/%d from 0x%02x))\n", + num, READBACK_LEN, ctx->endp_up); + return ret; + } + + if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) { + memcpy(rdbuf2, rdbuf, READBACK_LEN); + } else if (state == last_state) { + sleep(1); + } + last_state = state; + + fflush(stderr); + + pending = 0; + + 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! + + INFO("Printing started; Sending init sequence\n"); + state = S_STARTED; + + break; + case S_STARTED: +#if 0 + if (rdbuf[0] != 0x01 || + rdbuf[2] != 0x00) + break; + + /* Aappears to depend on media */ + if (rdbuf[1] != 0x0b && + rdbuf[1] != 0x03) + break; +#endif + + INFO("Sending image header\n"); + if ((ret = send_data(ctx->dev, ctx->endp_down, + (uint8_t*)&ctx->hdr, sizeof(ctx->hdr)))) + return ret; + pending = 1; + state = S_SENT_HDR; + break; + case S_SENT_HDR: + INFO("Waiting for printer to accept data\n"); + if (rdbuf[0] != 0x01 || + rdbuf[6] == 0x00 || + num != 10) { + break; + } + INFO("Sending image data\n"); + if ((ret = send_data(ctx->dev, ctx->endp_down, + ctx->databuf, ctx->datalen))) + return ret; + + 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) { + break; + } +#endif + state = S_FINISHED; + break; + default: + break; + }; + + if (state != S_FINISHED) + goto top; + + /* Clean up */ + if (terminate) + copies = 1; + + INFO("Print complete (%d copies remaining)\n", copies - 1); + + if (copies && --copies) { + state = S_IDLE; + goto top; + } + + return 0; +} + +static int kodak605_get_status(struct kodak605_ctx *ctx) +{ + uint8_t cmdbuf[4]; + uint8_t rdbuf[76]; + + int ret, i, 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, 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; + } + + DEBUG("status: "); + for (i = 0 ; i < num ; i++) { + DEBUG2("%02x ", rdbuf[i]); + } + + return 0; +} + +static int kodak605_get_media(struct kodak605_ctx *ctx) +{ + uint8_t cmdbuf[4]; + uint8_t rdbuf[113]; + + int ret, i, 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; + } + + DEBUG("media: "); + for (i = 0 ; i < num ; i++) { + DEBUG2("%02x ", rdbuf[i]); + } + DEBUG("\n"); + + return 0; +} + +#define UPDATE_SIZE 1536 +static int kodak605_set_tonecurve(struct kodak605_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[16]; + int ret, num = 0; + + uint16_t *data = malloc(UPDATE_SIZE); + + INFO("Set Tone Curve from '%s'\n", fname); + + /* 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) != UPDATE_SIZE) { + ret = 4; + goto done; + } + close(tc_fd); + + /* Byteswap data to printer's format */ + for (ret = 0; ret < (UPDATE_SIZE/2) ; ret++) { + data[ret] = cpu_to_le16(be16_to_cpu(data[ret])); + } + + /* Initial Request */ + cmdbuf[0] = 0x04; + cmdbuf[1] = 0xc0; + cmdbuf[2] = 0x0a; + cmdbuf[3] = 0x00; + cmdbuf[4] = 0x03; + cmdbuf[5] = 0x01; + cmdbuf[6] = 0x00; + cmdbuf[7] = 0x00; + cmdbuf[8] = 0x00; + cmdbuf[9] = 0x00; + cmdbuf[10] = 0x00; /* 00 06 in LE means 1536 bytes */ + cmdbuf[11] = 0x06; + cmdbuf[12] = 0x00; + cmdbuf[13] = 0x00; + + if ((ret = send_data(dev, endp_down, + cmdbuf, 14))) + goto done; + + /* Get response back */ + ret = read_data(dev, endp_up, + respbuf, sizeof(respbuf), &num); + if (ret < 0) + goto done; + + if (num != 10) { + ERROR("Short Read! (%d/%d)\n", num, 10); + ret = 4; + goto done; + } + + /* Send the data over! */ + ret = send_data(dev, endp_up, + (uint8_t*)data, sizeof(data)); + + done: + /* We're done */ + free(data); + return ret; +} + + +static void kodak605_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"); +} + +static int kodak605_cmdline_arg(void *vctx, int argc, char **argv) +{ + struct kodak605_ctx *ctx = vctx; + int i, j = 0; + + /* Reset arg parsing */ + optind = 1; + opterr = 0; + while ((i = getopt(argc, argv, "C:ms")) >= 0) { + switch(i) { + case 'C': + if (ctx) { + j = kodak605_set_tonecurve(ctx, optarg); + break; + } + return 1; + case 'm': + if (ctx) { + j = kodak605_get_media(ctx); + break; + } + return 1; + case 's': + if (ctx) { + j = kodak605_get_status(ctx); + break; + } + return 1; + default: + break; /* Ignore completely */ + } + + if (j) return j; + } + + return 0; +} + +/* Exported */ +struct dyesub_backend kodak605_backend = { + .name = "Kodak 605", + .version = "0.18", + .uri_prefix = "kodak605", + .cmdline_usage = kodak605_cmdline, + .cmdline_arg = kodak605_cmdline_arg, + .init = kodak605_init, + .attach = kodak605_attach, + .teardown = kodak605_teardown, + .read_parse = kodak605_read_parse, + .main_loop = kodak605_main_loop, + .devices = { + { USB_VID_KODAK, USB_PID_KODAK_605, P_KODAK_605, "Kodak"}, + { 0, 0, 0, ""} + } +}; + +/* Kodak 605 data format + + 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. + + 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) + DD 0x01 (4x6) 0x03 (8x6) + LL Laminate, 0x01 (off) or 0x02 (on) + 00 + + ************************************************************************ + + 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 +<- [76 bytes -- status ] + 01 00 00 00 00 00 02 00 42 00 30 00 00 00 30 00 + 00 00 13 00 00 00 75 00 00 00 30 00 00 00 5d 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 01 00 00 00 00 00 + + 01 00 00 00 00 00 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 + +-> 02 00 00 00 +<- [113 bytes -- supported media/sizes? Always seems to be identical ] + + 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 + + 01 00 00 00 00 00 01 00 42 00 31 00 00 00 31 00 + 00 00 14 00 00 00 77 00 00 00 31 00 00 00 5d 00 + 00 00 00 00 00 00 01 00 00 01 00 01 00 00 02 01 + 00 00 00 01 00 02 02 01 00 00 00 01 00 02 00 00 + 00 00 00 00 00 00 01 00 00 00 00 00 + + + Write tone curve data: + +-> 04 c0 0a 00 03 01 00 00 00 00 LL LL 00 00 [[ LL LL == 0x0600 in LE ]] +<- 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 new file mode 100644 index 0000000..e7bb174 --- /dev/null +++ b/src/cups/kodak6800_print.c @@ -0,0 +1,918 @@ +/* + * Kodak 6800/6850 Photo Printer CUPS backend -- libusb-1.0 version + * + * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org> + * + * The latest version of this program can be found at: + * + * http://git.shaftnet.org/cgit/selphy_print.git + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * [http://www.gnu.org/licenses/gpl-2.0.html] + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <signal.h> + +#include "backend_common.h" + +#define USB_VID_KODAK 0x040A +#define USB_PID_KODAK_6800 0x4021 +#define USB_PID_KODAK_6850 0x402B + +/* File header */ +struct kodak6800_hdr { + uint8_t hdr[9]; + uint8_t copies; + uint16_t columns; /* BE */ + uint16_t rows; /* BE */ + uint8_t media; /* 0x06 for 6x8, 0x00 for 6x4, 0x07 for 5x7 */ + uint8_t laminate; /* 0x01 to laminate, 0x00 for not */ + uint8_t unk1; /* 0x00, 0x01 [may be print mode] */ +} __attribute__((packed)); + +#define CMDBUF_LEN 17 + +/* Private data stucture */ +struct kodak6800_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + + int type; + struct kodak6800_hdr hdr; + uint8_t *databuf; + int datalen; +}; + +/* Program states */ +enum { + S_IDLE = 0, + S_6850_READY, + S_6850_READY_WAIT, + S_READY, + S_STARTED, + S_SENT_HDR, + S_SENT_DATA, + S_FINISHED, +}; + +#define READBACK_LEN 68 + +#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; + int i; + + uint16_t *data = malloc(UPDATE_SIZE); + + INFO("Dump Tone Curve to '%s'\n", fname); + + /* Initial Request */ + cmdbuf[0] = 0x03; + cmdbuf[1] = 0x1b; + cmdbuf[2] = 0x43; + cmdbuf[3] = 0x48; + cmdbuf[4] = 0x43; + cmdbuf[5] = 0x0c; + cmdbuf[6] = 0x54; + cmdbuf[7] = 0x4f; + cmdbuf[8] = 0x4e; + cmdbuf[9] = 0x45; + cmdbuf[10] = 0x72; + cmdbuf[11] = 0x01; + cmdbuf[12] = 0x00; + cmdbuf[13] = 0x00; + 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; + goto done; + } + + /* Then we can poll the data */ + cmdbuf[0] = 0x03; + cmdbuf[1] = 0x1b; + cmdbuf[2] = 0x43; + cmdbuf[3] = 0x48; + cmdbuf[4] = 0x43; + cmdbuf[5] = 0x0c; + cmdbuf[6] = 0x54; + cmdbuf[7] = 0x4f; + cmdbuf[8] = 0x4e; + 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) + goto done; + + if (num != 64) { + ERROR("Short read! (%d/%d)\n", num, 51); + ret = 4; + goto done; + } + + /* Copy into buffer */ + memcpy(((uint8_t*)data)+i*64, respbuf, 64); + } + + /* Open file and write it out */ + { + int tc_fd = open(fname, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR); + if (tc_fd < 0) { + ret = 4; + goto done; + } + + for (i = 0 ; i < 768; i++) { + /* Byteswap appropriately */ + data[i] = cpu_to_be16(le16_to_cpu(data[i])); + write(tc_fd, &data[i], sizeof(uint16_t)); + } + close(tc_fd); + } + + done: + /* We're done */ + free(data); + + return 0; +} + +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; + int remain; + + uint16_t *data = malloc(UPDATE_SIZE); + uint8_t *ptr; + + INFO("Set Tone Curve from '%s'\n", fname); + + /* 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) != UPDATE_SIZE) { + ret = -2; + goto done; + } + close(tc_fd); + + /* Byteswap data to printer's format */ + for (ret = 0; ret < (UPDATE_SIZE)/2 ; ret++) { + data[ret] = cpu_to_le16(be16_to_cpu(data[ret])); + } + + /* Initial Request */ + cmdbuf[0] = 0x03; + cmdbuf[1] = 0x1b; + cmdbuf[2] = 0x43; + cmdbuf[3] = 0x48; + cmdbuf[4] = 0x43; + cmdbuf[5] = 0x0c; + cmdbuf[6] = 0x54; + cmdbuf[7] = 0x4f; + cmdbuf[8] = 0x4e; + cmdbuf[9] = 0x45; + cmdbuf[10] = 0x77; + cmdbuf[11] = 0x01; + cmdbuf[12] = 0x00; + cmdbuf[13] = 0x00; + 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; + goto done; + } + + ptr = (uint8_t*) data; + remain = UPDATE_SIZE; + while (remain > 0) { + int count = remain > 63 ? 63 : remain; + + cmdbuf[0] = 0x03; + memcpy(cmdbuf+1, ptr, count); + + remain -= count; + ptr += count; + + /* Send next block over */ + if ((ret = send_data(dev, endp_down, + cmdbuf, count+1))) + 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; + goto done; + } + }; + +done: + /* We're done */ + free(data); + return ret; +} + +static void kodak6800_cmdline(void) +{ + DEBUG("\t\t[ -c filename ] # Get tone curve\n"); + DEBUG("\t\t[ -C filename ] # Set tone curve\n"); +} + +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:")) >= 0) { + switch(i) { + case 'c': + if (ctx) { + j = kodak6800_get_tonecurve(ctx, optarg); + break; + } + return 1; + case 'C': + if (ctx) { + j = kodak6800_set_tonecurve(ctx, optarg); + break; + } + return 1; + default: + break; /* Ignore completely */ + } + + if (j) return j; + } + + return 0; +} + + +static void *kodak6800_init(void) +{ + struct kodak6800_ctx *ctx = malloc(sizeof(struct kodak6800_ctx)); + if (!ctx) + return NULL; + memset(ctx, 0, sizeof(struct kodak6800_ctx)); + + ctx->type = P_ANY; + + return ctx; +} + +static void kodak6800_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +{ + struct kodak6800_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); + + /* Map out device type */ + if (desc.idProduct == USB_PID_KODAK_6850) + ctx->type = P_KODAK_6850; + else + ctx->type = P_KODAK_6800; +} + + +static void kodak6800_teardown(void *vctx) { + struct kodak6800_ctx *ctx = vctx; + + if (!ctx) + return; + + if (ctx->databuf) + free(ctx->databuf); + free(ctx); +} + +static int kodak6800_read_parse(void *vctx, int data_fd) { + struct kodak6800_ctx *ctx = vctx; + int ret; + + if (!ctx) + return 1; + + if (ctx->databuf) { + free(ctx->databuf); + ctx->databuf = NULL; + } + + /* 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; + ERROR("Read failed (%d/%d/%d)\n", + ret, 0, (int)sizeof(ctx->hdr)); + perror("ERROR: Read failed"); + return ret; + } + if (ctx->hdr.hdr[0] != 0x03 || + ctx->hdr.hdr[1] != 0x1b || + ctx->hdr.hdr[2] != 0x43 || + ctx->hdr.hdr[3] != 0x48 || + ctx->hdr.hdr[4] != 0x43) { + ERROR("Unrecognized data format!\n"); + return(1); + } + + ctx->datalen = be16_to_cpu(ctx->hdr.rows) * be16_to_cpu(ctx->hdr.columns) * 3; + ctx->databuf = malloc(ctx->datalen); + if (!ctx->databuf) { + ERROR("Memory allocation failure!\n"); + return 2; + } + + { + 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); + } + + return 0; +} + +static int kodak6800_main_loop(void *vctx, int copies) { + struct kodak6800_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 1; + +top: + if (state != last_state) { + if (dyesub_debug) + DEBUG("last_state %d new %d\n", last_state, state); + } + + if (pending) + goto skip_query; + + /* Send Status Query */ + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x03; + cmdbuf[1] = 0x1b; + cmdbuf[2] = 0x43; + cmdbuf[3] = 0x48; + cmdbuf[4] = 0x43; + cmdbuf[5] = 0x03; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, CMDBUF_LEN - 1))) + return ret; + +skip_query: + /* Read in the printer status */ + ret = read_data(ctx->dev, ctx->endp_up, + rdbuf, READBACK_LEN, &num); + if (ret < 0) + return ret; + + if (num < 51) { + ERROR("Short read! (%d/%d)\n", num, 51); + return 4; + } + + if (num != 51 && num != 58 && num != 68) { + ERROR("Unexpected readback from printer (%d/%d from 0x%02x))\n", + num, READBACK_LEN, ctx->endp_up); + return ret; + } + + // XXX detect media type based on readback? + + if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) { + memcpy(rdbuf2, rdbuf, READBACK_LEN); + } else if (state == last_state) { + sleep(1); + } + last_state = state; + + fflush(stderr); + + pending = 0; + + switch (state) { + case S_IDLE: + INFO("Waiting for printer idle\n"); + if (rdbuf[0] != 0x01 || + rdbuf[1] != 0x02 || + rdbuf[2] != 0x01) { + break; + } + + INFO("Printing started; Sending init sequence\n"); + if (ctx->type == P_KODAK_6850) + state = S_6850_READY; + else + state = S_READY; + break; + case S_6850_READY: + INFO("Sending 6850 init sequence\n"); + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x03; + cmdbuf[1] = 0x1b; + cmdbuf[2] = 0x43; + cmdbuf[3] = 0x48; + cmdbuf[4] = 0x43; + cmdbuf[5] = 0x4c; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, CMDBUF_LEN -1))) + return ret; + pending = 1; + state = S_6850_READY_WAIT; + break; + case S_6850_READY_WAIT: + if (rdbuf[0] != 0x01 || + rdbuf[2] != 0x43) { + state = S_6850_READY; + break; + } + state = S_READY; + break; + case S_READY: + INFO("Sending attention sequence\n"); + /* Send reset/attention */ + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x03; + cmdbuf[1] = 0x1b; + cmdbuf[2] = 0x43; + cmdbuf[3] = 0x48; + cmdbuf[4] = 0x43; + cmdbuf[5] = 0x1a; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, CMDBUF_LEN -1))) + return ret; + pending = 1; + state = S_STARTED; + break; + case S_STARTED: + if (rdbuf[0] != 0x01 || + rdbuf[2] != 0x00) + break; + + /* Aappears to depend on media */ + if (rdbuf[1] != 0x0b && + rdbuf[1] != 0x03) + break; + + 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.media == 0x00) + cmdbuf[7] = 0x04; + else if (ctx->hdr.media == 0x06) + cmdbuf[7] = 0x05; + } + + /* If we're printing a 4x6 on 8x6 media... */ + if (ctx->hdr.media == 0x00 && + rdbuf[11] == 0x09 && + rdbuf[12] == 0x82) { + cmdbuf[14] = 0x06; + cmdbuf[16] = 0x01; + } + + INFO("Sending image header\n"); + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, CMDBUF_LEN))) + return ret; + pending = 1; + state = S_SENT_HDR; + break; + case S_SENT_HDR: + INFO("Waiting for printer to accept data\n"); + if (rdbuf[0] != 0x01 || + rdbuf[1] != 0x02 || + rdbuf[2] != 0x01) { + break; + } + + INFO("Sending image data\n"); + if ((ret = send_data(ctx->dev, ctx->endp_down, + ctx->databuf, ctx->datalen))) + return ret; + + INFO("Image data sent\n"); + state = S_SENT_DATA; + break; + case S_SENT_DATA: + INFO("Waiting for printer to acknowledge completion\n"); + if (rdbuf[0] != 0x01 || + rdbuf[1] != 0x02 || + rdbuf[2] != 0x01) { + break; + } + + state = S_FINISHED; + break; + default: + break; + }; + + if (state != S_FINISHED) + goto top; + + /* Clean up */ + if (terminate) + copies = 1; + + INFO("Print complete (%d copies remaining)\n", copies - 1); + + if (copies && --copies) { + state = S_IDLE; + goto top; + } + + return 0; +} + +/* Exported */ +struct dyesub_backend kodak6800_backend = { + .name = "Kodak 6800/6850", + .version = "0.32", + .uri_prefix = "kodak6800", + .cmdline_usage = kodak6800_cmdline, + .cmdline_arg = kodak6800_cmdline_arg, + .init = kodak6800_init, + .attach = kodak6800_attach, + .teardown = kodak6800_teardown, + .read_parse = kodak6800_read_parse, + .main_loop = kodak6800_main_loop, + .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, ""} + } +}; + +/* Kodak 6800/6850 data format + + Spool file consists of 17-byte header followed by plane-interleaved BGR data. + Native printer resolution is 1844 pixels per row, and 1240 or 2434 rows. + + 6850 Adds support for 5x7, with 1548 pixels per row and 2140 columns. + + Header: + + 03 1b 43 48 43 0a 00 01 00 Fixed header + CC Number of copies + WW WW Number of columns, big endian. (Fixed at 1844 on 6800) + HH HH Number of rows, big endian. + DD 0x00 (4x6) 0x06 (8x6) 0x07 (5x7 on 6850) + LL Laminate, 0x00 (off) or 0x01 (on) + 00 + + ************************************************************************ + + Kodak 6800 Printer Comms: + + [[file header]] 03 1b 43 48 43 0a 00 01 00 CC WW WW HH HH MT LL 00 + +-> 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 [get ready] +<- [58 octets] + + 01 XX 00 00 00 00 00 04 06 WW WW MM MM 01 00 00 [MM MM == max printable size of media, 09 82 == 2434 for 6x8!] + 00 00 06 WW WW 09 ba 01 02 00 00 00 06 WW WW HH [09 ba == 2940 == cut area?] + HH 01 01 00 00 00 06 WW WW MM MM 01 03 00 00 00 [XX == media type?; 0b/03] + 00 00 00 00 00 00 00 00 00 00 + +-> 03 1b 43 48 43 0a 00 01 00 01 WW WW HH HH 06 01 [ image header, modified (trailing 0x01, '0x06' as media type) ] + 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] + + Other stuff seen: + +-> 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. ]] + + *********************************************************************** + + Kodak 6850 Printer Comms: + + [[file header]] 03 1b 43 48 43 0a 00 01 00 CC WW WW HH HH MT LL 00 + +-> 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] + + 01 01 43 48 43 4c 00 00 00 00 00 00 00 00 00 00 + 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 03 00 00 00 00 00 00 00 00 00 00 [status query] +<- [51 octets -- same as status query before ] + +-> 03 1b 43 48 43 1a 00 00 00 00 00 00 00 00 00 00 [get ready] +<- [68 octets] + + 01 XX 00 00 00 00 00 06 06 WW WW MM MM 01 00 00 [MM MM == max printable size of media, 09 82 == 2434 for 6x8!] + 00 00 06 WW WW 09 ba 01 02 01 00 00 06 WW WW HH [09 ba == 2940 == cut area?] + HH 01 01 00 00 00 06 WW WW MM MM 01 03 00 00 00 [XX == media type? 03/0b ] + 06 WW WW 09 ba 01 05 01 00 00 06 WW WW HH HH 01 + 04 00 00 00 + +-> 03 1b 43 48 43 0a 00 04 00 01 07 34 04 d8 06 01 [ image header, modified ] + 01 [ note we use '04' for 4x6, '05' for 6x8. last octet is always 0x01 when 4x6. ] + +<- [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 + + Other stuff seen: + +-> 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 + + + +*/ diff --git a/src/cups/mitsu70x_print.c b/src/cups/mitsu70x_print.c new file mode 100644 index 0000000..bdfc427 --- /dev/null +++ b/src/cups/mitsu70x_print.c @@ -0,0 +1,532 @@ +/* + * Mitsubishi CP-D70/D707 Photo Printer CUPS backend -- libusb-1.0 version + * + * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org> + * + * The latest version of this program can be found at: + * + * http://git.shaftnet.org/cgit/selphy_print.git + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * [http://www.gnu.org/licenses/gpl-2.0.html] + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <signal.h> + +#include "backend_common.h" + +#define USB_VID_MITSU 0x06D3 +#define USB_PID_MITSU_D70X 0x3B30 + +/* Private data stucture */ +struct mitsu70x_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + + uint8_t *databuf; + int datalen; +}; + +/* Program states */ +enum { + S_IDLE = 0, + S_SENT_ATTN, + S_SENT_HDR, + S_SENT_DATA, + S_FINISHED, +}; + +#define READBACK_LEN 256 + +static void *mitsu70x_init(void) +{ + struct mitsu70x_ctx *ctx = malloc(sizeof(struct mitsu70x_ctx)); + if (!ctx) + return NULL; + memset(ctx, 0, sizeof(struct mitsu70x_ctx)); + + return ctx; +} + +static void mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +{ + struct mitsu70x_ctx *ctx = vctx; + struct libusb_device *device; + struct libusb_device_descriptor desc; + + UNUSED(jobid); + + ctx->dev = dev; + ctx->endp_up = endp_up; + ctx->endp_down = endp_down; + + device = libusb_get_device(dev); + libusb_get_device_descriptor(device, &desc); +} + + +static void mitsu70x_teardown(void *vctx) { + struct mitsu70x_ctx *ctx = vctx; + + if (!ctx) + return; + + if (ctx->databuf) + free(ctx->databuf); + free(ctx); +} + +/* Max job size is 6x9+lamination, equalling ~38MB */ +#define MAX_PRINTJOB_LEN (1024*1024*40) + +struct mitsu70x_hdr { + uint32_t cmd; + uint8_t zero0[12]; + uint16_t cols; + uint16_t rows; + uint16_t lamcols; + uint16_t lamrows; + uint8_t superfine; + uint8_t zero1[7]; + uint8_t deck; + uint8_t zero2[7]; + uint8_t zero3; + uint8_t laminate; + uint8_t zero4[6]; + uint8_t zero5[512-48]; +}; + +static int mitsu70x_read_parse(void *vctx, int data_fd) { + struct mitsu70x_ctx *ctx = vctx; + uint8_t hdr[1024]; + int i, remain; + struct mitsu70x_hdr *mhdr = (struct mitsu70x_hdr*)(hdr + 512); + + if (!ctx) + return 1; + + if (ctx->databuf) { + free(ctx->databuf); + ctx->databuf = NULL; + } + + /* Read in initial header */ + remain = sizeof(hdr); + while (remain > 0) { + i = read(data_fd, hdr + sizeof(hdr) - remain, remain); + if (i == 0) + return 1; + if (i < 0) + return i; + remain -= i; + } + + /* Sanity check */ + if (hdr[0] != 0x1b || + hdr[1] != 0x45 || + hdr[2] != 0x57 || + hdr[3] != 0x55) { + ERROR("Unrecognized data format!\n"); + return(1); + } + + /* Work out printjob size */ + remain = be16_to_cpu(mhdr->rows) * be16_to_cpu(mhdr->cols) * 2; + remain = (remain + 511) / 512 * 512; /* Round to nearest 512 bytes. */ + remain *= 3; /* One for each plane */ + if (mhdr->laminate) { + i = be16_to_cpu(mhdr->lamrows) * be16_to_cpu(mhdr->lamcols) * 2; + i = (i + 511) / 512 * 512; /* Round to nearest 512 bytes. */ + remain += i; + } + + ctx->databuf = malloc(remain + sizeof(hdr)); + if (!ctx->databuf) { + ERROR("Memory allocation failure!\n"); + return 2; + } + + memcpy(ctx->databuf, &hdr, sizeof(hdr)); + ctx->datalen += sizeof(hdr); + + /* Read in the spool data */ + while(remain) { + i = read(data_fd, ctx->databuf + ctx->datalen - remain, remain); + if (i < 0) + return i; + remain -= i; + } + + return 0; +} + +#define CMDBUF_LEN 512 +#define READBACK_LEN 256 + +static int mitsu70x_main_loop(void *vctx, int copies) { + struct mitsu70x_ctx *ctx = vctx; + + uint8_t rdbuf[READBACK_LEN]; + uint8_t rdbuf2[READBACK_LEN]; + uint8_t cmdbuf[CMDBUF_LEN]; + + int last_state = -1, state = S_IDLE; + int num, ret; + int pending = 0; + + if (!ctx) + return 1; + +top: + if (state != last_state) { + if (dyesub_debug) + DEBUG("last_state %d new %d\n", last_state, state); + } + + if (pending) + goto skip_query; + + /* Send Status Query */ + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x56; + cmdbuf[2] = 0x31; + cmdbuf[3] = 0x30; + cmdbuf[4] = 0x00; + cmdbuf[5] = 0x00; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, 6))) + return ret; + /* Send Status Query */ + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x56; + cmdbuf[2] = 0x31; + cmdbuf[3] = 0x30; + +skip_query: + /* Read in the printer status */ + ret = read_data(ctx->dev, ctx->endp_up, + rdbuf, READBACK_LEN, &num); + if (ret < 0) + return ret; + + if (num != 26) { + ERROR("Short Read! (%d/%d)\n", num, 26); + return 4; + } + + if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) { + memcpy(rdbuf2, rdbuf, READBACK_LEN); + } else if (state == last_state) { + sleep(1); + } + last_state = state; + + fflush(stderr); + + pending = 0; + + switch (state) { + case S_IDLE: + INFO("Waiting for printer idle\n"); + if (rdbuf[7] != 0x00 || + rdbuf[8] != 0x00 || + rdbuf[9] != 0x00) { + break; + } + + INFO("Sending attention sequence\n"); + if ((ret = send_data(ctx->dev, ctx->endp_down, + ctx->databuf, 512))) + return ret; + + state = S_SENT_ATTN; + case S_SENT_ATTN: + INFO("Sending header sequence\n"); + + if ((ret = send_data(ctx->dev, ctx->endp_down, + ctx->databuf + 512, 512))) + return ret; + + state = S_SENT_HDR; + break; + case S_SENT_HDR: + INFO("Sending data\n"); + + if ((ret = send_data(ctx->dev, ctx->endp_down, + ctx->databuf + 1024, ctx->datalen - 1024))) + return ret; + + state = S_SENT_DATA; + break; + case S_SENT_DATA: + INFO("Waiting for printer to acknowledge completion\n"); + + state = S_FINISHED; + break; + default: + break; + }; + + if (state != S_FINISHED) + goto top; + + /* Clean up */ + if (terminate) + copies = 1; + + INFO("Print complete (%d copies remaining)\n", copies - 1); + + if (copies && --copies) { + state = S_IDLE; + goto top; + } + + return 0; +} + +struct mitsu70x_status_deck { + uint8_t unk[64]; +}; + +struct mitsu70x_status_resp { + uint8_t unk[128]; + struct mitsu70x_status_deck lower; + struct mitsu70x_status_deck upper; +}; + +static int mitsu70x_get_status(struct mitsu70x_ctx *ctx) +{ + uint8_t cmdbuf[CMDBUF_LEN]; + struct mitsu70x_status_resp resp; + int num, ret; + + /* Send Printer Query */ + memset(cmdbuf, 0, CMDBUF_LEN); + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x56; + cmdbuf[2] = 0x32; + cmdbuf[3] = 0x30; + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, 4))) + return ret; + memset(&resp, 0, sizeof(resp)); + ret = read_data(ctx->dev, ctx->endp_up, + (uint8_t*) &resp, sizeof(resp), &num); + + if (ret < 0) + return ret; + if (num != sizeof(resp)) { + ERROR("Short Read! (%d/%d)\n", num, (int)sizeof(resp)); + return 4; + } + + if (dyesub_debug) { + unsigned int i; + + DEBUG("Status Dump:\n"); + for (i = 0 ; i < sizeof(resp.unk) ; i++) { + DEBUG2("%02x ", resp.unk[i]); + } + DEBUG2("\n"); + DEBUG("Lower Deck:\n"); + for (i = 0 ; i < sizeof(resp.lower.unk) ; i++) { + DEBUG2("%02x ", resp.lower.unk[i]); + } + DEBUG2("\n"); + DEBUG("Upper Deck:\n"); + for (i = 0 ; i < sizeof(resp.upper.unk) ; i++) { + DEBUG2("%02x ", resp.upper.unk[i]); + } + DEBUG2("\n"); + } + INFO("Prints remaining: Lower: %d Upper: %d\n", + resp.lower.unk[23], resp.upper.unk[23]); + + return 0; +} + +static void mitsu70x_cmdline(void) +{ + DEBUG("\t\t[ -s ] # Query status\n"); +} + +static int mitsu70x_cmdline_arg(void *vctx, int argc, char **argv) +{ + struct mitsu70x_ctx *ctx = vctx; + int i, j = 0; + + /* Reset arg parsing */ + optind = 1; + opterr = 0; + while ((i = getopt(argc, argv, "s")) >= 0) { + switch(i) { + case 's': + if (ctx) { + j = mitsu70x_get_status(ctx); + break; + } + return 1; + default: + break; /* Ignore completely */ + } + + if (j) return j; + } + + return 0; +} + + +/* Exported */ +struct dyesub_backend mitsu70x_backend = { + .name = "Mitsubishi CP-D70/D707", + .version = "0.12", + .uri_prefix = "mitsu70x", + .cmdline_usage = mitsu70x_cmdline, + .cmdline_arg = mitsu70x_cmdline_arg, + .init = mitsu70x_init, + .attach = mitsu70x_attach, + .teardown = mitsu70x_teardown, + .read_parse = mitsu70x_read_parse, + .main_loop = mitsu70x_main_loop, + .devices = { + { USB_VID_MITSU, USB_PID_MITSU_D70X, P_MITSU_D70X, "Mitsubishi"}, + { 0, 0, 0, ""} + } +}; + +/* Mitsubish CP-D70x/CP-K60 data format + + Spool file consists of two headers followed by three image planes + and an optional lamination data plane. All blocks are rounded up to + a 512-byte boundary. + + All multi-byte numbers are big endian, ie MSB first. + + Header 1: (Init) + + 1b 45 57 55 00 00 00 00 00 00 00 00 00 00 00 00 + (padded by NULLs to a 512-byte boundary) + + [[ D70x ]] Header 2: (Header) + + 1b 5a 54 01 00 00 00 00 00 00 00 00 00 00 00 00 + XX XX YY YY QQ QQ ZZ ZZ SS 00 00 00 00 00 00 00 + UU 00 00 00 00 00 00 00 00 TT 00 00 00 00 00 00 + (padded by NULLs to a 512-byte boundary) + + XX XX == columns + YY YY == rows + QQ QQ == lamination columns (equal to XX XX) + ZZ ZZ == lamination rows (YY YY + 12) + SS == SuperFine mode (00 == off, 03 == on + Lamination always turns this on! + UU == 00 == Auto, 01 == Lower Deck, 02 == Upper Deck + TT == 00 with no lamination, 02 with. + + [[ K60 ]] Header 2: (Header) + + 1b 5a 54 00 00 00 00 00 00 00 00 00 00 00 00 00 + XX XX YY YY QQ QQ ZZ ZZ SS 00 00 00 00 00 00 00 + UU 00 00 00 00 00 00 00 00 TT 00 00 00 00 00 00 + RR 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + + (padded by NULLs to a 512-byte boundary) + + XX XX == columns + YY YY == rows + QQ QQ == lamination columns (equal to XX XX) + ZZ ZZ == lamination rows (usually YY YY + 12) + SS == UltraFine mode (00 == off, 04 == on.. forces 8x6 print?) + UU == 01 (Lower Deck) + TT == 00 with no lamination, 02 with. + RR == 0x05 for double-cut 2x6, 0x00 for double-cut 4x6, otherwise 0x01 + + Data planes: + 16-bit data, rounded up to 512-byte block (XX * YY * 2 bytes) + + Lamination plane: (only present if QQ + ZZ are nonzero) + 16-byte data, rounded up to 512-byte block (QQ * ZZ * 2 bytes) + + Lamination appears to be these bytes, repeated: 28 6a ab 58 6c 22 + + ******************************************************************** + + Command format: (D70/D707) + + -> 1b 56 32 30 + <- [256 byte payload] + + e4 56 32 30 00 00 00 00 00 00 00 00 00 00 00 00 .V20............ + 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 00 ................ + 44 80 00 00 5f 00 00 3d 43 00 50 00 44 00 37 00 D..._..=C.P.D.7. + 30 00 44 00 30 00 30 00 31 00 31 00 31 00 37 00 0.D.0.0.1.1.1.7. + 33 31 36 54 31 33 21 a3 33 31 35 42 31 32 f5 e5 316T13!.315B12.. + 33 31 39 42 31 31 a3 fb 33 31 38 45 31 32 50 0d 319B11..318E12P. + 33 31 37 41 32 32 a3 82 44 55 4d 4d 59 40 00 00 317A22..DUMMY@.. + 44 55 4d 4d 59 40 00 00 00 00 00 00 00 00 00 00 DUMMY@.......... + + LOWER DECK + + 00 00 00 00 00 00 02 04 3f 00 00 04 96 00 00 00 ........?....... + ff 0f 01 00 00 c8 NN NN 00 00 00 00 05 28 75 80 .......R.....(u. + 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 ................ + 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 ................ + + UPPER DECK + + 00 00 00 00 00 00 01 ee 3d 00 00 06 39 00 00 00 ........=...9... + ff 02 00 00 01 90 NN NN 00 00 00 00 06 67 78 00 .............gx. + 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 ................ + 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 ................ + + NN NN == Number of prints remaining on that deck. + (None of the other fields are decoded yet) + + -> 1b 56 31 30 00 00 + <- [26 byte payload] + + e4 56 31 30 00 00 00 XX YY ZZ 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 + + XX/YY/ZZ are unkown. Observed values: + + 40 80 a0 + 00 00 00 + 80 80 a0 + + ** ** ** ** ** ** + + The windows drivers seem to send the id and status queries before + and in between each of the chunks sent to the printer. There doesn't + appear to be any particular intelligence in the protocol, but it didn't + work when the raw dump was submitted as-is. + + */ diff --git a/src/cups/rastertoprinter.c b/src/cups/rastertoprinter.c index 065aa9b..4a1ae9c 100644 --- a/src/cups/rastertoprinter.c +++ b/src/cups/rastertoprinter.c @@ -1,5 +1,5 @@ /* - * "$Id: rastertoprinter.c,v 1.139 2011/12/18 16:20:31 rlk Exp $" + * "$Id: rastertoprinter.c,v 1.143 2014/01/04 00:31:37 rlk Exp $" * * Gutenprint based raster filter for the Common UNIX Printing System. * @@ -136,6 +136,16 @@ static const char *load_file_name = NULL; extern void stpi_vars_print_error(const stp_vars_t *v, const char *prefix); +#pragma GCC diagnostic ignored "-Wformat-nonliteral" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-qual" +static inline void * +cast_safe(const void *ptr) +{ + return (void *)ptr; +} +#pragma GCC diagnostic pop + static void set_string_parameter(stp_vars_t *v, const char *name, const char *val) { @@ -330,7 +340,7 @@ static stp_vars_t * initialize_page(cups_image_t *cups, const stp_vars_t *default_settings, const char *page_size_name) { - int tmp_left, tmp_right, tmp_top, tmp_bottom, tmp_width, tmp_height; + int tmp_left, tmp_right, tmp_top, tmp_bottom; stp_vars_t *v = stp_vars_create_copy(default_settings); if (! suppress_messages) @@ -480,8 +490,6 @@ initialize_page(cups_image_t *cups, const stp_vars_t *default_settings, tmp_right = cups->width; if (tmp_bottom > tmp_top + cups->height) tmp_bottom = cups->height; - tmp_width = cups->right - cups->left; - tmp_height = cups->bottom - cups->top; if (tmp_left < cups->left) { if (cups->shrink_to_fit != 1) @@ -802,7 +810,7 @@ set_all_options(stp_vars_t *v, cups_option_t *options, int num_options, if (raw) { stp_set_raw_parameter(v, desc.name, raw->data, raw->bytes); - stp_free((void *)raw->data); + stp_free(cast_safe(raw->data)); stp_free(raw); } break; @@ -1085,7 +1093,6 @@ main(int argc, /* I - Number of command-line arguments */ const char *version_id; const char *release_version_id; struct tms tms; - clock_t clk; long clocks_per_sec; struct timeval t1, t2; struct timezone tz; @@ -1398,12 +1405,11 @@ main(int argc, /* I - Number of command-line arguments */ stp_vars_destroy(v); } cupsRasterClose(cups.ras); - clk = times(&tms); + (void) times(&tms); (void) gettimeofday(&t2, &tz); clocks_per_sec = sysconf(_SC_CLK_TCK); - fprintf(stderr, "DEBUG: Gutenprint: Printed total %.0f bytes\n", - total_bytes_printed); - fprintf(stderr, "DEBUG: Gutenprint: Time %.3f user, %.3f sys, %.3f elapsed\n", + fprintf(stderr, "DEBUG: Gutenprint: stats %.0fB, %.3fu, %.3fs, %.3fel\n", + total_bytes_printed, (double) tms.tms_utime / clocks_per_sec, (double) tms.tms_stime / clocks_per_sec, (double) (t2.tv_sec - t1.tv_sec) + @@ -1704,5 +1710,5 @@ Image_width(stp_image_t *image) /* I - Image */ /* - * End of "$Id: rastertoprinter.c,v 1.139 2011/12/18 16:20:31 rlk Exp $". + * End of "$Id: rastertoprinter.c,v 1.143 2014/01/04 00:31:37 rlk Exp $". */ diff --git a/src/cups/selphy_print.c b/src/cups/selphy_print.c new file mode 100644 index 0000000..29284a0 --- /dev/null +++ b/src/cups/selphy_print.c @@ -0,0 +1,1288 @@ +/* + * Canon SELPHY ES/CP series CUPS backend -- libusb-1.0 version + * + * (c) 2007-2014 Solomon Peachy <pizza@shaftnet.org> + * + * The latest version of this program can be found at: + * + * http://git.shaftnet.org/cgit/selphy_print.git + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * [http://www.gnu.org/licenses/gpl-2.0.html] + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <signal.h> + +#include "backend_common.h" + +#define READBACK_LEN 12 + +struct printer_data { + int type; /* P_??? */ + char *model; /* eg "SELPHY ES1" */ + int init_length; + int foot_length; + int16_t init_readback[READBACK_LEN]; + int16_t ready_y_readback[READBACK_LEN]; + int16_t ready_m_readback[READBACK_LEN]; + int16_t ready_c_readback[READBACK_LEN]; + int16_t done_c_readback[READBACK_LEN]; + uint8_t clear_error[READBACK_LEN]; + int clear_error_len; + int16_t paper_codes[256]; + int16_t pgcode_offset; /* Offset into printjob for paper type */ + int16_t paper_code_offset; /* Offset in readback for paper type */ + int (*error_detect)(uint8_t *rdbuf); +}; + +static int es1_error_detect(uint8_t *rdbuf) +{ + if (rdbuf[1] == 0x01) { + if (rdbuf[9] == 0x00) { + ERROR("Cover open!\n"); + } else { + ERROR("Unknown error %02x\n", rdbuf[9]); + } + return 1; + } else if (rdbuf[4] == 0x01 && rdbuf[5] == 0xff && + rdbuf[6] == 0xff && rdbuf[7] == 0xff) { + ERROR("No media loaded!\n"); + return 1; + } else if (rdbuf[0] == 0x0f) { + ERROR("Out of media!\n"); + return 1; + } + + return 0; +} + +static int es2_error_detect(uint8_t *rdbuf) +{ + if (rdbuf[0] == 0x16 && + rdbuf[1] == 0x01) { + ERROR("Printer cover open!\n"); + return 1; + } + + if (rdbuf[0] == 0x02 && + rdbuf[4] == 0x05 && + rdbuf[5] == 0x05 && + rdbuf[6] == 0x02) { + ERROR("No media loaded!\n"); + return 1; + } + + if (rdbuf[0] == 0x14) { + ERROR("Out of media!\n"); + return 1; + } + + return 0; +} + +static int es3_error_detect(uint8_t *rdbuf) +{ + if (rdbuf[8] == 0x01) { + if (rdbuf[10] == 0x0f) { + ERROR("Communications Error\n"); + } else if (rdbuf[10] == 0x01) { + ERROR("No media loaded!\n"); + } else { + ERROR("Unknown error - %02x + %02x\n", + rdbuf[8], rdbuf[10]); + } + return 1; + } else if (rdbuf[8] == 0x03 && + rdbuf[10] == 0x02) { + ERROR("No media loaded!\n"); + return 1; + } else if (rdbuf[8] == 0x08 && + rdbuf[10] == 0x04) { + ERROR("Printer cover open!\n"); + return 1; + } else if (rdbuf[8] == 0x05 && + rdbuf[10] == 0x01) { + ERROR("Incorrect media loaded!\n"); + return 1; + } + + if (rdbuf[8] || rdbuf[10]) { + ERROR("Unknown error - %02x + %02x\n", + rdbuf[8], rdbuf[10]); + return 1; + } + + return 0; +} + +static int es40_error_detect(uint8_t *rdbuf) +{ + /* ES40 */ + if (!rdbuf[3]) + return 0; + + if (rdbuf[3] == 0x01) + ERROR("Generic communication error\n"); + else if (rdbuf[3] == 0x32) + ERROR("Cover open or media empty!\n"); + else + ERROR("Unknown error - %02x\n", rdbuf[3]); + + return 1; +} + +static int cp790_error_detect(uint8_t *rdbuf) +{ + /* CP790 */ + if (rdbuf[5] == 0xff) { + ERROR("No ribbon loaded!\n"); + return 1; + } else if (rdbuf[4] == 0xff) { + ERROR("No paper tray loaded!\n"); + return 1; + } else if (rdbuf[3]) { + if ((rdbuf[3] & 0xf) == 0x02) // 0x12 0x22 + ERROR("No paper tray loaded!\n"); + else if ((rdbuf[3] & 0xf) == 0x03) // 0x13 0x23 + ERROR("Empty paper tray or feed error!\n"); + else if (rdbuf[3] == 0x11) + ERROR("Paper feed error!\n"); + else if (rdbuf[3] == 0x21) + ERROR("Ribbon depleted!\n"); + else + ERROR("Unknown error - %02x\n", rdbuf[3]); + return 1; + } + + return 0; +} + + +static int cp10_error_detect(uint8_t *rdbuf) +{ + if (!rdbuf[2]) + return 0; + + if (rdbuf[2] == 0x80) + ERROR("No ribbon loaded\n"); + else if (rdbuf[2] == 0x08) + ERROR("Ribbon depleted!\n"); + else if (rdbuf[2] == 0x01) + ERROR("No paper loaded!\n"); + else + ERROR("Unknown error - %02x\n", rdbuf[2]); + return 1; +} + +static int cpxxx_error_detect(uint8_t *rdbuf) +{ + if (!rdbuf[2]) + return 0; + + if (rdbuf[2] == 0x01) + ERROR("Paper feed problem!\n"); + else if (rdbuf[2] == 0x04) + ERROR("Ribbon problem!\n"); + else if (rdbuf[2] == 0x08) + ERROR("Ribbon depleted!\n"); + else + ERROR("Unknown error - %02x\n", rdbuf[2]); + return 1; +} + +static struct printer_data selphy_printers[] = { + { .type = P_ES1, + .model = "SELPHY ES1", + .init_length = 12, + .foot_length = 0, + .init_readback = { 0x02, 0x00, 0x00, 0x00, 0x02, 0x01, -1, 0x01, 0x00, 0x00, 0x00, 0x00 }, + .ready_y_readback = { 0x04, 0x00, 0x01, 0x00, 0x02, 0x01, -1, 0x01, 0x00, 0x00, 0x00, 0x00 }, + .ready_m_readback = { 0x04, 0x00, 0x03, 0x00, 0x02, 0x01, -1, 0x01, 0x00, 0x00, 0x00, 0x00 }, + .ready_c_readback = { 0x04, 0x00, 0x07, 0x00, 0x02, 0x01, -1, 0x01, 0x00, 0x00, 0x00, 0x00 }, + .done_c_readback = { 0x04, 0x00, 0x00, 0x00, 0x02, 0x01, -1, 0x01, 0x00, 0x00, 0x00, 0x00 }, + // .clear_error + clear_error_len + // .paper_codes + .pgcode_offset = 3, + .paper_code_offset = 6, + .error_detect = es1_error_detect, + }, + { .type = P_ES2_20, + .model = "SELPHY ES2/ES20", + .init_length = 16, + .foot_length = 0, + .init_readback = { 0x02, 0x00, 0x00, 0x00, -1, 0x00, -1, -1, 0x00, 0x00, 0x00, 0x00 }, + .ready_y_readback = { 0x03, 0x00, 0x01, 0x00, -1, 0x00, -1, -1, 0x00, 0x00, 0x00, 0x00 }, + .ready_m_readback = { 0x06, 0x00, 0x03, 0x00, -1, 0x00, -1, -1, 0x00, 0x00, 0x00, 0x00 }, + .ready_c_readback = { 0x09, 0x00, 0x07, 0x00, -1, 0x00, -1, -1, 0x00, 0x00, 0x00, 0x00 }, + .done_c_readback = { 0x09, 0x00, 0x00, 0x00, -1, 0x00, -1, -1, 0x00, 0x00, 0x00, 0x00 }, + // .clear_error + clear_error_len + // .paper_codes + .pgcode_offset = 2, + .paper_code_offset = 4, + .error_detect = es2_error_detect, + }, + { .type = P_ES3_30, + .model = "SELPHY ES3/ES30", + .init_length = 16, + .foot_length = 12, + .init_readback = { 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }, + .ready_y_readback = { 0x01, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }, + .ready_m_readback = { 0x03, 0xff, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }, + .ready_c_readback = { 0x05, 0xff, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }, + .done_c_readback = { 0x00, 0xff, 0x10, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }, + // .clear_error + clear_error_len + // .paper_codes + .pgcode_offset = 2, + .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, + .foot_length = 12, + .init_readback = { 0x00, 0x00, -1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -1 }, + .ready_y_readback = { 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -1 }, + .ready_m_readback = { 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -1 }, + .ready_c_readback = { 0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -1 }, + .done_c_readback = { 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -1 }, + // .clear_error + clear_error_len + // .paper_codes + .pgcode_offset = 2, + .paper_code_offset = 11, + .error_detect = es40_error_detect, + }, + { .type = P_CP790, + .model = "SELPHY CP790", + .init_length = 16, + .foot_length = 12, + .init_readback = { 0x00, 0x00, -1, 0x00, -1, -1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }, + .ready_y_readback = { 0x00, 0x01, 0x01, 0x00, -1, -1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }, + .ready_m_readback = { 0x00, 0x03, 0x02, 0x00, -1, -1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }, + .ready_c_readback = { 0x00, 0x05, 0x03, 0x00, -1, -1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }, + .done_c_readback = { 0x00, 0x00, 0x10, 0x00, -1, -1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }, + .clear_error = { 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .clear_error_len = 12, + // .paper_codes + .pgcode_offset = 2, + .paper_code_offset = -1, /* Uses a different technique */ + .error_detect = cp790_error_detect, + }, + { .type = P_CP_XXX, + .model = "SELPHY CP Series (!CP-10/CP790)", + .init_length = 12, + .foot_length = 0, /* CP900 has four-byte NULL footer that can be safely ignored */ + .init_readback = { 0x01, 0x00, 0x00, 0x00, -1, 0x00, -1, 0x00, 0x00, 0x00, 0x00, -1 }, + .ready_y_readback = { 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, -1, 0x00, 0x00, 0x00, 0x00, -1 }, + .ready_m_readback = { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, -1, 0x00, 0x00, 0x00, 0x00, -1 }, + .ready_c_readback = { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, -1, 0x00, 0x00, 0x00, 0x00, -1 }, + .done_c_readback = { 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, -1, 0x00, 0x00, 0x00, 0x00, -1 }, + .clear_error = { 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .clear_error_len = 12, + // .paper_codes + .pgcode_offset = 3, + .paper_code_offset = 6, + .error_detect = cpxxx_error_detect, + }, + { .type = P_CP10, + .model = "SELPHY CP-10", + .init_length = 12, + .foot_length = 0, + .init_readback = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .ready_y_readback = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .ready_m_readback = { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .ready_c_readback = { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .done_c_readback = { 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .clear_error = { 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .clear_error_len = 12, + // .paper_codes + .pgcode_offset = -1, + .paper_code_offset = -1, + .error_detect = cp10_error_detect, + }, + { .type = -1 }, +}; + +#define MAX_HEADER 28 + +static const uint32_t es40_cp790_plane_lengths[4] = { 2227456, 1601600, 698880, 2976512 }; + +static void setup_paper_codes(void) +{ + int i, j; + for (i = 0 ; ; i++) { + if (selphy_printers[i].type == -1) + break; + /* Default all to IGNORE */ + for (j = 0 ; j < 256 ; j++) + selphy_printers[i].paper_codes[j] = -1; + + /* Set up specifics */ + switch (selphy_printers[i].type) { + case P_ES1: + selphy_printers[i].paper_codes[0x11] = 0x01; + selphy_printers[i].paper_codes[0x12] = 0x02; + selphy_printers[i].paper_codes[0x13] = 0x03; + break; + case P_ES2_20: + selphy_printers[i].paper_codes[0x01] = 0x01; + selphy_printers[i].paper_codes[0x02] = 0x02; + selphy_printers[i].paper_codes[0x03] = 0x03; + break; + case P_ES40: + selphy_printers[i].paper_codes[0x00] = 0x11; + selphy_printers[i].paper_codes[0x01] = 0x22; + selphy_printers[i].paper_codes[0x02] = 0x33; + selphy_printers[i].paper_codes[0x03] = 0x44; + break; + case P_CP_XXX: + selphy_printers[i].paper_codes[0x01] = 0x11; + selphy_printers[i].paper_codes[0x02] = 0x22; + selphy_printers[i].paper_codes[0x03] = 0x33; + selphy_printers[i].paper_codes[0x04] = 0x44; + break; + case P_ES3_30: + /* N/A, printer does not report types */ + case P_CP790: + /* N/A, printer uses different technique */ + case P_CP10: + /* N/A, printer supports one type only */ + break; + } + } +} + +#define INCORRECT_PAPER -999 + +/* Program states */ +enum { + S_IDLE = 0, + S_PRINTER_READY, + S_PRINTER_INIT_SENT, + S_PRINTER_READY_Y, + S_PRINTER_Y_SENT, + S_PRINTER_READY_M, + S_PRINTER_M_SENT, + S_PRINTER_READY_C, + S_PRINTER_C_SENT, + S_PRINTER_DONE, + S_FINISHED, +}; + +static int fancy_memcmp(const uint8_t *buf_a, const int16_t *buf_b, uint len) +{ + uint i; + + for (i = 0 ; i < len ; i++) { + if (buf_b[i] == -1) + continue; + else if (buf_a[i] > buf_b[i]) + return 1; + else if (buf_a[i] < buf_b[i]) + return -1; + } + return 0; +} + +static int parse_printjob(uint8_t *buffer, uint8_t *bw_mode, uint32_t *plane_len) +{ + int printer_type = -1; + + if (buffer[0] != 0x40 && + buffer[1] != 0x00) { + goto done; + } + + if (buffer[12] == 0x40 && + buffer[13] == 0x01) { + *plane_len = *(uint32_t*)(&buffer[16]); + *plane_len = le32_to_cpu(*plane_len); + + if (buffer[2] == 0x00) { + if (*plane_len == 688480) + printer_type = P_CP10; + else + printer_type = P_CP_XXX; + } else { + printer_type = P_ES1; + *bw_mode = (buffer[2] == 0x20); + } + goto done; + } + + *plane_len = *(uint32_t*)(&buffer[12]); + *plane_len = le32_to_cpu(*plane_len); + + if (buffer[16] == 0x40 && + buffer[17] == 0x01) { + + if (buffer[4] == 0x02) { + printer_type = P_ES2_20; + *bw_mode = (buffer[7] == 0x01); + goto done; + } + + if (es40_cp790_plane_lengths[buffer[2]] == *plane_len) { + printer_type = P_ES40_CP790; + *bw_mode = (buffer[3] == 0x01); + goto done; + } else { + printer_type = P_ES3_30; + *bw_mode = (buffer[3] == 0x01); + goto done; + } + } + +done: + return printer_type; +} + +/* Private data stucture */ +struct canonselphy_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + + struct printer_data *printer; + + uint8_t bw_mode; + + int16_t paper_code; + + uint32_t plane_len; + + uint8_t *header; + uint8_t *plane_y; + uint8_t *plane_m; + uint8_t *plane_c; + uint8_t *footer; + + uint8_t *buffer; +}; + +static void *canonselphy_init(void) +{ + struct canonselphy_ctx *ctx = malloc(sizeof(struct canonselphy_ctx)); + if (!ctx) + return NULL; + memset(ctx, 0, sizeof(struct canonselphy_ctx)); + + /* Static initialization */ + setup_paper_codes(); + + ctx->buffer = malloc(MAX_HEADER); + + return ctx; +} + +static void canonselphy_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +{ + struct canonselphy_ctx *ctx = vctx; + + UNUSED(jobid); + + ctx->dev = dev; + ctx->endp_up = endp_up; + ctx->endp_down = endp_down; + + /* Special cases for some models */ + if (ctx->printer->type == P_ES40_CP790) { + struct libusb_device *device; + struct libusb_device_descriptor desc; + int i; + int printer_type; + + device = libusb_get_device(dev); + libusb_get_device_descriptor(device, &desc); + +#define USB_PID_CANON_CP790 0x31E7 +#define USB_PID_CANON_ES40 0x31EE + + if (desc.idProduct == USB_PID_CANON_CP790) + printer_type = P_CP790; + else if (desc.idProduct == USB_PID_CANON_ES40) + printer_type = P_ES40; + + for (i = 0; selphy_printers[i].type != -1; i++) { + if (selphy_printers[i].type == printer_type) { + ctx->printer = &selphy_printers[i]; + break; + } + } + } +} + +static void canonselphy_teardown(void *vctx) { + struct canonselphy_ctx *ctx = vctx; + + if (!ctx) + return; + + if (ctx->header) + free(ctx->header); + if (ctx->plane_y) + free(ctx->plane_y); + if (ctx->plane_m) + free(ctx->plane_m); + if (ctx->plane_c) + free(ctx->plane_c); + if (ctx->footer) + free(ctx->footer); + + if (ctx->buffer) + free(ctx->buffer); + + free(ctx); +} + +static int canonselphy_early_parse(void *vctx, int data_fd) +{ + struct canonselphy_ctx *ctx = vctx; + int printer_type, i; + + if (!ctx) + return -1; + + /* Figure out printer this file is intended for */ + i = read(data_fd, ctx->buffer, MAX_HEADER); + if (i != MAX_HEADER) { + if (i == 0) + return -1; + ERROR("Read failed (%d/%d/%d)\n", + i, 0, MAX_HEADER); + perror("ERROR: Read failed"); + return i; + } + + printer_type = parse_printjob(ctx->buffer, &ctx->bw_mode, &ctx->plane_len); + for (i = 0; selphy_printers[i].type != -1; i++) { + if (selphy_printers[i].type == printer_type) { + ctx->printer = &selphy_printers[i]; + break; + } + } + if (!ctx->printer) { + ERROR("Unrecognized printjob file format!\n"); + 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; +} + +static int canonselphy_read_parse(void *vctx, int data_fd) +{ + struct canonselphy_ctx *ctx = vctx; + int i, remain; + + if (!ctx) + return 1; + + if (ctx->header) { + free(ctx->header); + ctx->header = NULL; + } + if (ctx->plane_y) { + free(ctx->plane_y); + ctx->plane_y = NULL; + } + if (ctx->plane_m) { + free(ctx->plane_m); + ctx->plane_m = NULL; + } + if (ctx->plane_c) { + free(ctx->plane_c); + ctx->plane_c = NULL; + } + if (ctx->footer) { + free(ctx->footer); + ctx->footer = NULL; + } + + /* Set up buffers */ + ctx->plane_y = malloc(ctx->plane_len); + ctx->plane_m = malloc(ctx->plane_len); + ctx->plane_c = malloc(ctx->plane_len); + ctx->header = malloc(ctx->printer->init_length); + ctx->footer = malloc(ctx->printer->foot_length); + if (!ctx->plane_y || !ctx->plane_m || !ctx->plane_c || !ctx->header || + (ctx->printer->foot_length && !ctx->footer)) { + ERROR("Memory allocation failure!\n"); + return 1; + } + + /* Move over chunks already read in */ + memcpy(ctx->header, ctx->buffer, ctx->printer->init_length); + memcpy(ctx->plane_y, ctx->buffer+ctx->printer->init_length, + MAX_HEADER-ctx->printer->init_length); + + /* Read in YELLOW plane */ + remain = ctx->plane_len - (MAX_HEADER-ctx->printer->init_length); + while (remain > 0) { + i = read(data_fd, ctx->plane_y + (ctx->plane_len - remain), remain); + if (i < 0) + return i; + remain -= i; + } + + /* Read in MAGENTA plane */ + remain = ctx->plane_len; + while (remain > 0) { + i = read(data_fd, ctx->plane_m + (ctx->plane_len - remain), remain); + if (i < 0) + return i; + remain -= i; + } + + /* Read in CYAN plane */ + remain = ctx->plane_len; + while (remain > 0) { + i = read(data_fd, ctx->plane_c + (ctx->plane_len - remain), remain); + if (i < 0) + return i; + remain -= i; + } + + /* Read in footer */ + if (ctx->printer->foot_length) { + remain = ctx->printer->foot_length; + while (remain > 0) { + i = read(data_fd, ctx->footer + (ctx->printer->foot_length - remain), remain); + if (i < 0) + return i; + remain -= i; + } + } + + return 0; +} + +static int canonselphy_main_loop(void *vctx, int copies) { + struct canonselphy_ctx *ctx = vctx; + + uint8_t rdbuf[READBACK_LEN], rdbuf2[READBACK_LEN]; + int last_state = -1, state = S_IDLE; + int ret, num; + + /* Read in the printer status to clear last state */ + ret = read_data(ctx->dev, ctx->endp_up, + rdbuf, READBACK_LEN, &num); + + if (ret < 0) + return ret; + +top: + + if (state != last_state) { + if (dyesub_debug) + DEBUG("last_state %d new %d\n", last_state, state); + } + + /* Read in the printer status */ + ret = read_data(ctx->dev, ctx->endp_up, + rdbuf, READBACK_LEN, &num); + if (ret < 0) + return ret; + + if (num != READBACK_LEN) { + ERROR("Short read! (%d/%d)\n", num, READBACK_LEN); + return 4; + } + + /* Error detection */ + if (ctx->printer->error_detect(rdbuf)) { + if (ctx->printer->clear_error_len) + /* Try to clear error state */ + if ((ret = send_data(ctx->dev, ctx->endp_down, ctx->printer->clear_error, ctx->printer->clear_error_len))) + return ret; + return 4; + } + + if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) { + memcpy(rdbuf2, rdbuf, READBACK_LEN); + } else if (state == last_state) { + sleep(1); + } + last_state = state; + + fflush(stderr); + + switch(state) { + case S_IDLE: + INFO("Waiting for printer idle\n"); + if (fancy_memcmp(rdbuf, ctx->printer->init_readback, READBACK_LEN)) + break; + + /* Make sure paper/ribbon is correct */ + if (ctx->paper_code != -1) { + if (ctx->printer->type == P_CP_XXX) { + uint8_t pc = rdbuf[ctx->printer->paper_code_offset]; + if (((pc >> 4) & 0xf) != (ctx->paper_code & 0x0f)) { + + if (pc & 0xf0) { + ERROR("Incorrect paper tray loaded, aborting job!\n"); + return 3; + } else { + ERROR("No paper tray loaded, aborting!\n"); + return 4; + } + } + if ((pc & 0xf) != (ctx->paper_code & 0xf)) { + if (pc & 0x0f) { + ERROR("Incorrect ribbon loaded, aborting job!\n"); + return 3; + } else { + + ERROR("No ribbon loaded, aborting job!\n"); + return 4; + } + } + } else { + if (rdbuf[ctx->printer->paper_code_offset] != + ctx->paper_code) { + ERROR("Incorrect media/ribbon loaded (%02x vs %02x), aborting job!\n", + ctx->paper_code, + rdbuf[ctx->printer->paper_code_offset]); + return 3; /* Hold this job, don't stop queue */ + } + } + } else if (ctx->printer->type == P_CP790) { + uint8_t ribbon = rdbuf[4] >> 4; + uint8_t paper = rdbuf[5]; + + if (ribbon == 0xf) { + ERROR("No ribbon loaded, aborting!\n"); + return 4; + } else if (ribbon != ctx->paper_code) { + ERROR("Incorrect ribbon loaded, aborting job!\n"); + return 3; + } + if (paper == 0xf) { + ERROR("No paper tray loaded, aborting!\n"); + return 4; + } else if (paper != ctx->paper_code) { + ERROR("Incorrect paper loaded, aborting job!\n"); + return 3; + } + } + + state = S_PRINTER_READY; + break; + case S_PRINTER_READY: + INFO("Printing started; Sending init sequence\n"); + /* Send printer init */ + if ((ret = send_data(ctx->dev, ctx->endp_down, ctx->header, ctx->printer->init_length))) + return ret; + + state = S_PRINTER_INIT_SENT; + break; + case S_PRINTER_INIT_SENT: + if (!fancy_memcmp(rdbuf, ctx->printer->ready_y_readback, READBACK_LEN)) { + state = S_PRINTER_READY_Y; + } + break; + case S_PRINTER_READY_Y: + if (ctx->bw_mode) + INFO("Sending BLACK plane\n"); + else + INFO("Sending YELLOW plane\n"); + + if ((ret = send_data(ctx->dev, ctx->endp_down, ctx->plane_y, ctx->plane_len))) + return ret; + + state = S_PRINTER_Y_SENT; + break; + case S_PRINTER_Y_SENT: + if (!fancy_memcmp(rdbuf, ctx->printer->ready_m_readback, READBACK_LEN)) { + if (ctx->bw_mode) + state = S_PRINTER_DONE; + else + state = S_PRINTER_READY_M; + } + break; + case S_PRINTER_READY_M: + INFO("Sending MAGENTA plane\n"); + + if ((ret = send_data(ctx->dev, ctx->endp_down, ctx->plane_m, ctx->plane_len))) + return ret; + + state = S_PRINTER_M_SENT; + break; + case S_PRINTER_M_SENT: + if (!fancy_memcmp(rdbuf, ctx->printer->ready_c_readback, READBACK_LEN)) { + state = S_PRINTER_READY_C; + } + break; + case S_PRINTER_READY_C: + INFO("Sending CYAN plane\n"); + + if ((ret = send_data(ctx->dev, ctx->endp_down, ctx->plane_c, ctx->plane_len))) + return ret; + + state = S_PRINTER_C_SENT; + break; + case S_PRINTER_C_SENT: + if (!fancy_memcmp(rdbuf, ctx->printer->done_c_readback, READBACK_LEN)) { + state = S_PRINTER_DONE; + } + break; + case S_PRINTER_DONE: + if (ctx->printer->foot_length) { + INFO("Cleaning up\n"); + + if ((ret = send_data(ctx->dev, ctx->endp_down, ctx->footer, ctx->printer->foot_length))) + return ret; + } + state = S_FINISHED; + /* Intentional Fallthrough */ + case S_FINISHED: + INFO("All data sent to printer!\n"); + break; + } + if (state != S_FINISHED) + goto top; + + /* Clean up */ + if (terminate) + copies = 1; + + INFO("Print complete (%d copies remaining)\n", copies - 1); + + if (copies && --copies) { + state = S_IDLE; + goto top; + } + + return 0; +} + +/* Exported */ +#define USB_VID_CANON 0x04a9 +#define USB_PID_CANON_CP10 0x304A +#define USB_PID_CANON_CP100 0x3063 +#define USB_PID_CANON_CP200 0x307C +#define USB_PID_CANON_CP220 0x30BD +#define USB_PID_CANON_CP300 0x307D +#define USB_PID_CANON_CP330 0x30BE +#define USB_PID_CANON_CP400 0x30F6 +#define USB_PID_CANON_CP500 0x30F5 +#define USB_PID_CANON_CP510 0x3128 +#define USB_PID_CANON_CP520 520 // XXX 316f? 3172? (related to cp740/cp750) +#define USB_PID_CANON_CP530 0x31b1 +#define USB_PID_CANON_CP600 0x310B +#define USB_PID_CANON_CP710 0x3127 +#define USB_PID_CANON_CP720 0x3143 +#define USB_PID_CANON_CP730 0x3142 +#define USB_PID_CANON_CP740 0x3171 +#define USB_PID_CANON_CP750 0x3170 +#define USB_PID_CANON_CP760 0x31AB +#define USB_PID_CANON_CP770 0x31AA +#define USB_PID_CANON_CP780 0x31DD +#define USB_PID_CANON_CP790 0x31E7 +#define USB_PID_CANON_CP800 0x3214 +#define USB_PID_CANON_CP810 0x3256 +#define USB_PID_CANON_CP820 820 // XXX +#define USB_PID_CANON_CP900 0x3255 +#define USB_PID_CANON_CP910 910 // XXX +#define USB_PID_CANON_ES1 0x3141 +#define USB_PID_CANON_ES2 0x3185 +#define USB_PID_CANON_ES20 0x3186 +#define USB_PID_CANON_ES3 0x31AF +#define USB_PID_CANON_ES30 0x31B0 +#define USB_PID_CANON_ES40 0x31EE + +struct dyesub_backend canonselphy_backend = { + .name = "Canon SELPHY CP/ES", + .version = "0.80", + .uri_prefix = "canonselphy", + .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 = { + { USB_VID_CANON, USB_PID_CANON_CP10, P_CP10, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP100, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP200, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP220, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP300, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP330, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP400, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP500, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP510, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP520, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP530, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP600, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP710, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP720, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP730, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP740, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP750, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP760, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP770, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP780, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP790, P_ES40_CP790, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP800, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP810, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP820, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP900, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_CP910, P_CP_XXX, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_ES1, P_ES1, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_ES2, P_ES2_20, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_ES20, P_ES2_20, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_ES3, P_ES3_30, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_ES30, P_ES3_30, "Canon"}, + { USB_VID_CANON, USB_PID_CANON_ES40, P_ES40_CP790, "Canon"}, + { 0, 0, 0, ""} + } +}; +/* + + *************************************************************************** + + Stream formats and readback codes for supported printers + + *************************************************************************** + Selphy ES1: + + Init func: 40 00 [typeA] [pgcode] 00 00 00 00 00 00 00 00 + Plane func: 40 01 [typeB] [plane] [length, 32-bit LE] 00 00 00 00 + + TypeA codes are 0x10 for Color papers, 0x20 for B&W papers. + TypeB codes are 0x01 for Color papers, 0x02 for B&W papers. + + Plane codes are 0x01, 0x03, 0x07 for Y, M, and C, respectively. + B&W Jobs have a single plane code of 0x01. + + 'P' papers pgcode of 0x11 and a plane length of 2227456 bytes + 'L' pgcode of 0x12 and a plane length of 1601600 bytes. + 'C' pgcode of 0x13 and a plane length of 698880 bytes. + + Readback values seen: + + 02 00 00 00 02 01 [pg] 01 00 00 00 00 [idle, waiting for init seq] + 04 00 00 00 02 01 [pg] 01 00 00 00 00 [init received, not ready..] + 04 00 01 00 02 01 [pg] 01 00 00 00 00 [waiting for Y data] + 04 00 03 00 02 01 [pg] 01 00 00 00 00 [waiting for M data] + 04 00 07 00 02 01 [pg] 01 00 00 00 00 [waiting for C data] + 04 00 00 00 02 01 [pg] 01 00 00 00 00 [all data sent; not ready..] + 05 00 00 00 02 01 [pg] 01 00 00 00 00 [?? transitions to this] + 06 00 00 00 02 01 [pg] 01 00 00 00 00 [?? transitions to this] + 02 00 00 00 02 01 [pg] 01 00 00 00 00 [..transitions back to idle] + + 02 01 00 00 01 ff ff ff 00 80 00 00 [error, no media] + 02 00 00 00 01 ff ff ff 00 00 00 00 [error, cover open] + 0f 00 00 00 02 01 01 01 00 00 00 00 [error, out of media] + + Known paper types for all ES printers: P, Pbw, L, C, Cl + Additional types for ES3/30/40: Pg, Ps + + [pg] is: 0x01 for P-papers + 0x02 for L-papers + 0x03 for C-papers + + *************************************************************************** + Selphy ES2/20: + + Init func: 40 00 [pgcode] 00 02 00 00 [type] 00 00 00 [pg2] [length, 32-bit LE] + Plane func: 40 01 [plane] 00 00 00 00 00 00 00 00 00 + + Type codes are 0x00 for Color papers, 0x01 for B&W papers. + + Plane codes are 0x01, 0x02, 0x03 for Y, M, and C, respectively. + B&W Jobs have a single plane code of 0x01. + + 'P' papers pgcode of 0x01 and a plane length of 2227456 bytes + 'L' pgcode of 0x02 and a plane length of 1601600 bytes. + 'C' pgcode of 0x03 and a plane length of 698880 bytes. + + pg2 is 0x00 for all media types except for 'C', which is 0x01. + + Readback values seen on an ES2: + + 02 00 00 00 [pg] 00 [pg2] [xx] 00 00 00 00 [idle, waiting for init seq] + 03 00 01 00 [pg] 00 [pg2] [xx] 00 00 00 00 [init complete, ready for Y] + 04 00 01 00 [pg] 00 [pg2] [xx] 00 00 00 00 [? paper loaded] + 05 00 01 00 [pg] 00 [pg2] [xx] 00 00 00 00 [? transitions to this] + 06 00 03 00 [pg] 00 [pg2] [xx] 00 00 00 00 [ready for M] + 08 00 03 00 [pg] 00 [pg2] [xx] 00 00 00 00 [? transitions to this] + 09 00 07 00 [pg] 00 [pg2] [xx] 00 00 00 00 [ready for C] + 09 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [? transitions to this] + 0b 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [? transisions to this] + 0c 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [? transitions to this] + 0f 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [? transitions to this] + 13 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [? transitions to this] + + 14 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [out of paper/ink] + 14 00 01 00 [pg] 00 [pg2] 00 01 00 00 00 [out of paper/ink] + + 16 01 00 00 [pg] 00 [pg2] 00 00 00 00 00 [error, cover open] + 02 00 00 00 05 05 02 00 00 00 00 00 [error, no media] + + [xx] can be 0x00 or 0xff, depending on if a previous print job has + completed or not. + + [pg] is: 0x01 for P-papers + 0x02 for L-papers + 0x03 for C-papers + + [pg2] is: 0x00 for P & L papers + 0x01 for Cl-paper + + *** note: may refer to Label (0x01) vs non-Label (0x00) media. + + *************************************************************************** + Selphy ES3/30: + + Init func: 40 00 [pgcode] [type] 00 00 00 00 00 00 00 00 [length, 32-bit LE] + Plane func: 40 01 [plane] 00 00 00 00 00 00 00 00 00 + + End func: 40 20 00 00 00 00 00 00 00 00 00 00 + + Type codes are 0x00 for Color papers, 0x01 for B&W papers. + + Plane codes are 0x01, 0x02, 0x03 for Y, M, and C, respectively. + B&W Jobs have a single plane code of 0x01. + + 'P' papers pgcode of 0x01 and a plane length of 2227456 bytes. + 'L' pgcode of 0x02 and a plane length of 1601600 bytes. + 'C' pgcode of 0x03 and a plane length of 698880 bytes. + + Readback values seen on an ES3 & ES30: + + 00 ff 00 00 ff ff ff ff 00 00 00 00 [idle, waiting for init seq] + 01 ff 01 00 ff ff ff ff 00 00 00 00 [init complete, ready for Y] + 03 ff 01 00 ff ff ff ff 00 00 00 00 [?] + 03 ff 02 00 ff ff ff ff 00 00 00 00 [ready for M] + 05 ff 02 00 ff ff ff ff 00 00 00 00 [?] + 05 ff 03 00 ff ff ff ff 00 00 00 00 [ready for C] + 07 ff 03 00 ff ff ff ff 00 00 00 00 [?] + 0b ff 03 00 ff ff ff ff 00 00 00 00 [?] + 13 ff 03 00 ff ff ff ff 00 00 00 00 [?] + 00 ff 10 00 ff ff ff ff 00 00 00 00 [ready for footer] + + 01 ff 10 00 ff ff ff ff 01 00 0f 00 [communication error] + 00 ff 01 00 ff ff ff ff 01 00 01 00 [error, no media/ink] + 00 ff 01 00 ff ff ff ff 05 00 01 00 [error, incorrect media] + 00 ff 01 00 ff ff ff ff 03 00 02 00 [attempt to print with no media] + 00 ff 01 00 ff ff ff ff 08 00 04 00 [attempt to print with cover open] + + There appears to be no paper code in the readback; codes were identical for + the standard 'P-Color' and 'Cl' cartridges: + + *************************************************************************** + Selphy ES40: + + Init func: 40 00 [pgcode] [type] 00 00 00 00 00 00 00 00 [length, 32-bit LE] + Plane func: 40 01 [plane] 00 00 00 00 00 00 00 00 00 + + End func: 40 20 00 00 00 00 00 00 00 00 00 00 + + Type codes are 0x00 for Color papers, 0x01 for B&W papers. + + Plane codes are 0x01, 0x02, 0x03 for Y, M, and C, respectively. + B&W Jobs have a single plane code of 0x01. + + 'P' papers pgcode of 0x00 and a plane length of 2227456 bytes. + 'L' pgcode of 0x01 and a plane length of 1601600 bytes. + 'C' pgcode of 0x02 and a plane length of 698880 bytes. + + Readback values seen on an ES40: + + 00 00 ff 00 00 00 00 00 00 00 00 [pg] + 00 00 00 00 00 00 00 00 00 00 00 [pg] [idle, ready for header] + 00 01 01 00 00 00 00 00 00 00 00 [pg] [ready for Y data] + 00 03 01 00 00 00 00 00 00 00 00 [pg] [transitions to this] + 00 03 02 00 00 00 00 00 00 00 00 [pg] [ready for M data] + 00 05 02 00 00 00 00 00 00 00 00 [pg] [transitions to this] + 00 05 03 00 00 00 00 00 00 00 00 [pg] [ready for C data] + 00 07 03 00 00 00 00 00 00 00 00 [pg] [transitions to this] + 00 0b ff 00 00 00 00 00 00 00 00 [pg] [transitions to this] + 00 0e ff 00 00 00 00 00 00 00 00 [pg] [transitions to this] + 00 00 10 00 00 00 00 00 00 00 00 [pg] [ready for footer] + + 00 ** ** [xx] 00 00 00 00 00 00 00 [pg] [error] + + [xx]: + 01: Generic communication error + 32: Cover open / media empty + + [pg] is as follows: + + 'P' paper 0x11 + 'L' paper 0x22 + 'C' paper 0x33 + 'W' paper 0x44 + + *************************************************************************** + Selphy CP790: + + Init func: 40 00 [pgcode] 00 00 00 00 00 00 00 00 00 [length, 32-bit LE] + Plane func: 40 01 [plane] 00 00 00 00 00 00 00 00 00 + + End func: 40 20 00 00 00 00 00 00 00 00 00 00 + + Reset func: 40 10 00 00 00 00 00 00 00 00 00 00 + + Plane codes are 0x01, 0x02, 0x03 for Y, M, and C, respectively. + + 'P' papers pgcode of 0x00 and a plane length of 2227456 bytes. + 'L' pgcode of 0x01 and a plane length of 1601600 bytes. + 'C' pgcode of 0x02 and a plane length of 698880 bytes. + 'W' pgcode of 0x03 and a plane length of 2976512 bytes. + + Readback values seen on an CP790: + + 00 00 ff 00 [pg1] [pg2] 00 00 00 00 00 02 + 00 00 00 00 [pg1] [pg2] 00 00 00 00 00 02 [idle, ready for header] + 00 00 01 00 [pg1] [pg2] 00 00 00 00 00 02 + 00 01 01 00 [pg1] [pg2] 00 00 00 00 00 02 [ready for Y data] + 00 03 01 00 [pg1] [pg2] 00 00 00 00 00 02 [transitions to this] + 00 03 02 00 [pg1] [pg2] 00 00 00 00 00 02 [ready for M data] + 00 05 02 00 [pg1] [pg2] 00 00 00 00 00 02 [transitions to this] + 00 05 03 00 [pg1] [pg2] 00 00 00 00 00 02 [ready for C data] + 00 0b ff 00 [pg1] [pg2] 00 00 00 00 00 02 [transitions to this] + 00 0e ff 00 [pg1] [pg2] 00 00 00 00 00 02 [transitions to this] + 00 00 10 00 [pg1] [pg2] 00 00 00 00 00 02 [ready for footer] + + [pg1] is: [pg2] is: + + 0x00 'P' ribbon 0x00 'P' paper + 0x10 'L' ribbon 0x01 'L' paper + 0x20 'C' ribbon 0x02 'C' paper + 0x30 'W' ribbon 0x03 'W' paper + 0xff NO RIBBON 0xff NO PAPER TRAY + + Other readbacks seen: + + 00 00 01 11 [pg1] [pg2] 00 00 00 00 00 02 [emptytray, ink match job ] + 00 00 01 12 [pg1] [pg2] 00 00 00 00 00 02 [ notray, ink match job ] + 00 00 01 13 [pg1] [pg2] 00 00 00 00 00 02 [ empty tray + mismatch ink ] + 00 00 01 21 [pg1] [pg2] 00 00 00 00 00 02 [ depleted ribbon, match ink ] + 00 00 01 22 [pg1] [pg2] 00 00 00 00 00 02 [ no paper tray ] + 00 00 01 23 [pg1] [pg2] 00 00 00 00 00 02 [ empty tray, ink mismatch ] + + Note : These error conditions are confusing. + + *************************************************************************** + Selphy CP-10: + + Init func: 40 00 00 00 00 00 00 00 00 00 00 00 + Plane func: 40 01 00 [plane] [length, 32-bit LE] 00 00 00 00 + + plane codes are 0x00, 0x01, 0x02 for Y, M, and C, respectively. + + length is always '00 60 81 0a' which is 688480 bytes. + + Error clear: 40 10 00 00 00 00 00 00 00 00 00 00 + + Known readback values: + + 01 00 00 00 00 00 00 00 00 00 00 00 [idle, waiting for init] + 02 00 00 00 00 00 00 00 00 00 00 00 [init sent, paper feeding] + 02 00 00 00 00 00 00 00 00 00 00 00 [init sent, paper feeding] + 02 00 00 00 00 00 00 00 00 00 00 00 [waiting for Y data] + 04 00 00 00 00 00 00 00 00 00 00 00 [waiting for M data] + 08 00 00 00 00 00 00 00 00 00 00 00 [waiting for C data] + 10 00 00 00 00 00 00 00 00 00 00 00 [C done, waiting] + 20 00 00 00 00 00 00 00 00 00 00 00 [All done] + + 02 00 80 00 00 00 00 00 00 00 00 00 [No ribbon] + 02 00 80 00 00 00 00 00 00 00 00 00 [Ribbon depleted] + 02 00 01 00 00 00 00 00 00 00 00 00 [No paper] + + There are no media type codes; the printer only supports one type. + + *************************************************************************** + Selphy CP-series (except for CP790 & CP-10): + + This is known to apply to: + CP-100, CP-200, CP-300, CP-330, CP400, CP500, CP510, CP710, + CP720, CP730, CP740, CP750, CP760, CP770, CP780, CP800, CP900 + + Init func: 40 00 00 [pgcode] 00 00 00 00 00 00 00 00 + Plane func: 40 01 00 [plane] [length, 32-bit LE] 00 00 00 00 + End func: 00 00 00 00 # NOTE: CP900 only, and not necessary! + + Error clear: 40 10 00 00 00 00 00 00 00 00 00 00 + + plane codes are 0x00, 0x01, 0x02 for Y, M, and C, respectively. + + 'P' papers pgcode 0x01 plane length 2227456 bytes. + 'L' pgcode 0x02 plane length 1601600 bytes. + 'C' pgcode 0x03 plane length 698880 bytes. + 'W' pgcode 0x04 plane length 2976512 bytes. + + Known readback values: + + 01 00 00 00 [ss] 00 [pg] 00 00 00 00 [xx] [idle, waiting for init] + 02 00 [rr] 00 00 00 [pg] 00 00 00 00 [xx] [init sent, paper feeding] + 02 00 [rr] 00 10 00 [pg] 00 00 00 00 [xx] [init sent, paper feeding] + 02 00 [rr] 00 70 00 [pg] 00 00 00 00 [xx] [waiting for Y data] + 04 00 00 00 00 00 [pg] 00 00 00 00 [xx] [waiting for M data] + 08 00 00 00 00 00 [pg] 00 00 00 00 [xx] [waiting for C data] + 10 00 00 00 00 00 [pg] 00 00 00 00 [xx] [C done, waiting] + 20 00 00 00 00 00 [pg] 00 00 00 00 [xx] [All done] + + [xx] is 0x01 on the CP780/CP800/CP900, 0x00 on all others. + + [rr] is error code: + 0x00 no error + 0x01 paper out + 0x04 ribbon problem + 0x08 ribbon depleted + + [ss] is either 0x00 or 0x70. Unsure as to its significance; perhaps it + means paper or ribbon is already set to go? + + [pg] is as follows: + + 'P' paper 0x11 + 'L' paper 0x22 + 'C' paper 0x33 + 'W' paper 0x44 + + First four bits are paper, second four bits are the ribbon. They aren't + necessarily identical. So it's possible to have a code of, say, + 0x41 if the 'Wide' paper tray is loaded with a 'P' ribbon. A '0' is used + to signify nothing being loaded. + + +*/ diff --git a/src/cups/shinko_s2145_print.c b/src/cups/shinko_s2145_print.c new file mode 100644 index 0000000..68c3e31 --- /dev/null +++ b/src/cups/shinko_s2145_print.c @@ -0,0 +1,1782 @@ +/* + * Shinko/Sinfonia CHC-S2145 CUPS backend -- libusb-1.0 version + * + * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org> + * + * Development of this backend was sponsored by: + * + * LiveLink Technology [ www.livelinktechnology.net ] + * + * The latest version of this program can be found at: + * + * http://git.shaftnet.org/cgit/selphy_print.git + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * [http://www.gnu.org/licenses/gpl-2.0.html] + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <signal.h> + +#include "backend_common.h" + + +enum { + S_IDLE = 0, + S_PRINTER_READY_CMD, + S_PRINTER_SENT_DATA, + S_FINISHED, +}; + +/* Structure of printjob header. All fields are LITTLE ENDIAN */ +struct s2145_printjob_hdr { + uint32_t len1; /* Fixed at 0x10 */ + uint32_t model; /* Fixed at '2145' (decimal) */ + uint32_t unk2; + uint32_t unk3; + + uint32_t len2; /* Fixed at 0x64 */ + uint32_t unk5; + uint32_t media; + uint32_t unk6; + + uint32_t method; + uint32_t mode; + uint32_t unk7; + 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 shinkos2145_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + uint8_t jobid; + uint8_t fast_return; + + struct s2145_printjob_hdr hdr; + + uint8_t *databuf; + int datalen; +}; + +/* Structs for printer */ +struct s2145_cmd_hdr { + uint16_t cmd; + uint16_t len; /* Not including this header */ +} __attribute__((packed)); + +#define S2145_CMD_STATUS 0x0001 +#define S2145_CMD_MEDIAINFO 0x0002 +#define S2145_CMD_MODELNAME 0x0003 +#define S2145_CMD_ERRORLOG 0x0004 +#define S2145_CMD_PRINTJOB 0x4001 +#define S2145_CMD_CANCELJOB 0x4002 +#define S2145_CMD_FLASHLED 0x4003 +#define S2145_CMD_RESET 0x4004 +#define S2145_CMD_READTONE 0x4005 +#define S2145_CMD_BUTTON 0x4006 +#define S2145_CMD_GETUNIQUE 0x8003 +#define S2145_CMD_FWINFO 0xC003 +#define S2145_CMD_UPDATE 0xC004 +#define S2145_CMD_SETUNIQUE 0xC007 + +static char *cmd_names(uint16_t v) { + switch (le16_to_cpu(v)) { + case S2145_CMD_STATUS: + return "Get Status"; + case S2145_CMD_MEDIAINFO: + return "Get Media Info"; + case S2145_CMD_MODELNAME: + return "Get Model Name"; + case S2145_CMD_ERRORLOG: + return "Get Error Log"; + case S2145_CMD_PRINTJOB: + return "Print"; + case S2145_CMD_CANCELJOB: + return "Cancel Print"; + case S2145_CMD_FLASHLED: + return "Flash LEDs"; + case S2145_CMD_RESET: + return "Reset"; + case S2145_CMD_READTONE: + return "Read Tone Curve"; + case S2145_CMD_BUTTON: + return "Button Enable"; + case S2145_CMD_GETUNIQUE: + return "Get Unique String"; + case S2145_CMD_FWINFO: + return "Get Firmware Info"; + case S2145_CMD_UPDATE: + return "Update"; + case S2145_CMD_SETUNIQUE: + return "Set Unique String"; + default: + return "Unknown Command"; + } +}; + +struct s2145_print_cmd { + struct s2145_cmd_hdr hdr; + uint8_t id; + uint16_t count; + uint16_t columns; + uint16_t rows; + uint8_t media; + uint8_t mode; + uint8_t method; +} __attribute__((packed)); + +#define PRINT_MEDIA_4x6 0x00 +#define PRINT_MEDIA_5x3_5 0x01 +#define PRINT_MEDIA_5x7 0x03 +#define PRINT_MEDIA_6x9 0x05 +#define PRINT_MEDIA_6x8 0x06 +#define PRINT_MEDIA_2x6 0x07 + +static char *print_medias (uint8_t v) { + switch (v) { + case PRINT_MEDIA_4x6: + return "4x6"; + case PRINT_MEDIA_5x3_5: + return "5x3.5"; + case PRINT_MEDIA_5x7: + return "5x7"; + case PRINT_MEDIA_6x9: + return "6x9"; + case PRINT_MEDIA_6x8: + return "6x8"; + case PRINT_MEDIA_2x6: + return "2x6"; + default: + return "Unknown"; + } +} + +#define PRINT_MODE_DEFAULT 0x01 +#define PRINT_MODE_STD_GLOSSY 0x02 +#define PRINT_MODE_FINE_GLOSSY 0x03 +#define PRINT_MODE_STD_MATTE 0x04 +#define PRINT_MODE_FINE_MATTE 0x05 +#define PRINT_MODE_STD_EGLOSSY 0x06 +#define PRINT_MODE_FINE_EGLOSSY 0x07 + +#if 0 +static char *print_modes(uint8_t v) { + switch (v) { + case PRINT_MODE_DEFAULT: + return "Default"; + case PRINT_MODE_STD_GLOSSY: + return "Std Glossy"; + case PRINT_MODE_FINE_GLOSSY: + return "Fine Glossy"; + case PRINT_MODE_STD_MATTE: + return "Std Matte"; + case PRINT_MODE_FINE_MATTE: + return "Fine Matte"; + case PRINT_MODE_STD_EGLOSSY: + return "Std ExGlossy"; + case PRINT_MODE_FINE_EGLOSSY: + return "Fine ExGlossy"; + default: + return "Unknown"; + } +} +#endif + +#define PRINT_METHOD_STD 0x00 +#define PRINT_METHOD_4x6_2UP 0x02 +#define PRINT_METHOD_2x6_2UP 0x04 + +static char *print_methods (uint8_t v) { + switch (v) { + case PRINT_METHOD_STD: + return "Standard"; + case PRINT_METHOD_4x6_2UP: + return "4x6 2up"; + case PRINT_METHOD_2x6_2UP: + return "2x6 2up"; + default: + return "Unknown"; + } +} + +struct s2145_cancel_cmd { + struct s2145_cmd_hdr hdr; + uint8_t id; +} __attribute__((packed)); + +struct s2145_reset_cmd { + struct s2145_cmd_hdr hdr; + uint8_t target; +} __attribute__((packed)); + +#define RESET_PRINTER 0x03 +#define RESET_USER_CURVE 0x04 + +struct s2145_readtone_cmd { + struct s2145_cmd_hdr hdr; + uint8_t curveid; +} __attribute__((packed)); + +struct s2145_button_cmd { + struct s2145_cmd_hdr hdr; + uint8_t enabled; +} __attribute__((packed)); + +#define BUTTON_ENABLED 0x01 +#define BUTTON_DISABLED 0x00 + +struct s2145_fwinfo_cmd { + struct s2145_cmd_hdr hdr; + uint8_t target; +} __attribute__((packed)); + +#define FWINFO_TARGET_MAIN_BOOT 0x01 +#define FWINFO_TARGET_MAIN_APP 0x02 +#define FWINFO_TARGET_DSP_BOOT 0x03 +#define FWINFO_TARGET_DSP_APP 0x04 +#define FWINFO_TARGET_USB_BOOT 0x05 +#define FWINFO_TARGET_USB_APP 0x06 +#define FWINFO_TARGET_TABLES 0x07 + +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_BOOT: + return "DSP Boot "; + case FWINFO_TARGET_DSP_APP: + return "DSP App "; + case FWINFO_TARGET_USB_BOOT: + return "USB Boot "; + case FWINFO_TARGET_USB_APP: + return "USB App "; + case FWINFO_TARGET_TABLES: + return "Tables "; + default: + return "Unknown "; + } +} + +struct s2145_update_cmd { + struct s2145_cmd_hdr hdr; + uint8_t target; + uint32_t reserved; + 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 s2145_setunique_cmd { + struct s2145_cmd_hdr hdr; + uint8_t len; + uint8_t data[23]; /* Not necessarily all used. */ +} __attribute__((packed)); + +struct s2145_status_hdr { + uint8_t result; + uint8_t error; + uint8_t printer_major; + uint8_t printer_minor; + uint8_t reserved[3]; + 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 + + +/* + + I have a list of 72 different errors that are displayed on the printer, + but it appears the list is incomplete, and there's no mapping between + category and major code numbers. Also, not all of the individual errors + have minor codes listed (particularly the "consumables") + + These are the observed error codes to date (via stored error log dumps): + + 01/16 [ controller/parameter? ] + 05/15 [ jam/reloading? ] + 05/4e [ jam/unknown ] + 05/4f [ jam/unknown? ] + 05/61 [ jam/cantload? ] + 05/62 [ jam/cantload? ] + 05/64 [ jam/unknown? ] + 06/01 [ "cover open" ] + 06/0a [ consumables ? ] + 06/0b [ consumables ? ] + + Errors logged on printer A: + + 0x01/0x16 @ 77845 + 0x06/0x0b @ 77822, 70053 + 0x05/0x64 @ 76034 + 0x05/0x61 @ 76034, 75420 + 0x05/0x62 @ 76034 + 0x05/0x4e @ 69824, 69820, 69781 + + Errors logged on printer B: + + 0x06/0x0b @ 33270 + 0x05/0x4e @ 32952, 27672 + 0x05/0x4f @ 32935, 31834 + 0x05/0x61 @ 30856, 27982 + 0x01/0x16 @ 29132 + 0x05/0x64 @ 27982 + 0x05/0x62 @ 27982 + + Errors logged on printer C: + + 0x06/0x0a @ 78014, 77948, 77943, 77938 x2, 77937, 77936, 77933, 77919 + 0x05/0x15 @ 77938 + + + */ +static char *error_codes(uint8_t major, uint8_t minor) +{ + switch(major) { + case 0x06: + switch (minor) { + case 0x01: + return "Front Cover Open"; + default: + return "Unknown"; + } +#if 0 + case 9: /* "Controller Error" */ + switch(minor) { + case 0x01: + return "Controller: 01 EEPROM"; + case 0x02: + return "Controller: 02 EEPROM"; + case 0x04: + return "Controller: 04 DSP"; + case 0x05: + return "Controller: 05 DSP"; + case 0x06: + return "Controller: 06 Main FW"; + case 0x07: + return "Controller: 07 Main FW"; + case 0x08: + return "Controller: 08 DSP FW"; + case 0x09: + return "Controller: 09 DSP FW"; + case 0x0A: + return "Controller: 0A ASIC"; + case 0x0B: + return "Controller: 0B FPGA"; + case 0x0D: + return "Controller: 0D Tone Curve"; + case 0x16: + return "Controller: 16 Parameter Table"; + case 0x17: + return "Controller: 17 Parameter Table"; + case 0x18: + return "Controller: 18 Parameter Table"; + case 0x29: + return "Controller: 29 DSP Comms"; + case 0x2A: + return "Controller: 2A DSP Comms"; + default: + return "Controller: Unknown"; + } + case 8: /* XXXX "Mechanical Error" */ + switch (minor) { + case 0x01: + return "Mechanical: 01 Thermal Head"; + case 0x02: + return "Mechanical: 02 Thermal Head"; + case 0x03: + return "Mechanical: 03 Thermal Head"; + case 0x04: + return "Mechanical: 04 Pinch Roller"; + case 0x05: + return "Mechanical: 05 Pinch Roller"; + case 0x06: + return "Mechanical: 06 Pinch Roller"; + case 0x07: + return "Mechanical: 07 Pinch Roller"; + case 0x08: + return "Mechanical: 08 Pinch Roller"; + case 0x09: + return "Mechanical: 09 Cutter"; + case 0x0A: + return "Mechanical: 0A Cutter"; + default: + return "Mechanical: Unknown"; + } + case 2: /* XXXX "Sensor Error" */ + switch (minor) { + case 0x01: + return "Sensor: 01 Thermal Head"; + case 0x02: + return "Sensor: 02 Pinch Roller"; + case 0x03: + return "Sensor: 03 Cutter L"; + case 0x04: + return "Sensor: 04 Cutter R"; + case 0x05: + return "Sensor: 05 Cutter M"; + default: + return "Sensor: Unknown"; + } + case 3: /* XXXX "Temperature Sensor Error" */ + switch (minor) { + case 0x01: + return "Temp Sensor: 01 Thermal Head High"; + case 0x02: + return "Temp Sensor: 02 Thermal Head Low"; + case 0x03: + return "Temp Sensor: 03 Environment High"; + case 0x04: + return "Temp Sensor: 04 Environment Low"; + case 0x05: + return "Temp Sensor: 05 Warmup Timed Out"; + default: + return "Temp Sensor: Unknown"; + } + + case 4: /* XXXX "Front Cover Open" */ + switch (minor) { +// case 0x01: +// return "Front Cover: 01 Cover Open"; + case 0x02: + return "Front Cover: 02 Cover Open Error"; + default: + return "Front Cover: Unknown"; + } + case 5: /* XXX "Paper Jam" */ + switch (minor) { + case 0x01: + return "Paper Jam: 01 Loading"; + case 0x02: + return "Paper Jam: 02 Loading"; + case 0x03: + return "Paper Jam: 03 Loading"; + case 0x04: + return "Paper Jam: 04 Loading"; + case 0x05: + return "Paper Jam: 05 Loading"; + case 0x11: + return "Paper Jam: 11 Reloading"; + case 0x12: + return "Paper Jam: 12 Reloading"; + case 0x13: + return "Paper Jam: 13 Reloading"; + case 0x14: + return "Paper Jam: 14 Reloading"; + case 0x15: + return "Paper Jam: 15 Reloading"; + case 0x16: + return "Paper Jam: 16 Reloading"; + case 0x21: + return "Paper Jam: 21 Takeup"; + case 0x22: + return "Paper Jam: 22 Takeup"; + case 0x41: + return "Paper Jam: 41 Printing"; + case 0x42: + return "Paper Jam: 42 Printing"; + case 0x43: + return "Paper Jam: 43 Printing"; + case 0x44: + return "Paper Jam: 44 Printing"; + case 0x45: + return "Paper Jam: 45 Printing"; + case 0x46: + return "Paper Jam: 46 Printing"; + case 0x47: + return "Paper Jam: 47 Printing"; + case 0x49: + return "Paper Jam: 49 Printing"; + case 0x4A: + return "Paper Jam: 4A Ribbon Cut"; + case 0x61: + return "Paper Jam: 61 Can't Load"; + case 0x62: + return "Paper Jam: 62 Can't Load"; + default: + return "Paper Jam: Unknown"; + } + case 6: /* XXXX "Consumables" */ + switch (minor) { + case 0x01: // XXX + return "Consumables: XX No Ribbon+Paper"; + case 0x02: // XXX + return "Consumables: XX No Ribbon"; + case 0x03: // XXX + return "Consumables: XX Ribbon Empty"; + case 0x04: // XXX + return "Consumables: XX Ribbon Mismatch"; + case 0x05: // XXX + return "Consumables: XX 01 Ribbon Incorrect"; + case 0x06: // XXX + return "Consumables: XX 02 Ribbon Incorrect"; + case 0x07: // XXX + return "Consumables: XX 03 Ribbon Incorrect"; + case 0x08: // XXX + return "Consumables: XX No Paper"; + case 0x09: // XXX + return "Consumables: XX Paper Empty"; + case 0x0A: // XXX + return "Consumables: XX Paper Mismatch"; + default: + return "Consumables: Unknown"; + } +#endif + 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 +#define STATUS_FINISHED 0x6D + +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 STATUS_FINISHED: + return "Print Finished"; + case ERROR_PRINTER: + return "Printer Error"; + default: + return "Unknown"; + } +} + +struct s2145_status_resp { + struct s2145_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; + uint8_t bank1_printid; + uint8_t bank2_printid; + uint16_t bank1_remaining; + uint16_t bank1_finished; + uint16_t bank1_specified; + uint8_t bank1_status; + uint16_t bank2_remaining; + uint16_t bank2_finished; + uint16_t bank2_specified; + uint8_t bank2_status; + uint8_t tonecurve_status; +} __attribute__((packed)); + +#define BANK_STATUS_FREE 0x00 +#define BANK_STATUS_XFER 0x01 +#define BANK_STATUS_FULL 0x02 + +static char *bank_statuses(uint8_t v) +{ + switch (v) { + case 0: + return "Free"; + case 1: + return "Xfer"; + case 2: + return "Full"; + 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 s2145_readtone_resp { + struct s2145_status_hdr hdr; + uint16_t total_size; +} __attribute__((packed)); + +struct s2145_mediainfo_item { + uint8_t code; + uint16_t columns; + uint16_t rows; + uint8_t media_type; + uint8_t print_type; + uint8_t reserved[3]; +} __attribute__((packed)); + +#define MEDIA_TYPE_UNKNOWN 0x00 +#define MEDIA_TYPE_PAPER 0x01 + +static char *media_types(uint8_t v) { + switch (v) { + case MEDIA_TYPE_UNKNOWN: + return "Unknown"; + case MEDIA_TYPE_PAPER: + return "Paper"; + default: + return "Unknown"; + } +} + +struct s2145_mediainfo_resp { + struct s2145_status_hdr hdr; + uint8_t count; + struct s2145_mediainfo_item items[10]; /* Not all necessarily used */ +} __attribute__((packed)); + +struct s2145_modelname_resp { + struct s2145_status_hdr hdr; + uint8_t vendor[4]; + uint8_t product[4]; + uint8_t modelname[40]; +} __attribute__((packed)); + +struct s2145_error_item { + uint8_t major; + uint8_t minor; + uint32_t print_counter; +} __attribute__((packed)); + +struct s2145_errorlog_resp { + struct s2145_status_hdr hdr; + uint8_t count; + struct s2145_error_item items[10]; /* Not all necessarily used */ +} __attribute__((packed)); + +struct s2145_fwinfo_resp { + struct s2145_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)); + +struct s2145_getunique_resp { + struct s2145_status_hdr hdr; + uint8_t data[24]; /* Not necessarily all used. */ +} __attribute__((packed)); + +#define READBACK_LEN 128 /* Needs to be larger than largest response hdr */ +#define CMDBUF_LEN sizeof(struct s2145_print_cmd) + +uint8_t rdbuf[READBACK_LEN]; + +static int s2145_do_cmd(struct shinkos2145_ctx *ctx, + uint8_t *cmd, int cmdlen, + int minlen, int *num) +{ + int ret; + struct s2145_status_hdr *resp = (struct s2145_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 shinkos2145_ctx *ctx) +{ + struct s2145_cmd_hdr cmd; + struct s2145_status_resp *resp = (struct s2145_status_resp *) rdbuf; + int ret, num = 0; + + cmd.cmd = cpu_to_le16(S2145_CMD_STATUS); + cmd.len = cpu_to_le16(0); + + if ((ret = s2145_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 s2145_status_resp) - sizeof(struct s2145_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)); + + return 0; +} + +static int get_fwinfo(struct shinkos2145_ctx *ctx) +{ + struct s2145_fwinfo_cmd cmd; + struct s2145_fwinfo_resp *resp = (struct s2145_fwinfo_resp *)rdbuf; + int num = 0; + int i; + + cmd.hdr.cmd = cpu_to_le16(S2145_CMD_FWINFO); + cmd.hdr.len = cpu_to_le16(1); + + INFO("FW Information:\n"); + + for (i = FWINFO_TARGET_MAIN_BOOT ; i <= FWINFO_TARGET_TABLES ; i++) { + int ret; + cmd.target = i; + + if ((ret = s2145_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*resp), + &num)) < 0) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.hdr.cmd)); + continue; + } + + if (le16_to_cpu(resp->hdr.payload_len) != (sizeof(struct s2145_fwinfo_resp) - sizeof(struct s2145_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 shinkos2145_ctx *ctx) +{ + struct s2145_cmd_hdr cmd; + struct s2145_errorlog_resp *resp = (struct s2145_errorlog_resp *) rdbuf; + int ret, num = 0; + int i; + + cmd.cmd = cpu_to_le16(S2145_CMD_ERRORLOG); + cmd.len = cpu_to_le16(0); + + if ((ret = s2145_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 s2145_errorlog_resp) - sizeof(struct s2145_status_hdr))) + return -2; + + INFO("Stored Error Events: %d entries:\n", resp->count); + for (i = 0 ; i < resp->count ; i++) { + INFO(" %02d: @ %08u prints : 0x%02x/0x%02x (%s)\n", i, + le32_to_cpu(resp->items[i].print_counter), + resp->items[i].major, resp->items[i].minor, + error_codes(resp->items[i].major, resp->items[i].minor)); + } + return 0; +} + +static int get_mediainfo(struct shinkos2145_ctx *ctx) +{ + struct s2145_cmd_hdr cmd; + struct s2145_mediainfo_resp *resp = (struct s2145_mediainfo_resp *) rdbuf; + int ret, num = 0; + int i; + + cmd.cmd = cpu_to_le16(S2145_CMD_MEDIAINFO); + cmd.len = cpu_to_le16(0); + + if ((ret = s2145_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 s2145_mediainfo_resp) - sizeof(struct s2145_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, M 0x%02x (%s), P 0x%02x (%s)\n", i, + resp->items[i].code, print_medias(resp->items[i].code), + le16_to_cpu(resp->items[i].columns), + le16_to_cpu(resp->items[i].rows), + resp->items[i].media_type, media_types(resp->items[i].media_type), + resp->items[i].print_type, print_methods(resp->items[i].print_type)); + } + return 0; +} + +static int get_user_string(struct shinkos2145_ctx *ctx) +{ + struct s2145_cmd_hdr cmd; + struct s2145_getunique_resp *resp = (struct s2145_getunique_resp*) rdbuf; + int ret, num = 0; + + cmd.cmd = cpu_to_le16(S2145_CMD_GETUNIQUE); + cmd.len = cpu_to_le16(0); + + if ((ret = s2145_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; + INFO("Unique String: '%s'\n", resp->data); + return 0; +} + +static int set_user_string(struct shinkos2145_ctx *ctx, char *str) +{ + struct s2145_setunique_cmd cmd; + struct s2145_status_hdr *resp = (struct s2145_status_hdr *) rdbuf; + int ret, num = 0; + + if (str) { + cmd.len = strlen(str); + if (cmd.len > 23) + cmd.len = 23; + memset(cmd.data, 0, sizeof(cmd.data)); + strncpy((char*)cmd.data, str, cmd.len); + } else { + cmd.len = 0; + } + + cmd.hdr.cmd = cpu_to_le16(S2145_CMD_SETUNIQUE); + cmd.hdr.len = cpu_to_le16(cmd.len + 1); + + if ((ret = s2145_do_cmd(ctx, + (uint8_t*)&cmd, cmd.len + 1 + sizeof(cmd.hdr), + sizeof(*resp), + &num)) < 0) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.hdr.cmd)); + return ret; + } + + return 0; +} + +static int cancel_job(struct shinkos2145_ctx *ctx, char *str) +{ + struct s2145_cancel_cmd cmd; + struct s2145_status_hdr *resp = (struct s2145_status_hdr *) rdbuf; + int ret, num = 0; + + if (!str) + return -1; + + cmd.id = atoi(str); + + cmd.hdr.cmd = cpu_to_le16(S2145_CMD_CANCELJOB); + cmd.hdr.len = cpu_to_le16(1); + + if ((ret = s2145_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 shinkos2145_ctx *ctx) +{ + struct s2145_cmd_hdr cmd; + struct s2145_status_hdr *resp = (struct s2145_status_hdr *) rdbuf; + int ret, num = 0; + + cmd.cmd = cpu_to_le16(S2145_CMD_FLASHLED); + cmd.len = cpu_to_le16(0); + + if ((ret = s2145_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 reset_curve(struct shinkos2145_ctx *ctx, int target) +{ + struct s2145_reset_cmd cmd; + struct s2145_status_hdr *resp = (struct s2145_status_hdr *) rdbuf; + int ret, num = 0; + + cmd.target = target; + + cmd.hdr.cmd = cpu_to_le16(S2145_CMD_RESET); + cmd.hdr.len = cpu_to_le16(1); + + if ((ret = s2145_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 button_set(struct shinkos2145_ctx *ctx, int enable) +{ + struct s2145_button_cmd cmd; + struct s2145_status_hdr *resp = (struct s2145_status_hdr *) rdbuf; + int ret, num = 0; + + cmd.hdr.cmd = cpu_to_le16(S2145_CMD_BUTTON); + cmd.hdr.len = cpu_to_le16(1); + + cmd.enabled = enable; + + if ((ret = s2145_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 shinkos2145_ctx *ctx, int type, char *fname) +{ + struct s2145_readtone_cmd cmd; + struct s2145_readtone_resp *resp = (struct s2145_readtone_resp *) rdbuf; + int ret, num = 0; + + uint8_t *data; + uint16_t curves[768]; + + int i,j; + + cmd.curveid = type; + + cmd.hdr.cmd = cpu_to_le16(S2145_CMD_READTONE); + cmd.hdr.len = cpu_to_le16(1); + + INFO("Dump %s Tone Curve to '%s'\n", tonecurve_statuses(type), fname); + + if ((ret = s2145_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); + + 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 < 768; i++) { + /* Byteswap appropriately */ + curves[i] = cpu_to_be16(le16_to_cpu(curves[i])); + write(tc_fd, &curves[i], sizeof(uint16_t)); + } + close(tc_fd); + } + +done: + free(data); + return ret; +} + +static int set_tonecurve(struct shinkos2145_ctx *ctx, int target, char *fname) +{ + struct s2145_update_cmd cmd; + struct s2145_status_hdr *resp = (struct s2145_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); + + /* 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) != UPDATE_SIZE) { + ret = -2; + goto done; + } + close(tc_fd); + /* Byteswap data to local CPU.. */ + for (ret = 0; ret < UPDATE_SIZE ; ret+=2) { + data[ret] = be16_to_cpu(data[ret]); + } + + /* Set up command */ + cmd.target = target; + cmd.reserved = 0; + cmd.size = cpu_to_le32(UPDATE_SIZE); + + 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) { + data[ret] = cpu_to_le16(data[ret]); + } + + if ((ret = s2145_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))) { + goto done; + } + +done: + free(data); + + return ret; +} + +static void shinkos2145_cmdline(void) +{ + DEBUG("\t\t[ -b 0|1 ] # Disable/Enable control panel\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[ -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[ -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"); + 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"); +} + +int shinkos2145_cmdline_arg(void *vctx, int argc, char **argv) +{ + struct shinkos2145_ctx *ctx = vctx; + int i, j = 0; + + /* Reset arg parsing */ + optind = 1; + opterr = 0; + while ((i = getopt(argc, argv, "b:c:C:efFil:L:mr:R:suU:X:")) >= 0) { + switch(i) { + 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; + case 'c': + if (ctx) { + j = get_tonecurve(ctx, TONECURVE_USER, optarg); + break; + } + return 1; + case 'C': + if (ctx) { + j = set_tonecurve(ctx, TONECURVE_USER, optarg); + break; + } + return 1; + case 'e': + if (ctx) { + j = get_errorlog(ctx); + break; + } + return 1; + case 'f': + if (ctx) { + ctx->fast_return = 1; + break; + } + return 1; + case 'F': + if (ctx) { + j = flash_led(ctx); + break; + } + return 1; + case 'i': + if (ctx) { + j = get_fwinfo(ctx); + break; + } + return 1; + case 'l': + if (ctx) { + j = get_tonecurve(ctx, TONECURVE_CURRENT, optarg); + break; + } + return 1; + case 'L': + if (ctx) { + j = set_tonecurve(ctx, TONECURVE_CURRENT, optarg); + break; + } + return 1; + case 'm': + if (ctx) { + j = get_mediainfo(ctx); + break; + } + return 1; + case 'r': + if (ctx) { + j = reset_curve(ctx, RESET_USER_CURVE); + break; + } + return 1; + case 'R': + if (ctx) { + j = reset_curve(ctx, RESET_PRINTER); + break; + } + return 1; + case 's': + if (ctx) { + j = get_status(ctx); + break; + } + return 1; + case 'u': + if (ctx) { + j = get_user_string(ctx); + break; + } + return 1; + case 'U': + if (ctx) { + j = set_user_string(ctx, optarg); + break; + } + return 1; + case 'X': + if (ctx) { + j = cancel_job(ctx, optarg); + break; + } + return 1; + default: + break; /* Ignore completely */ + } + + if (j) return j; + } + + return 0; +} + +static void *shinkos2145_init(void) +{ + struct shinkos2145_ctx *ctx = malloc(sizeof(struct shinkos2145_ctx)); + if (!ctx) + return NULL; + 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; +} + +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; + + ctx->dev = dev; + ctx->endp_up = endp_up; + ctx->endp_down = endp_down; + + /* Ensure jobid is sane */ + ctx->jobid = (jobid & 0x7f) + 1; +} + + +static void shinkos2145_teardown(void *vctx) { + struct shinkos2145_ctx *ctx = vctx; + + if (!ctx) + return; + + if (ctx->databuf) + free(ctx->databuf); + + free(ctx); +} + +static int shinkos2145_read_parse(void *vctx, int data_fd) { + struct shinkos2145_ctx *ctx = vctx; + int ret; + uint8_t tmpbuf[4]; + + if (!ctx) + return 1; + + if (ctx->databuf) { + free(ctx->databuf); + ctx->databuf = NULL; + } + + /* 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; + 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.model) != 2145 || + le32_to_cpu(ctx->hdr.len2) != 0x64 || + le32_to_cpu(ctx->hdr.dpi) != 300) { + ERROR("Unrecognized header data format!\n"); + return 1; + } + + ctx->datalen = le32_to_cpu(ctx->hdr.rows) * le32_to_cpu(ctx->hdr.columns) * 3; + ctx->databuf = malloc(ctx->datalen); + if (!ctx->databuf) { + ERROR("Memory allocation failure!\n"); + return 1; + } + + { + 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 1; + } + + return 0; +} + +static int shinkos2145_main_loop(void *vctx, int copies) { + struct shinkos2145_ctx *ctx = vctx; + + int ret, num; + uint8_t cmdbuf[CMDBUF_LEN]; + uint8_t rdbuf2[READBACK_LEN]; + + int last_state = -1, state = S_IDLE; + + struct s2145_cmd_hdr *cmd = (struct s2145_cmd_hdr *) cmdbuf;; + struct s2145_print_cmd *print = (struct s2145_print_cmd *) cmdbuf; + struct s2145_status_resp *sts = (struct s2145_status_resp *) rdbuf; + + 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(S2145_CMD_STATUS); + cmd->len = cpu_to_le16(0); + + if ((ret = s2145_do_cmd(ctx, + cmdbuf, sizeof(*cmd), + sizeof(struct s2145_status_hdr), + &num)) < 0) { + ERROR("Failed to execute %s command\n", cmd_names(cmd->cmd)); + return ret; + } + + 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.error == ERROR_PRINTER) { + ERROR("Printer Reported Error: 0x%02x.0x%02x (%s)\n", + sts->hdr.printer_major, sts->hdr.printer_minor, + error_codes(sts->hdr.printer_major, sts->hdr.printer_minor)); + } + } else if (state == last_state) { + sleep(1); + } + last_state = state; + + fflush(stderr); + + switch (state) { + case S_IDLE: + INFO("Waiting for printer idle\n"); + /* Basic error handling */ + if (sts->hdr.result != RESULT_SUCCESS) + goto printer_error; + if (sts->hdr.error != ERROR_NONE) + goto printer_error; + + /* If either bank is free, continue */ + if (sts->bank1_status == BANK_STATUS_FREE || + sts->bank2_status == BANK_STATUS_FREE) + state = S_PRINTER_READY_CMD; + + break; + case S_PRINTER_READY_CMD: + INFO("Initiating print job (internal id %d)\n", ctx->jobid); + + memset(cmdbuf, 0, CMDBUF_LEN); + print->hdr.cmd = cpu_to_le16(S2145_CMD_PRINTJOB); + print->hdr.len = cpu_to_le16(sizeof (*print) - sizeof(*cmd)); + print->id = ctx->jobid; + print->count = cpu_to_le16(copies); + print->columns = cpu_to_le16(le32_to_cpu(ctx->hdr.columns)); + print->rows = cpu_to_le16(le32_to_cpu(ctx->hdr.rows)); + print->media = le32_to_cpu(ctx->hdr.media); + print->mode = le32_to_cpu(ctx->hdr.mode); + print->method = le32_to_cpu(ctx->hdr.method); + + if ((ret = s2145_do_cmd(ctx, + cmdbuf, sizeof(*print), + sizeof(struct s2145_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 != 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 ret; + + INFO("Waiting for printer to acknowledge completion\n"); + sleep(1); + state = S_PRINTER_SENT_DATA; + break; + case S_PRINTER_SENT_DATA: + if (sts->hdr.result != RESULT_SUCCESS) + goto printer_error; + if (ctx->fast_return) { + INFO("Fast return mode enabled.\n"); + state = S_FINISHED; + } + else if (sts->hdr.status == STATUS_READY || + sts->hdr.status == STATUS_FINISHED) + state = S_FINISHED; + break; + default: + break; + }; + + 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; + } + + return 0; + +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 1; /* CUPS_BACKEND_FAILED */ +} + +static int shinkos2145_query_serno(struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, char *buf, int buf_len) +{ + struct s2145_cmd_hdr cmd; + struct s2145_getunique_resp *resp = (struct s2145_getunique_resp*) rdbuf; + int ret, num = 0; + + struct shinkos2145_ctx ctx = { + .dev = dev, + .endp_up = endp_up, + .endp_down = endp_down, + }; + + cmd.cmd = cpu_to_le16(S2145_CMD_GETUNIQUE); + cmd.len = cpu_to_le16(0); + + if ((ret = s2145_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 0; +} + +/* Exported */ +#define USB_VID_SHINKO 0x10CE +#define USB_PID_SHINKO_S2145 0x000E + +struct dyesub_backend shinkos2145_backend = { + .name = "Shinko/Sinfonia CHC-S2145 (S2)", + .version = "0.31", + .uri_prefix = "shinkos2145", + .cmdline_usage = shinkos2145_cmdline, + .cmdline_arg = shinkos2145_cmdline_arg, + .init = shinkos2145_init, + .attach = shinkos2145_attach, + .teardown = shinkos2145_teardown, + .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, ""}, + { 0, 0, 0, ""} + } +}; + +/* CHC-S2145 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 2145d) + 64 00 00 00 00 00 00 00 TT 00 00 00 00 00 00 00 TT == Media Type + MM 00 00 00 PP 00 00 00 00 00 00 00 00 00 00 00 PP = Print Mode, MM = Print Method + 00 00 00 00 WW WW 00 00 HH HH 00 00 XX 00 00 00 XX == Copies + 00 00 00 00 00 00 00 00 00 00 00 00 ce ff ff ff + 00 00 00 00 ce ff ff ff QQ QQ 00 00 ce ff ff ff QQ == DPI, ie 300. + 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 new file mode 100644 index 0000000..15347b0 --- /dev/null +++ b/src/cups/sony_updr150_print.c @@ -0,0 +1,316 @@ +/* + * Sony UP-DR150 Photo Printer CUPS backend -- libusb-1.0 version + * + * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org> + * + * The latest version of this program can be found at: + * + * http://git.shaftnet.org/cgit/selphy_print.git + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * [http://www.gnu.org/licenses/gpl-2.0.html] + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <signal.h> + +#include "backend_common.h" + +/* Private data stucture */ +struct updr150_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + + uint8_t *databuf; + int datalen; +}; + +static void* updr150_init(void) +{ + struct updr150_ctx *ctx = malloc(sizeof(struct updr150_ctx)); + if (!ctx) + return NULL; + memset(ctx, 0, sizeof(struct updr150_ctx)); + return ctx; +} + +static void updr150_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +{ + struct updr150_ctx *ctx = vctx; + + UNUSED(jobid); + + ctx->dev = dev; + ctx->endp_up = endp_up; + ctx->endp_down = endp_down; +} + +static void updr150_teardown(void *vctx) { + struct updr150_ctx *ctx = vctx; + + if (!ctx) + return; + + if (ctx->databuf) + free(ctx->databuf); + free(ctx); +} + +#define MAX_PRINTJOB_LEN 16736455 +static int updr150_read_parse(void *vctx, int data_fd) { + struct updr150_ctx *ctx = vctx; + int len, run = 1; + + if (!ctx) + return 1; + + if (ctx->databuf) { + free(ctx->databuf); + ctx->databuf = NULL; + } + + ctx->datalen = 0; + ctx->databuf = malloc(MAX_PRINTJOB_LEN); + if (!ctx->databuf) { + ERROR("Memory allocation failure!\n"); + return 2; + } + + while(run) { + int i; + int keep = 0; + i = read(data_fd, ctx->databuf + ctx->datalen, 4); + if (i < 0) + return i; + if (i == 0) + break; + + memcpy(&len, ctx->databuf + ctx->datalen, sizeof(len)); + len = le32_to_cpu(len); + + /* Filter out chunks we don't send to the printer */ + switch (len) { + case 0xffffff6a: + case 0xfffffffc: + case 0xfffffffb: + case 0xfffffff4: + case 0xffffffed: + case 0xfffffff9: + case 0xfffffff8: + case 0xffffffec: + case 0xffffffeb: + case 0xfffffffa: + if(dyesub_debug) + DEBUG("Block ID '%08x' (len %d)\n", len, 0); + len = 0; + break; + case 0xfffffff3: + if(dyesub_debug) + DEBUG("Block ID '%08x' (len %d)\n", len, 0); + len = 0; + run = 0; + break; + case 0xffffffef: + case 0xfffffff5: + if(dyesub_debug) + DEBUG("Block ID '%08x' (len %d)\n", len, 4); + len = 4; + break; + default: + if (len & 0xff000000) { + ERROR("Unknown block ID '%08x', aborting!\n", len); + return 1; + } else { + /* Only keep these chunks */ + if(dyesub_debug) + DEBUG("Data block (len %d)\n", len); + keep = 1; + } + break; + } + if (keep) + ctx->datalen += sizeof(uint32_t); + + /* Read in the data chunk */ + while(len > 0) { + i = read(data_fd, ctx->databuf + ctx->datalen, len); + if (i < 0) + return i; + if (i == 0) + break; + if (keep) + ctx->datalen += i; + len -= i; + } + } + if (!ctx->datalen) + return 1; + + return 0; +} + +static int updr150_main_loop(void *vctx, int copies) { + struct updr150_ctx *ctx = vctx; + int i = 0, ret; + + if (!ctx) + return 1; + +top: + while (i < ctx->datalen) { + uint32_t len; + memcpy(&len, ctx->databuf + i, sizeof(len)); + len = le32_to_cpu(len); + + i += sizeof(uint32_t); + + if (dyesub_debug) + DEBUG("Sending %u bytes to printer @ %i\n", len, i); + if ((ret = send_data(ctx->dev, ctx->endp_down, + ctx->databuf + i, len))) + return ret; + + i += len; + } + + /* Clean up */ + if (terminate) + copies = 1; + + INFO("Print complete (%d copies remaining)\n", copies - 1); + + if (copies && --copies) { + goto top; + } + + return 0; +} + +/* Exported */ +#define USB_VID_SONY 0x054C +#define USB_PID_SONY_UPDR150 0x01E8 +#define USB_PID_SONY_UPDR200 0x035F + +struct dyesub_backend updr150_backend = { + .name = "Sony UP-DR150/UP-DR200", + .version = "0.13", + .uri_prefix = "sonyupdr150", + .init = updr150_init, + .attach = updr150_attach, + .teardown = updr150_teardown, + .read_parse = updr150_read_parse, + .main_loop = updr150_main_loop, + .devices = { + { USB_VID_SONY, USB_PID_SONY_UPDR150, P_SONY_UPDR150, ""}, + { USB_VID_SONY, USB_PID_SONY_UPDR200, P_SONY_UPDR150, ""}, + { 0, 0, 0, ""} + } +}; + +/* Sony UP-DR150/UP-DR200 Spool file format + + The spool file is a series of 4-byte commands, followed by optional + arguments. The purpose of the commands is unknown, but they presumably + instruct the driver to perform certain things. + + If you treat these 4 bytes as a 32-bit little-endian number, if the most significant + four bits are bits are non-zero, the value is is to be interpreted as a driver + command. If the most significant bits are zero, the value signifies that the following + N bytes of data should be sent to the printer as-is. + + Known driver "commands": + + 6a ff ff ff + fc ff ff ff + fb ff ff ff + f4 ff ff ff + ed ff ff ff + f9 ff ff ff + f8 ff ff ff + ec ff ff ff + eb ff ff ff + fa ff ff ff + f3 ff ff ff + ef ff ff ff XX 00 00 00 # XX == print size (0x01/0x02/0x03/0x04) + f5 ff ff ff YY 00 00 00 # YY == ??? (seen 0x01) + + All printer commands start with 0x1b, and are at least 7 bytes long. + + ************************************************************************ + + The data stream sent to the printer consists of all the commands in the + spool file, plus a couple other ones that generate responses. It is + unknown if those additional commands are necessary. This is a typical + sequence: + +[[ Sniff start of a UP-DR150 ]] + +<- 1b e0 00 00 00 0f 00 +-> 0e 00 00 00 00 00 00 00 00 04 a8 08 0a a4 00 + +<- 1b 16 00 00 00 00 00 +-> "reset" ?? + +[[ begin job ]] + +<- 1b ef 00 00 00 06 00 +-> 05 00 00 00 00 22 + +<- 1b e5 00 00 00 08 00 ** In spool file +<- 00 00 00 00 00 00 01 00 + +<- 1b c1 00 02 06 00 00 +-> 02 02 00 03 00 00 + +<- 1b ee 00 00 00 02 00 ** In spool file +<- 00 01 + +<- 1b 15 00 00 00 0d 00 ** In spool file +<- 00 00 00 00 07 00 00 00 00 08 00 0a a4 + +<- 1b 03 00 00 00 13 00 +-> 70 00 00 00 00 00 00 0b 00 00 00 00 00 00 00 00 + 00 00 00 + +<- 1b e1 00 00 00 0b 00 ** In spool file +<- 00 80 00 00 00 00 00 08 00 0a a4 + +<- 1b 03 00 00 00 13 00 +-> 70 00 00 00 00 00 00 0b 00 00 00 00 00 00 00 00 + 00 00 00 + +<- 1b ea 00 00 00 00 00 ff 60 00 00 ** In spool file +<- [[ 0x0060ff00 bytes of data ]] + +<- 1b e0 00 00 00 0f 00 +-> 0e 00 00 00 00 00 00 00 04 a8 08 00 0a a4 00 + +<- 1b 0a 00 00 00 00 00 ** In spool file +<- 1b 17 00 00 00 00 00 ** In spool file + +[[fin]] + +*/ diff --git a/src/cups/test-ppds b/src/cups/test-ppds index 4044b02..fb0c0fd 100755 --- a/src/cups/test-ppds +++ b/src/cups/test-ppds @@ -1,6 +1,8 @@ #!/bin/sh -make EXTRA_GENPPD_OPTS=-b ppd-clean ppd-global ppd-nls ppd-nonls +# Keeping this up to date with changing CUPS versions is a real headache + +make EXTRA_GENPPD_OPTS='-b -Z' ppd-clean ppd-global ppd-nls ppd-nonls # Most non-Macintosh systems won't have the Macintosh-specific profiles # installed in Macintosh-specific locations. @@ -25,7 +27,7 @@ fi # Use this with PPD files with translated numbers (genppd -N) # With normal globalized PPD files this will yield hundreds of megabytes # of errors. -echo $failures | xargs cupstestppd $cupstestppdopts 2>&1 |egrep -v 'Missing cupsICCProfile file' +echo $failures | xargs cupstestppd -r $cupstestppdopts 2>&1 |egrep -v 'Missing cupsICCProfile file' fail_count=`echo "$failures" | wc -l` echo "$fail_count/$ppd_count fail" diff --git a/src/cups/test-rastertogutenprint.in b/src/cups/test-rastertogutenprint.in index 9e4f07d..533063d 100755 --- a/src/cups/test-rastertogutenprint.in +++ b/src/cups/test-rastertogutenprint.in @@ -66,7 +66,7 @@ fi version="@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@"; cupsdir="@cups_conf_serverbin@/filter" -if [ -x "$cupsdir/pstoraster" -o -x "$cupsdir/cgpdftoraster" ] ; then +if [ -x "$cupsdir/pstoraster" -o -x "$cupsdir/gstoraster" -o -x "$cupsdir/cgpdftoraster" ] ; then pages="page-ranges=24-`expr 24 + $npages - 1` " else pages='' @@ -221,15 +221,19 @@ if [ -d ppd/C ] ; then is_duplicate $f fi if [ -z "$skip" ] ; then - echo "$f " + echo -n "`basename $f |sed -e 's/stp-//' -e 's/@GUTENPRINT_RELEASE_VERSION@.ppd.*$//'`... " 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`" + 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`" 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`" 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`" + 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`" else output="`($cupsdir/imagetoraster 1 1 1 1 \"$pages$cupsargs\" < calibrate.ppm 2>/dev/null | run_rastertogp | do_output) 2>&1`" fi diff --git a/src/escputil/Makefile.in b/src/escputil/Makefile.in index d738e30..1466da2 100644 --- a/src/escputil/Makefile.in +++ b/src/escputil/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -21,6 +20,51 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -39,8 +83,9 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/scripts/global.mk +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs \ + $(top_srcdir)/scripts/depcomp @BUILD_ESCPUTIL_TRUE@bin_PROGRAMS = escputil$(EXEEXT) subdir = src/escputil ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -67,27 +112,75 @@ am_escputil_OBJECTS = d4lib.$(OBJEXT) escputil.$(OBJEXT) escputil_OBJECTS = $(am_escputil_OBJECTS) am__DEPENDENCIES_1 = escputil_DEPENDENCIES = $(GUTENPRINT_LIBS) $(am__DEPENDENCIES_1) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(escputil_SOURCES) DIST_SOURCES = $(escputil_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -145,6 +238,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -156,6 +250,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -180,6 +275,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -327,6 +424,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -338,14 +436,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ @@ -366,7 +469,8 @@ uninstall-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ + -e 's/$$/$(EXEEXT)/' \ + `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files @@ -379,9 +483,10 @@ clean-binPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -escputil$(EXEEXT): $(escputil_OBJECTS) $(escputil_DEPENDENCIES) + +escputil$(EXEEXT): $(escputil_OBJECTS) $(escputil_DEPENDENCIES) $(EXTRA_escputil_DEPENDENCIES) @rm -f escputil$(EXEEXT) - $(LINK) $(escputil_OBJECTS) $(escputil_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(escputil_OBJECTS) $(escputil_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -393,25 +498,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/escputil.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo @@ -419,26 +524,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -450,15 +544,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -467,6 +557,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -518,10 +623,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -606,19 +716,19 @@ uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-libtool ctags distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-binPROGRAMS +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-binPROGRAMS @SET_MAKE@ diff --git a/src/escputil/d4lib.c b/src/escputil/d4lib.c index 0ba46b6..54f2a18 100644 --- a/src/escputil/d4lib.c +++ b/src/escputil/d4lib.c @@ -145,28 +145,28 @@ typedef struct errorMessage_s static errorMessage_t errorMessage[] = { - { 0x01, "Unable to begin conversation, try later." ,0 }, - { 0x02, "Protocol revision not supported." ,1 }, - { 0x03, "Transaction channel can´t be closed." ,0 }, - { 0x04, "No sufficient resources available now." ,0 }, - { 0x05, "Connection denied." ,1 }, - { 0x06, "Channel allready open." ,0 }, - { 0x07, "Credit overflow, previous credit remain valid." ,0 }, - { 0x08, "Channel is not open." ,1 }, - { 0x09, "Service not available on specified socket." ,1 }, - { 0x0a, "Service name to socket ID failed." ,1 }, - { 0x0b, "Init transaction failed." ,1 }, - { 0x0c, "Invalid packet size." ,1 }, - { 0x0d, "Requested packed size is 0, no data can be transfered.",0 }, - { 0x80, "Malformed packet, ignored." ,1 }, - { 0x81, "No credit for received packet, ignored" ,0 }, - { 0x82, "Reply don´t match with outstanding command, ignored." ,1 }, - { 0x83, "Packet size greater as negotiated size." ,1 }, - { 0x84, "Data received for a non opened channel." ,1 }, - { 0x85, "Reply with unknown result value received." ,1 }, - { 0x86, "Piggybacked credit in data packet cause overflow." ,1 }, - { 0x87, "Unknown 1284.4 Reply." ,0 }, - { 0x00, NULL ,0 } + { 0x01, "Unable to begin conversation, try later." ,0 }, + { 0x02, "Protocol revision not supported." ,1 }, + { 0x03, "Transaction channel can't be closed." ,0 }, + { 0x04, "No sufficient resources available now." ,0 }, + { 0x05, "Connection denied." ,1 }, + { 0x06, "Channel allready open." ,0 }, + { 0x07, "Credit overflow, previous credit remain valid." ,0 }, + { 0x08, "Channel is not open." ,1 }, + { 0x09, "Service not available on specified socket." ,1 }, + { 0x0a, "Service name to socket ID failed." ,1 }, + { 0x0b, "Init transaction failed." ,1 }, + { 0x0c, "Invalid packet size." ,1 }, + { 0x0d, "Requested packed size is 0, no data can be transfered." ,0 }, + { 0x80, "Malformed packet, ignored." ,1 }, + { 0x81, "No credit for received packet, ignored" ,0 }, + { 0x82, "Reply doesn't match with outstanding command, ignored." ,1 }, + { 0x83, "Packet size greater as negotiated size." ,1 }, + { 0x84, "Data received for a non opened channel." ,1 }, + { 0x85, "Reply with unknown result value received." ,1 }, + { 0x86, "Piggybacked credit in data packet cause overflow." ,1 }, + { 0x87, "Unknown 1284.4 Reply." ,0 }, + { 0x00, NULL ,0 } }; #define RESET_TIMER(ti,oti) { signal(SIGALRM, sig); \ @@ -1383,7 +1383,9 @@ void flushData(int fd, unsigned char socketID) /* */ /*******************************************************************/ -static void clearSndBuf(int fd) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-function" +static inline void clearSndBuf(int fd) { char buf[256]; struct itimerval ti, oti; @@ -1393,6 +1395,7 @@ static void clearSndBuf(int fd) SET_TIMER(ti,oti, d4RdTimeout); RESET_TIMER(ti,oti); } +#pragma GCC diagnostic pop void setDebug(int debug) { diff --git a/src/escputil/escputil.c b/src/escputil/escputil.c index 2abec6e..ad50c0a 100644 --- a/src/escputil/escputil.c +++ b/src/escputil/escputil.c @@ -1,5 +1,5 @@ /* - * "$Id: escputil.c,v 1.108 2012/01/19 13:26:57 m0m Exp $" + * "$Id: escputil.c,v 1.109 2014/01/04 00:25:38 rlk Exp $" * * Printer maintenance utility for EPSON Stylus (R) printers * @@ -61,11 +61,14 @@ void do_head_clean(void); void do_help(int code); void do_identify(void); void do_ink_level(void); -void do_extended_ink_info(int); +void do_extended_ink_info(void); void do_nozzle_check(void); void do_status(void); +void do_reset_ink_levels(void); int do_print_cmd(void); +#pragma GCC diagnostic ignored "-Woverlength-strings" +#pragma GCC diagnostic ignored "-Wformat-nonliteral" const char *banner = N_("\ Escputil version " VERSION ", Copyright (C) 2000-2006 Robert Krawitz\n\ @@ -103,6 +106,7 @@ struct option optlist[] = { "nozzle-check", 0, NULL, (int) 'n' }, { "align-head", 0, NULL, (int) 'a' }, { "status", 0, NULL, (int) 's' }, + { "reset-ink-levels", 0, NULL, (int) 'X' }, { "new", 0, NULL, (int) 'u' }, { "help", 0, NULL, (int) 'h' }, { "identify", 0, NULL, (int) 'd' }, @@ -117,7 +121,7 @@ struct option optlist[] = }; const char *help_msg = N_("\ -Usage: escputil [-c | -n | -a | -i | -e | -s | -d | -l | -M]\n\ +Usage: escputil [-c | -n | -a | -i | -e | -s | -d | -l | -M | -X]\n\ [-P printer | -r device] [-u] [-q] [-m model] [ -S ]\n\ [-C choices] [-p patterns]\n\ Perform maintenance on EPSON Stylus (R) printers.\n\ @@ -142,6 +146,9 @@ Examples: escputil --ink-level --raw-device /dev/usb/lp0\n\ -d|--identify Query the printer for make and model information.\n\ This requires read/write access to the raw printer\n\ device.\n\ + -X|--reset-ink Reset ink levels.\n\ + This requires read/write access to the raw printer\n\ + device.\n\ -l|--license Display the license/warranty terms of this program.\n\ -M|--list-models List the available printer models.\n\ -h|--help Print this help message.\n\ @@ -161,7 +168,7 @@ Examples: escputil --ink-level --raw-device /dev/usb/lp0\n\ #else const char *help_msg = N_("\ Usage: escputil [OPTIONS] [COMMAND]\n\ -Usage: escputil [-c | -n | -a | -i | -e | -s | -d | -l | -M]\n\ +Usage: escputil [-c | -n | -a | -i | -e | -s | -d | -l | -M | -X]\n\ [-P printer | -r device] [-u] [-q] [-m model] [ -S ]\n\ [-C choices] [-p patterns]\n\ Perform maintenance on EPSON Stylus (R) printers.\n\ @@ -185,6 +192,8 @@ Examples: escputil -i -r /dev/usb/lp0\n\ read/write access to the raw printer device.\n\ -d Query the printer for make and model information. This\n\ requires read/write access to the raw printer device.\n\ + -X Reset ink levels. This requires read/write access to the raw\n\ + printer device.\n\ -l Display the license/warranty terms of this program.\n\ -M List the available printer models.\n\ -h Print this help message.\n\ @@ -296,7 +305,7 @@ main(int argc, char **argv) /* Set up gettext */ #ifdef HAVE_LOCALE_H - char *locale = stp_strdup(setlocale (LC_ALL, "")); + (void) setlocale (LC_ALL, ""); #endif #ifdef ENABLE_NLS bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR); @@ -312,9 +321,9 @@ main(int argc, char **argv) { #if defined(HAVE_GETOPT_H) && defined(HAVE_GETOPT_LONG) int option_index = 0; - c = getopt_long(argc, argv, "P:r:iecnasduqm:hlMSC:p:", optlist, &option_index); + c = getopt_long(argc, argv, "P:r:iecnasXduqm:hlMSC:p:", optlist, &option_index); #else - c = getopt(argc, argv, "P:r:iecnasduqm:hlMSC:p:"); + c = getopt(argc, argv, "P:r:iecnasXduqm:hlMSC:p:"); #endif if (c == -1) break; @@ -331,6 +340,7 @@ main(int argc, char **argv) case 'd': case 's': case 'o': + case 'X': if (operation) do_help(1); operation = c; @@ -421,7 +431,7 @@ main(int argc, char **argv) do_ink_level(); break; case 'e': - do_extended_ink_info(1); + do_extended_ink_info(); break; case 'a': do_align(); @@ -432,6 +442,9 @@ main(int argc, char **argv) case 's': do_status(); break; + case 'X': + do_reset_ink_levels(); + break; default: do_help(1); } @@ -601,7 +614,7 @@ start_remote_sequence(void) static void end_remote_sequence(void) -{ +{ static char remote_trailer[] = "\033\000\000\000\033\000"; memcpy(printer_cmd + bufpos, remote_trailer, sizeof(remote_trailer) - 1); bufpos += sizeof(remote_trailer) - 1; @@ -687,7 +700,6 @@ send_nulls(int fd) static int init_packet(int fd, int force) { - int status; int tries = 0; STP_DEBUG(printf("***Init packet mode %d\n", force)); @@ -745,7 +757,6 @@ init_packet(int fd, int force) break; } - status = 1; STP_DEBUG(printf("***Flushing data...\n")); flushData(fd, socket_id); return 0; @@ -845,6 +856,12 @@ test_for_ii(const unsigned char *buf) strncmp("@BDC PS", (const char *)buf, 7)); } +static int +test_for_ri(const unsigned char *buf) +{ + return !(strncmp("ri:00:OK;", (const char *)buf, 9)); +} + static const stp_printer_t * initialize_printer(int quiet, int fail_if_not_found) { @@ -1333,8 +1350,8 @@ do_old_status(status_cmd_t cmd, const char *buf, const stp_printer_t *printer) stp_string_list_add_string(color_list, "Yellow", _("Yellow")); stp_string_list_add_string(color_list, "LightCyan", _("Light Cyan")); stp_string_list_add_string(color_list, "LightMagenta", _("Light Magenta")); - } - + } + if (cmd == CMD_STATUS) printf(_("Ink Levels:\n")); printf("%20s %20s\n", _("Ink color"), _("Percent remaining")); @@ -1345,7 +1362,7 @@ do_old_status(status_cmd_t cmd, const char *buf, const stp_printer_t *printer) } STP_DEBUG(printf("***looking at %s\n", buf)); } while ((buf = find_group(buf)) != NULL); -} +} static void do_new_status(status_cmd_t cmd, char *buf, int bytes, @@ -1425,7 +1442,7 @@ do_new_status(status_cmd_t cmd, char *buf, int bytes, break; case 0x3: /* Self-printing */ print_self_printing_state(param); - break; + break; case 0x4: /* Warning */ for (j = 0; j < total_param_count; j++) { @@ -1543,10 +1560,94 @@ do_ink_level(void) do_status_command_internal(CMD_INK_LEVEL); } -void -do_extended_ink_info(int extended_output) +static stp_string_list_t * +get_ink_channel_list(const stp_printer_t *printer, int fd) +{ + stp_parameter_t desc; + char buf[1024]; + int i; + char *ind; + stp_string_list_t *color_list = stp_string_list_create(); + + if (printer) + { + const stp_vars_t *printvars = stp_printer_get_defaults(printer); + stp_describe_parameter(printvars, "ChannelNames", &desc); + } + + if (printer && desc.p_type == STP_PARAMETER_TYPE_STRING_LIST) + { + STP_DEBUG(printf("***Using color list from driver (%ld %ld)\n", + (long)stp_string_list_count(desc.bounds.str), + (long)stp_string_list_count(color_list))); + color_list = stp_string_list_create_copy(desc.bounds.str); + stp_parameter_description_destroy(&desc); + } + else + { + /* + * If we're using the "new" ink status format and we don't know + * about the printer, take the colors from the ink status + * message rather than from the ink list. This gives us a + * last chance to determine the inks + */ + /* request status command */ + int status = + writeAndReadData(fd, socket_id, (const unsigned char*)"st\1\0\1", + 5, 1, (unsigned char *) buf, 1023, + &send_size, &receive_size, &test_for_st); + if (status <= 0) + { + stp_parameter_description_destroy(&desc); + fprintf(stderr, _("\nCannot write to %s: %s\n"), + raw_device, strerror(errno)); + exit(1); + } + buf[status] = '\0'; + if ( buf[7] == '2' ) + { + STP_DEBUG(printf("***New format ink!\n")); + /* new binary format ! */ + i = 10; + while (buf[i] != 0x0f && i < status) + i += buf[i + 1] + 2; + ind = buf + i; + i = 3; + while (i < ind[1]) + { + if (ind[i] < color_count) + { + STP_DEBUG(printf("*** Case 0: Ink %d %d (%s)\n", + i, ind[i], colors_new[(int) ind[i]])); + stp_string_list_add_string(color_list, + colors_new[(int) ind[i]], + colors_new[(int) ind[i]]); + } + else if (ind[i] == 0x40 && ind[i + 1] < aux_color_count) + { + STP_DEBUG(printf("*** Case 1: Ink %d %d (%s)\n", + i, ind[i+1], aux_colors[(int) ind[i+1]])); + stp_string_list_add_string(color_list, + aux_colors[(int) ind[i + 1]], + aux_colors[(int) ind[i + 1]]); + } + else + { + STP_DEBUG(printf("*** Case 2: Unknown\n")); + stp_string_list_add_string(color_list, "Unknown", + "Unknown"); + } + i+=3; + } + } + STP_DEBUG(printf("***Using color list from status message\n")); + } + return color_list; +} + +static void +do_extended_ink_info_1(const stp_printer_t *printer) { - int fd; int status; char buf[1024]; unsigned val, id, id2, year, year2, month, month2; @@ -1554,9 +1655,132 @@ do_extended_ink_info(int extended_output) char *ind; int i; + int fd = open_raw_device(); + + stp_string_list_t *color_list = get_ink_channel_list(printer, fd); + + for (i = 0; i < stp_string_list_count(color_list); i++) + { + char req[] = "ii\2\0\1\1"; + req[5] = i + 1; + status = + writeAndReadData(fd, socket_id, (const unsigned char*)req, + 6, 1, (unsigned char *) buf, 1023, + &send_size, &receive_size, &test_for_ii); + if (status <= 0) + { + stp_string_list_destroy(color_list); + CloseChannel(fd, socket_id); + exit(1); + } + ind = strchr(buf, 'I'); + if (!ind) + { + STP_DEBUG(printf("***Case 0: failure %i (%s)\n", i, buf)); + printf("Cannot identify cartridge in slot %d\n", i); + } + else if (sscanf(ind, + "II:01;IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:EPSON;IQT:%x,%x,%x,%x,%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*xIK1:%*x;IK2;%*x;TOV:%*x;TVU:%*x;LOG:EPSON;", + &iv[0], &year, &month, &id, + &iv[1], &iv[2], &iv[3], &iv[4], &iv[5], + &year2, &month2, &id2) == 12 || + sscanf(ind, + "II:01;IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:INKbyEPSON;IQT:%x,%x,%x,%x,%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*xIK1:%*x;IK2;%*x;TOV:%*x;TVU:%*x;LOG:INKbyEPSON;", + &iv[0], &year, &month, &id, + &iv[1], &iv[2], &iv[3], &iv[4], &iv[5], + &year2, &month2, &id2) == 12) + { + int j; + STP_DEBUG(printf("***Case 1: i %i iv %ud %ud %ud %ud %ud %ud year %ud %ud mo %ud %ud id %ud %ud\n", + i, iv[0], iv[1], iv[2], iv[3], iv[4], iv[5], + year, year2, month, month2, id, id2)); + printf("%20s %20s %12s %7s\n", + _("Ink cartridge"), _("Percent remaining"), _("Part number"), + _("Date")); + printf("%20s %20d T0%03d %2d%02d-%02d\n", + gettext(stp_string_list_param(color_list, 0)->text), + iv[0], id, (year > 80 ? 19 : 20), year, month); + for (j = 1; j < 6; j++) + printf("%20s %20d T0%03d %2d%02d-%02d\n", + gettext(stp_string_list_param(color_list, j)->text), + iv[j], id2, (year2 > 80 ? 19 : 20), year2, month2); + break; + } + else if (sscanf(ind, + "II:01;IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:EPSON;IQT:%x,%x,%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*xIK1:%*x;IK2;%*x;TOV:%*x;TVU:%*x;LOG:EPSON;", + &iv[0], &year, &month, &id, + &iv[1], &iv[2], &iv[3], + &year2, &month2, &id2) == 10 || + sscanf(ind, + "II:01;IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:INKbyEPSON;IQT:%x,%x,%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*xIK1:%*x;IK2;%*x;TOV:%*x;TVU:%*x;LOG:INKbyEPSON;", + &iv[0], &year, &month, &id, + &iv[1], &iv[2], &iv[3], + &year2, &month2, &id2) == 10) + { + int j; + STP_DEBUG(printf("***Case 2: i %i iv %ud %ud %ud %ud year %ud %ud mo %ud %ud id %ud %ud\n", + i, iv[0], iv[1], iv[2], iv[3], + year, year2, month, month2, id, id2)); + printf("%20s %20s %12s %7s\n", + _("Ink cartridge"), _("Percent remaining"), _("Part number"), + _("Date")); + printf("%20s %20d T0%03d %2d%02d-%02d\n", + gettext(stp_string_list_param(color_list, 0)->text), + iv[0], id, (year > 80 ? 19 : 20), year, month); + for (j = 1; j < 4; j++) + printf("%20s %20d T0%03d %2d%02d-%02d\n", + gettext(stp_string_list_param(color_list, j)->text), + iv[j], id2, (year2 > 80 ? 19 : 20), year2, month2); + break; + } + else if (sscanf(ind, + "II:01;IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:EPSON;", + &val, &year, &month, &id ) == 4 || + sscanf(ind, + "II:01;IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:INKbyEPSON;", + &val, &year, &month, &id ) == 4) + { + STP_DEBUG(printf("***Case 3: i %i val %ud year %ud mo %ud id %ud\n", + i, val, year, month, id)); + if (i == 0) + printf("%20s %20s %12s %7s\n", + _("Ink cartridge"), _("Percent remaining"), _("Part number"), + _("Date")); + printf("%20s %20d T0%03d %2d%02d-%02d\n", + gettext(stp_string_list_param(color_list, i)->text), + val, id, (year > 80 ? 19 : 20), year, month); + } + else if (sscanf(ind, + "IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:EPSON;", + &val, &year, &month, &id ) == 4 || + sscanf(ind, + "IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:INKbyEPSON;", + &val, &year, &month, &id ) == 4) + { + STP_DEBUG(printf("***Case 4: i %i val %ud year %ud mo %ud id %ud\n", + i, val, year, month, id)); + if (i == 0) + printf("%20s %20s %12s %7s\n", + _("Ink cartridge"), _("Percent remaining"), _("Part number"), + _("Date")); + printf("%20s %20d T0%03d %2d%02d-%02d\n", + gettext(stp_string_list_param(color_list, i)->text), + val, id, (year > 80 ? 19 : 20), year, month); + } + else + { + STP_DEBUG(printf("***Case 5: failure %i (%s)\n", i, ind)); + printf("Cannot identify cartridge in slot %d\n", i); + } + } + stp_string_list_destroy(color_list); + CloseChannel(fd, socket_id); +} + +void +do_extended_ink_info(void) +{ const stp_printer_t *printer; - const stp_vars_t *printvars; - stp_parameter_t desc; if (!raw_device) { @@ -1565,212 +1789,67 @@ do_extended_ink_info(int extended_output) } printer = get_printer(1, 0); - if (printer) - { - printvars = stp_printer_get_defaults(printer); - stp_describe_parameter(printvars, "ChannelNames", &desc); - } - else + if (!printer) fprintf(stderr, "Warning! Printer %s is not known; information may be incomplete or incorrect\n", printer_model ? printer_model : "(unknown printer)"); - fd = open_raw_device(); - if (isnew) + do_extended_ink_info_1(printer); + else + do_ink_level(); +} + +void +do_reset_ink_levels(void) +{ + const stp_printer_t *printer; + int fd; + int i; + + stp_string_list_t *color_list; + + if (!raw_device) { - stp_string_list_t *color_list = stp_string_list_create(); + fprintf(stderr,_("Resetting ink levels requires using a raw device.\n")); + exit(1); + } - if (printer && desc.p_type == STP_PARAMETER_TYPE_STRING_LIST) - { - STP_DEBUG(printf("***Using color list from driver (%ld %ld)\n", - (long)stp_string_list_count(desc.bounds.str), - (long)stp_string_list_count(color_list))); - color_list = stp_string_list_create_copy(desc.bounds.str); - stp_parameter_description_destroy(&desc); - } - else - { - /* - * If we're using the "new" ink status format and we don't know - * about the printer, take the colors from the ink status - * message rather than from the ink list. This gives us a - * last chance to determine the inks - */ - /* request status command */ - status = - writeAndReadData(fd, socket_id, (const unsigned char*)"st\1\0\1", - 5, 1, (unsigned char *) buf, 1023, - &send_size, &receive_size, &test_for_st); - if (status <= 0) - { - stp_parameter_description_destroy(&desc); - fprintf(stderr, _("\nCannot write to %s: %s\n"), - raw_device, strerror(errno)); - exit(1); - } - buf[status] = '\0'; - if ( buf[7] == '2' ) - { - STP_DEBUG(printf("***New format ink!\n")); - /* new binary format ! */ - i = 10; - while (buf[i] != 0x0f && i < status) - i += buf[i + 1] + 2; - ind = buf + i; - i = 3; - while (i < ind[1]) - { - if (ind[i] < color_count) - { - STP_DEBUG(printf("*** Case 0: Ink %d %d (%s)\n", - i, ind[i], colors_new[(int) ind[i]])); - stp_string_list_add_string(color_list, - colors_new[(int) ind[i]], - colors_new[(int) ind[i]]); - } - else if (ind[i] == 0x40 && ind[i + 1] < aux_color_count) - { - STP_DEBUG(printf("*** Case 1: Ink %d %d (%s)\n", - i, ind[i+1], aux_colors[(int) ind[i+1]])); - stp_string_list_add_string(color_list, - aux_colors[(int) ind[i + 1]], - aux_colors[(int) ind[i + 1]]); - } - else - { - STP_DEBUG(printf("*** Case 2: Unknown\n")); - stp_string_list_add_string(color_list, "Unknown", - "Unknown"); - } - i+=3; - } - } - STP_DEBUG(printf("***Using color list from status message\n")); - } + printer = get_printer(1, 0); + if (!printer) + { + fprintf(stderr, + "Error! Printer %s is not known; cannot reset ink\n", + printer_model ? printer_model : "(unknown printer)"); + exit(1); + } - for (i = 0; i < stp_string_list_count(color_list); i++) - { - char req[] = "ii\2\0\1\1"; - req[5] = i + 1; - status = - writeAndReadData(fd, socket_id, (const unsigned char*)req, - 6, 1, (unsigned char *) buf, 1023, - &send_size, &receive_size, &test_for_ii); - if (status <= 0) - { - CloseChannel(fd, socket_id); - exit(1); - } - ind = strchr(buf, 'I'); - if (!ind) - { - STP_DEBUG(printf("***Case 0: failure %i (%s)\n", i, buf)); - printf("Cannot identify cartridge in slot %d\n", i); - } - else if (sscanf(ind, - "II:01;IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:EPSON;IQT:%x,%x,%x,%x,%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*xIK1:%*x;IK2;%*x;TOV:%*x;TVU:%*x;LOG:EPSON;", - &iv[0], &year, &month, &id, - &iv[1], &iv[2], &iv[3], &iv[4], &iv[5], - &year2, &month2, &id2) == 12 || - sscanf(ind, - "II:01;IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:INKbyEPSON;IQT:%x,%x,%x,%x,%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*xIK1:%*x;IK2;%*x;TOV:%*x;TVU:%*x;LOG:INKbyEPSON;", - &iv[0], &year, &month, &id, - &iv[1], &iv[2], &iv[3], &iv[4], &iv[5], - &year2, &month2, &id2) == 12) - { - int j; - STP_DEBUG(printf("***Case 1: i %i iv %ud %ud %ud %ud %ud %ud year %ud %ud mo %ud %ud id %ud %ud\n", - i, iv[0], iv[1], iv[2], iv[3], iv[4], iv[5], - year, year2, month, month2, id, id2)); - printf("%20s %20s %12s %7s\n", - _("Ink cartridge"), _("Percent remaining"), _("Part number"), - _("Date")); - printf("%20s %20d T0%03d %2d%02d-%02d\n", - gettext(stp_string_list_param(color_list, 0)->text), - iv[0], id, (year > 80 ? 19 : 20), year, month); - for (j = 1; j < 6; j++) - printf("%20s %20d T0%03d %2d%02d-%02d\n", - gettext(stp_string_list_param(color_list, j)->text), - iv[j], id2, (year2 > 80 ? 19 : 20), year2, month2); - break; - } - else if (sscanf(ind, - "II:01;IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:EPSON;IQT:%x,%x,%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*xIK1:%*x;IK2;%*x;TOV:%*x;TVU:%*x;LOG:EPSON;", - &iv[0], &year, &month, &id, - &iv[1], &iv[2], &iv[3], - &year2, &month2, &id2) == 10 || - sscanf(ind, - "II:01;IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:INKbyEPSON;IQT:%x,%x,%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*xIK1:%*x;IK2;%*x;TOV:%*x;TVU:%*x;LOG:INKbyEPSON;", - &iv[0], &year, &month, &id, - &iv[1], &iv[2], &iv[3], - &year2, &month2, &id2) == 10) - { - int j; - STP_DEBUG(printf("***Case 2: i %i iv %ud %ud %ud %ud year %ud %ud mo %ud %ud id %ud %ud\n", - i, iv[0], iv[1], iv[2], iv[3], - year, year2, month, month2, id, id2)); - printf("%20s %20s %12s %7s\n", - _("Ink cartridge"), _("Percent remaining"), _("Part number"), - _("Date")); - printf("%20s %20d T0%03d %2d%02d-%02d\n", - gettext(stp_string_list_param(color_list, 0)->text), - iv[0], id, (year > 80 ? 19 : 20), year, month); - for (j = 1; j < 4; j++) - printf("%20s %20d T0%03d %2d%02d-%02d\n", - gettext(stp_string_list_param(color_list, j)->text), - iv[j], id2, (year2 > 80 ? 19 : 20), year2, month2); - break; - } - else if (sscanf(ind, - "II:01;IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:EPSON;", - &val, &year, &month, &id ) == 4 || - sscanf(ind, - "II:01;IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:INKbyEPSON;", - &val, &year, &month, &id ) == 4) - { - STP_DEBUG(printf("***Case 3: i %i val %ud year %ud mo %ud id %ud\n", - i, val, year, month, id)); - if (i == 0) - printf("%20s %20s %12s %7s\n", - _("Ink cartridge"), _("Percent remaining"), _("Part number"), - _("Date")); - printf("%20s %20d T0%03d %2d%02d-%02d\n", - gettext(stp_string_list_param(color_list, i)->text), - val, id, (year > 80 ? 19 : 20), year, month); - } - else if (sscanf(ind, - "IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:EPSON;", - &val, &year, &month, &id ) == 4 || - sscanf(ind, - "IQT:%x;TSH:%*4s;PDY:%x;PDM:%x;IC1:%x;IC2:%*x;IK1:%*x;IK2:%*x;TOV:%*x;TVU:%*x;LOG:INKbyEPSON;", - &val, &year, &month, &id ) == 4) - { - STP_DEBUG(printf("***Case 4: i %i val %ud year %ud mo %ud id %ud\n", - i, val, year, month, id)); - if (i == 0) - printf("%20s %20s %12s %7s\n", - _("Ink cartridge"), _("Percent remaining"), _("Part number"), - _("Date")); - printf("%20s %20d T0%03d %2d%02d-%02d\n", - gettext(stp_string_list_param(color_list, i)->text), - val, id, (year > 80 ? 19 : 20), year, month); - } - else - { - STP_DEBUG(printf("***Case 5: failure %i (%s)\n", i, ind)); - printf("Cannot identify cartridge in slot %d\n", i); - } - } - stp_string_list_destroy(color_list); - CloseChannel(fd, socket_id); + if (!isnew) + { + fprintf(stderr, "Cannot reset ink for printer %s\n", printer_model); } - else + fd = open_raw_device(); + color_list = get_ink_channel_list(printer, fd); + for (i = 0; i < stp_string_list_count(color_list); i++) { - (void) close(fd); - do_ink_level(); + int status; + char buf[1024]; + char req[] = "ri\2\0\0\0"; + req[5] = i; + STP_DEBUG(printf("***Attempt to reset ink for channel %d\n", i)); + status = + writeAndReadData(fd, socket_id, (const unsigned char*)req, + 6, 1, (unsigned char *) buf, 1023, + &send_size, &receive_size, &test_for_ri); + if (status <= 0) + { + stp_string_list_destroy(color_list); + CloseChannel(fd, socket_id); + exit(1); + } } - exit(0); + stp_string_list_destroy(color_list); + CloseChannel(fd, socket_id); } void diff --git a/src/foomatic/Makefile.am b/src/foomatic/Makefile.am index bc5666d..37271d8 100644 --- a/src/foomatic/Makefile.am +++ b/src/foomatic/Makefile.am @@ -1,4 +1,4 @@ -## $Id: Makefile.am,v 1.56 2011/12/24 02:10:46 rlk Exp $ +## $Id: Makefile.am,v 1.57 2014/01/12 17:12:57 rlk Exp $ ## Copyright (C) 2000 Roger Leigh ## ## This program is free software; you can redistribute it and/or modify @@ -78,8 +78,8 @@ all-local: $(INSTALL_DATA_LOCAL_DEPS) install-data-local: $(INSTALL_DATA_LOCAL_DEPS) if test -n "$(INSTALL_DATA_LOCAL_DEPS)" ; then \ - $(MAKE) install-kit FOOMATIC_DB=foomatic-db/gutenprint-ijs.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ ; \ - $(MAKE) install-kit FOOMATIC_DB=foomatic-db/gutenprint-ijs-simplified.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ ; \ + $(MAKE) install-kit FOOMATIC_DB=foomatic-db/gutenprint-ijs.@GUTENPRINT_RELEASE_VERSION@ ; \ + $(MAKE) install-kit FOOMATIC_DB=foomatic-db/gutenprint-ijs-simplified.@GUTENPRINT_RELEASE_VERSION@ ; \ fi install-kit: diff --git a/src/foomatic/Makefile.in b/src/foomatic/Makefile.in index d8b1a44..6f7b903 100644 --- a/src/foomatic/Makefile.in +++ b/src/foomatic/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -21,6 +20,51 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -39,9 +83,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs \ $(srcdir)/foomatic-generator.in $(srcdir)/mk_printerlist.in \ - $(top_srcdir)/scripts/global.mk + $(top_srcdir)/scripts/depcomp @BUILD_FOOMATIC_TRUE@noinst_PROGRAMS = printer_options$(EXEEXT) \ @BUILD_FOOMATIC_TRUE@ printer_margins$(EXEEXT) \ @BUILD_FOOMATIC_TRUE@ paper_sizes$(EXEEXT) \ @@ -70,6 +115,10 @@ PROGRAMS = $(noinst_PROGRAMS) am_gutenprint_version_OBJECTS = gutenprint-version.$(OBJEXT) gutenprint_version_OBJECTS = $(am_gutenprint_version_OBJECTS) gutenprint_version_DEPENDENCIES = $(GUTENPRINT_LIBS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = am_paper_sizes_OBJECTS = paper_sizes.$(OBJEXT) paper_sizes_OBJECTS = $(am_paper_sizes_OBJECTS) paper_sizes_DEPENDENCIES = $(GUTENPRINT_LIBS) @@ -82,31 +131,75 @@ printer_options_DEPENDENCIES = $(GUTENPRINT_LIBS) am_printers_OBJECTS = printers.$(OBJEXT) printers_OBJECTS = $(am_printers_OBJECTS) printers_DEPENDENCIES = $(GUTENPRINT_LIBS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(gutenprint_version_SOURCES) $(paper_sizes_SOURCES) \ $(printer_margins_SOURCES) $(printer_options_SOURCES) \ $(printers_SOURCES) DIST_SOURCES = $(gutenprint_version_SOURCES) $(paper_sizes_SOURCES) \ $(printer_margins_SOURCES) $(printer_options_SOURCES) \ $(printers_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -164,6 +257,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -175,6 +269,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -199,6 +294,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -365,6 +462,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -387,21 +485,26 @@ clean-noinstPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -gutenprint-version$(EXEEXT): $(gutenprint_version_OBJECTS) $(gutenprint_version_DEPENDENCIES) + +gutenprint-version$(EXEEXT): $(gutenprint_version_OBJECTS) $(gutenprint_version_DEPENDENCIES) $(EXTRA_gutenprint_version_DEPENDENCIES) @rm -f gutenprint-version$(EXEEXT) - $(LINK) $(gutenprint_version_OBJECTS) $(gutenprint_version_LDADD) $(LIBS) -paper_sizes$(EXEEXT): $(paper_sizes_OBJECTS) $(paper_sizes_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(gutenprint_version_OBJECTS) $(gutenprint_version_LDADD) $(LIBS) + +paper_sizes$(EXEEXT): $(paper_sizes_OBJECTS) $(paper_sizes_DEPENDENCIES) $(EXTRA_paper_sizes_DEPENDENCIES) @rm -f paper_sizes$(EXEEXT) - $(LINK) $(paper_sizes_OBJECTS) $(paper_sizes_LDADD) $(LIBS) -printer_margins$(EXEEXT): $(printer_margins_OBJECTS) $(printer_margins_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(paper_sizes_OBJECTS) $(paper_sizes_LDADD) $(LIBS) + +printer_margins$(EXEEXT): $(printer_margins_OBJECTS) $(printer_margins_DEPENDENCIES) $(EXTRA_printer_margins_DEPENDENCIES) @rm -f printer_margins$(EXEEXT) - $(LINK) $(printer_margins_OBJECTS) $(printer_margins_LDADD) $(LIBS) -printer_options$(EXEEXT): $(printer_options_OBJECTS) $(printer_options_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(printer_margins_OBJECTS) $(printer_margins_LDADD) $(LIBS) + +printer_options$(EXEEXT): $(printer_options_OBJECTS) $(printer_options_DEPENDENCIES) $(EXTRA_printer_options_DEPENDENCIES) @rm -f printer_options$(EXEEXT) - $(LINK) $(printer_options_OBJECTS) $(printer_options_LDADD) $(LIBS) -printers$(EXEEXT): $(printers_OBJECTS) $(printers_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(printer_options_OBJECTS) $(printer_options_LDADD) $(LIBS) + +printers$(EXEEXT): $(printers_OBJECTS) $(printers_DEPENDENCIES) $(EXTRA_printers_DEPENDENCIES) @rm -f printers$(EXEEXT) - $(LINK) $(printers_OBJECTS) $(printers_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(printers_OBJECTS) $(printers_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -416,25 +519,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printers.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo @@ -442,26 +545,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -473,15 +565,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -490,6 +578,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -541,10 +644,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -631,19 +739,20 @@ uninstall-am: .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \ +.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \ clean-generic clean-libtool clean-local clean-noinstPROGRAMS \ - ctags dist-hook distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-data-local install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ + cscopelist-am ctags ctags-am dist-hook distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-data-local install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am + tags tags-am uninstall uninstall-am @SET_MAKE@ @@ -666,8 +775,8 @@ all-local: $(INSTALL_DATA_LOCAL_DEPS) install-data-local: $(INSTALL_DATA_LOCAL_DEPS) if test -n "$(INSTALL_DATA_LOCAL_DEPS)" ; then \ - $(MAKE) install-kit FOOMATIC_DB=foomatic-db/gutenprint-ijs.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ ; \ - $(MAKE) install-kit FOOMATIC_DB=foomatic-db/gutenprint-ijs-simplified.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@ ; \ + $(MAKE) install-kit FOOMATIC_DB=foomatic-db/gutenprint-ijs.@GUTENPRINT_RELEASE_VERSION@ ; \ + $(MAKE) install-kit FOOMATIC_DB=foomatic-db/gutenprint-ijs-simplified.@GUTENPRINT_RELEASE_VERSION@ ; \ fi install-kit: diff --git a/src/foomatic/foomatic-generator.in b/src/foomatic/foomatic-generator.in index 626bc9c..51630bd 100644 --- a/src/foomatic/foomatic-generator.in +++ b/src/foomatic/foomatic-generator.in @@ -1333,7 +1333,10 @@ sub qualityorder { "dpi_photomonodraft", "dpi_photomonodraft2", "dpi_ohphigh", - "dpi_ohp" + "dpi_ohp", + # Dyesub + "x600", + "x300" ); my ($a, $b) = @_; # Bring the suffixes to lower case diff --git a/src/ghost/Makefile.in b/src/ghost/Makefile.in index 1c9259f..4d85f27 100644 --- a/src/ghost/Makefile.in +++ b/src/ghost/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -21,6 +20,51 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -39,8 +83,9 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/scripts/global.mk +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs \ + $(top_srcdir)/scripts/depcomp @BUILD_GHOSTSCRIPT_TRUE@bin_PROGRAMS = ijsgutenprint.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@$(EXEEXT) subdir = src/ghost ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -72,32 +117,62 @@ am__DEPENDENCIES_1 = @BUILD_GHOSTSCRIPT_TRUE@ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_DEPENDENCIES = \ @BUILD_GHOSTSCRIPT_TRUE@ $(GUTENPRINT_LIBS) \ @BUILD_GHOSTSCRIPT_TRUE@ $(am__DEPENDENCIES_1) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LINK = \ - $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDFLAGS) \ $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_SOURCES) DIST_SOURCES = $(am__ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_SOURCES_DIST) -ETAGS = etags -CTAGS = ctags +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -155,6 +230,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -166,6 +242,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -190,6 +267,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -339,6 +418,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -350,14 +430,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ @@ -378,7 +463,8 @@ uninstall-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ + -e 's/$$/$(EXEEXT)/' \ + `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files @@ -391,9 +477,10 @@ clean-binPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -ijsgutenprint.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@$(EXEEXT): $(ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS) $(ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_DEPENDENCIES) + +ijsgutenprint.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@$(EXEEXT): $(ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS) $(ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_DEPENDENCIES) $(EXTRA_ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_DEPENDENCIES) @rm -f ijsgutenprint.@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@$(EXEEXT) - $(ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LINK) $(ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS) $(ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDADD) $(LIBS) + $(AM_V_CCLD)$(ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LINK) $(ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_OBJECTS) $(ijsgutenprint_@GUTENPRINT_MAJOR_VERSION@_@GUTENPRINT_MINOR_VERSION@_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -404,83 +491,37 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ijsgutenprint.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @@ -529,10 +570,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -552,8 +598,7 @@ clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags +distclean-am: clean-am distclean-compile distclean-generic dvi: dvi-am @@ -617,10 +662,10 @@ uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-libtool ctags distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ +.PHONY: all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool cscopelist-am ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool distdir \ + dvi dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ @@ -628,7 +673,7 @@ uninstall-am: uninstall-binPROGRAMS install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ + pdf pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-binPROGRAMS diff --git a/src/gimp2/Makefile.in b/src/gimp2/Makefile.in index 5977aae..4edb36f 100644 --- a/src/gimp2/Makefile.in +++ b/src/gimp2/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -21,6 +20,51 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -39,8 +83,9 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/scripts/global.mk +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs \ + $(top_srcdir)/scripts/depcomp @BUILD_GIMP2_AS_GUTENPRINT_FALSE@@BUILD_GIMP2_TRUE@gimp2_plug_in_PROGRAMS = print$(EXEEXT) @BUILD_GIMP2_AS_GUTENPRINT_TRUE@@BUILD_GIMP2_TRUE@gimp2_plug_in_PROGRAMS = gutenprint$(EXEEXT) subdir = src/gimp2 @@ -70,29 +115,77 @@ gutenprint_OBJECTS = $(am_gutenprint_OBJECTS) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(GUTENPRINT_LIBS) \ $(GUTENPRINTUI2_LIBS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = am_print_OBJECTS = $(am__objects_1) print-print.$(OBJEXT) print_OBJECTS = $(am_print_OBJECTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(gutenprint_SOURCES) $(print_SOURCES) DIST_SOURCES = $(gutenprint_SOURCES) $(print_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -150,6 +243,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -161,6 +255,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -185,6 +280,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -344,6 +441,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -355,14 +453,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): install-gimp2_plug_inPROGRAMS: $(gimp2_plug_in_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(gimp2_plug_indir)" || $(MKDIR_P) "$(DESTDIR)$(gimp2_plug_indir)" @list='$(gimp2_plug_in_PROGRAMS)'; test -n "$(gimp2_plug_indir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(gimp2_plug_indir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(gimp2_plug_indir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ @@ -383,7 +486,8 @@ uninstall-gimp2_plug_inPROGRAMS: @list='$(gimp2_plug_in_PROGRAMS)'; test -n "$(gimp2_plug_indir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ + -e 's/$$/$(EXEEXT)/' \ + `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(gimp2_plug_indir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(gimp2_plug_indir)" && rm -f $$files @@ -396,12 +500,14 @@ clean-gimp2_plug_inPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -gutenprint$(EXEEXT): $(gutenprint_OBJECTS) $(gutenprint_DEPENDENCIES) + +gutenprint$(EXEEXT): $(gutenprint_OBJECTS) $(gutenprint_DEPENDENCIES) $(EXTRA_gutenprint_DEPENDENCIES) @rm -f gutenprint$(EXEEXT) - $(LINK) $(gutenprint_OBJECTS) $(gutenprint_LDADD) $(LIBS) -print$(EXEEXT): $(print_OBJECTS) $(print_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(gutenprint_OBJECTS) $(gutenprint_LDADD) $(LIBS) + +print$(EXEEXT): $(print_OBJECTS) $(print_DEPENDENCIES) $(EXTRA_print_DEPENDENCIES) @rm -f print$(EXEEXT) - $(LINK) $(print_OBJECTS) $(print_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(print_OBJECTS) $(print_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -415,25 +521,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo @@ -441,26 +547,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -472,15 +567,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -489,6 +580,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -540,10 +646,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -630,19 +741,20 @@ uninstall-am: uninstall-gimp2_plug_inPROGRAMS .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-gimp2_plug_inPROGRAMS clean-libtool ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am \ - install-gimp2_plug_inPROGRAMS install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-gimp2_plug_inPROGRAMS +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-gimp2_plug_inPROGRAMS clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-gimp2_plug_inPROGRAMS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-gimp2_plug_inPROGRAMS @SET_MAKE@ diff --git a/src/gimp2/print-gutenprint.c b/src/gimp2/print-gutenprint.c index 56bf111..276a7df 100644 --- a/src/gimp2/print-gutenprint.c +++ b/src/gimp2/print-gutenprint.c @@ -1,5 +1,5 @@ /* - * "$Id: print-gutenprint.c,v 1.2 2008/07/04 14:29:28 rlk Exp $" + * "$Id: print-gutenprint.c,v 1.3 2014/01/04 00:31:37 rlk Exp $" * * Print plug-in for the GIMP. * @@ -36,28 +36,28 @@ do_gimp_install_procedure(const char *blurb, const char *help, const char *types, int n_args, GimpParamDef *args) { - gimp_install_procedure ((BAD_CONST_CHAR) "file_print_gutenprint", - (BAD_CONST_CHAR) blurb, - (BAD_CONST_CHAR) help, - (BAD_CONST_CHAR) auth, - (BAD_CONST_CHAR) copy, - (BAD_CONST_CHAR) VERSION " - " RELEASE_DATE, + gimp_install_procedure (cast_safe("file_print_gutenprint"), + cast_safe(blurb), + cast_safe(help), + cast_safe(auth), + cast_safe(copy), + cast_safe(VERSION " - " RELEASE_DATE), /* Do not translate the prefix "<Image>" */ #if (GIMP_MAJOR_VERSION > 2 || GIMP_MINOR_VERSION >= 2) - (BAD_CONST_CHAR) N_("_Print with Gutenprint..."), + cast_safe(N_("_Print with Gutenprint...")), #else - (BAD_CONST_CHAR) N_("<Image>/File/Print with Gutenprint..."), + cast_safe(N_("<Image>/File/Print with Gutenprint...")), #endif - (BAD_CONST_CHAR) types, + cast_safe(types), GIMP_PLUGIN, n_args, 0, args, NULL); #if (GIMP_MAJOR_VERSION > 2 || GIMP_MINOR_VERSION >= 2) - gimp_plugin_menu_register ((BAD_CONST_CHAR) "file_print_gutenprint", - (BAD_CONST_CHAR) "<Image>/File/Send"); - gimp_plugin_icon_register ((BAD_CONST_CHAR) "file_print_gutenprint", + gimp_plugin_menu_register (cast_safe("file_print_gutenprint"), + cast_safe("<Image>/File/Send")); + gimp_plugin_icon_register (cast_safe("file_print_gutenprint"), GIMP_ICON_TYPE_STOCK_ID, - (BAD_CONST_CHAR) GTK_STOCK_PRINT); + cast_safe(GTK_STOCK_PRINT)); #endif } diff --git a/src/gimp2/print.c b/src/gimp2/print.c index 65e8015..e8131f7 100644 --- a/src/gimp2/print.c +++ b/src/gimp2/print.c @@ -1,5 +1,5 @@ /* - * "$Id: print.c,v 1.9 2012/01/19 13:25:51 m0m Exp $" + * "$Id: print.c,v 1.10 2014/01/04 00:31:37 rlk Exp $" * * Print plug-in for the GIMP. * @@ -76,6 +76,8 @@ MAIN() * 'query()' - Respond to a plug-in query... */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-qual" static void query (void) { @@ -117,11 +119,12 @@ query (void) static const gchar *copy = "Copyright 1997-2006 by Michael Sweet and Robert Krawitz"; static const gchar *types = "RGB*,GRAY*,INDEXED*"; - gimp_plugin_domain_register ((BAD_CONST_CHAR) PACKAGE, (BAD_CONST_CHAR) PACKAGE_LOCALE_DIR); + gimp_plugin_domain_register (cast_safe(PACKAGE), cast_safe(PACKAGE_LOCALE_DIR)); do_gimp_install_procedure(blurb, help, auth, copy, types, G_N_ELEMENTS(args), args); } +#pragma GCC diagnostic pop static guchar *gimp_thumbnail_data = NULL; @@ -132,7 +135,7 @@ stpui_get_thumbnail_data_function(void *image_ID, gint *width, gint *height, if (gimp_thumbnail_data) g_free(gimp_thumbnail_data); gimp_thumbnail_data = - gimp_image_get_thumbnail_data((gint) image_ID, width, height, bpp); + gimp_image_get_thumbnail_data(p2gint(image_ID), width, height, bpp); return gimp_thumbnail_data; } @@ -413,20 +416,16 @@ run (const char *name, /* I - Name of print program. */ * 'do_print_dialog()' - Pop up the print dialog... */ -static void -gimp_writefunc(void *file, const char *buf, size_t bytes) -{ - FILE *prn = (FILE *)file; - fwrite(buf, 1, bytes, prn); -} - +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wformat-nonliteral" static void gimp_errfunc(void *file, const char *buf, size_t bytes) { char formatbuf[32]; - snprintf(formatbuf, 31, "%%%ds", bytes); + snprintf(formatbuf, 31, "%%%lus", (unsigned long) bytes); g_message(formatbuf, buf); } +#pragma GCC diagnostic pop static gint do_print_dialog (const gchar *proc_name, @@ -435,12 +434,12 @@ do_print_dialog (const gchar *proc_name, /* * Generate the filename for the current user... */ - char *filename = gimp_personal_rc_file ((BAD_CONST_CHAR) "printrc"); + char *filename = gimp_personal_rc_file (cast_safe("printrc")); stpui_set_printrc_file(filename); g_free(filename); if (! getenv("STP_PRINT_MESSAGES_TO_STDERR")) stpui_set_errfunc(gimp_errfunc); stpui_set_thumbnail_func(stpui_get_thumbnail_data_function); - stpui_set_thumbnail_data((void *) image_ID); + stpui_set_thumbnail_data(gint2p(image_ID)); return stpui_do_print_dialog(); } diff --git a/src/gimp2/print_gimp.h b/src/gimp2/print_gimp.h index 53d0a16..7fc0b51 100644 --- a/src/gimp2/print_gimp.h +++ b/src/gimp2/print_gimp.h @@ -1,5 +1,5 @@ /* - * "$Id: print_gimp.h,v 1.5 2006/07/04 02:57:59 rlk Exp $" + * "$Id: print_gimp.h,v 1.6 2014/01/04 00:31:37 rlk Exp $" * * Print plug-in for the GIMP. * @@ -33,13 +33,15 @@ #define inline __inline__ #endif -#include <gtk/gtk.h> -#include <libgimp/gimp.h> -#include <libgimp/gimpui.h> - #include <gutenprint/gutenprint.h> #include <gutenprintui2/gutenprintui.h> +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-pedantic" +#include <libgimp/gimp.h> +#include <libgimp/gimpui.h> +#pragma GCC diagnostic pop + /* How to create an Image wrapping a Gimp drawable */ extern stpui_image_t *Image_GimpDrawable_new(GimpDrawable *drawable, gint32); @@ -56,4 +58,32 @@ extern void do_gimp_install_procedure(const char *blurb, const char *help, #define BAD_CONST_CHAR char * +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpointer-to-int-cast" +static inline gint +p2gint(void *p) +{ + return (gint) p; +} +#pragma GCC diagnostic pop + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wint-to-pointer-cast" +static inline void * +gint2p(int i) +{ + return (gpointer) i; +} +#pragma GCC diagnostic pop + +#pragma GCC diagnostic ignored "-Woverlength-strings" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-qual" +static inline void * +cast_safe(const void *ptr) +{ + return (void *)ptr; +} +#pragma GCC diagnostic pop + #endif /* __PRINT_GIMP_H__ */ diff --git a/src/gutenprintui2/Makefile.in b/src/gutenprintui2/Makefile.in index d3f662f..ed1debc 100644 --- a/src/gutenprintui2/Makefile.in +++ b/src/gutenprintui2/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -22,6 +21,51 @@ VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -40,9 +84,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/gutenprintui2.pc.in $(top_srcdir)/scripts/global.mk \ - printrcl.c printrcy.c printrcy.h +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs \ + $(srcdir)/gutenprintui2.pc.in printrcy.h printrcy.c printrcl.c \ + $(top_srcdir)/scripts/depcomp $(top_srcdir)/scripts/ylwrap subdir = src/gutenprintui2 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -83,6 +128,12 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } am__installdirs = "$(DESTDIR)$(libdir)" \ "$(DESTDIR)$(pkgconfigdatadir)" LTLIBRARIES = $(lib_LTLIBRARIES) @@ -95,43 +146,101 @@ am_libgutenprintui2_la_OBJECTS = libgutenprintui2_la-printrcy.lo \ libgutenprintui2_la-curve.lo libgutenprintui2_la-gammacurve.lo \ libgutenprintui2_la-typebuiltins.lo libgutenprintui2_la_OBJECTS = $(am_libgutenprintui2_la_OBJECTS) -libgutenprintui2_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) \ +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libgutenprintui2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(libgutenprintui2_la_CFLAGS) $(CFLAGS) \ $(libgutenprintui2_la_LDFLAGS) $(LDFLAGS) -o $@ @BUILD_LIBGUTENPRINTUI2_TRUE@am_libgutenprintui2_la_rpath = -rpath \ @BUILD_LIBGUTENPRINTUI2_TRUE@ $(libdir) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = @MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ || -LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) -LTLEXCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(LEX) $(LFLAGS) $(AM_LFLAGS) +LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) +LTLEXCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(LEX) $(AM_LFLAGS) $(LFLAGS) +AM_V_LEX = $(am__v_LEX_@AM_V@) +am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@) +am__v_LEX_0 = @echo " LEX " $@; +am__v_LEX_1 = YLWRAP = $(top_srcdir)/scripts/ylwrap @MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ || -YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS) -LTYACCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS) +am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \ + -e s/c++$$/h++/ -e s/c$$/h/ +YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) +LTYACCCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(YACC) $(AM_YFLAGS) $(YFLAGS) +AM_V_YACC = $(am__v_YACC_@AM_V@) +am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) +am__v_YACC_0 = @echo " YACC " $@; +am__v_YACC_1 = SOURCES = $(libgutenprintui2_la_SOURCES) DIST_SOURCES = $(libgutenprintui2_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac DATA = $(pkgconfigdata_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -189,6 +298,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -200,6 +310,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -224,6 +335,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -407,6 +520,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -418,9 +532,9 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): gutenprintui2.pc: $(top_builddir)/config.status $(srcdir)/gutenprintui2.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ @@ -428,6 +542,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) else :; fi; \ done; \ test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } @@ -443,19 +559,20 @@ uninstall-libLTLIBRARIES: clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } printrcy.h: printrcy.c - @if test ! -f $@; then \ - rm -f printrcy.c; \ - $(MAKE) $(AM_MAKEFLAGS) printrcy.c; \ - else :; fi -libgutenprintui2.la: $(libgutenprintui2_la_OBJECTS) $(libgutenprintui2_la_DEPENDENCIES) - $(libgutenprintui2_la_LINK) $(am_libgutenprintui2_la_rpath) $(libgutenprintui2_la_OBJECTS) $(libgutenprintui2_la_LIBADD) $(LIBS) + @if test ! -f $@; then rm -f printrcy.c; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) printrcy.c; else :; fi + +libgutenprintui2.la: $(libgutenprintui2_la_OBJECTS) $(libgutenprintui2_la_DEPENDENCIES) $(EXTRA_libgutenprintui2_la_DEPENDENCIES) + $(AM_V_CCLD)$(libgutenprintui2_la_LINK) $(am_libgutenprintui2_la_rpath) $(libgutenprintui2_la_OBJECTS) $(libgutenprintui2_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -474,94 +591,94 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-ui-utils.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libgutenprintui2_la-printrcy.lo: printrcy.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-printrcy.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-printrcy.Tpo -c -o libgutenprintui2_la-printrcy.lo `test -f 'printrcy.c' || echo '$(srcdir)/'`printrcy.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgutenprintui2_la-printrcy.Tpo $(DEPDIR)/libgutenprintui2_la-printrcy.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='printrcy.c' object='libgutenprintui2_la-printrcy.lo' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-printrcy.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-printrcy.Tpo -c -o libgutenprintui2_la-printrcy.lo `test -f 'printrcy.c' || echo '$(srcdir)/'`printrcy.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgutenprintui2_la-printrcy.Tpo $(DEPDIR)/libgutenprintui2_la-printrcy.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printrcy.c' object='libgutenprintui2_la-printrcy.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-printrcy.lo `test -f 'printrcy.c' || echo '$(srcdir)/'`printrcy.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-printrcy.lo `test -f 'printrcy.c' || echo '$(srcdir)/'`printrcy.c libgutenprintui2_la-printrcl.lo: printrcl.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-printrcl.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-printrcl.Tpo -c -o libgutenprintui2_la-printrcl.lo `test -f 'printrcl.c' || echo '$(srcdir)/'`printrcl.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgutenprintui2_la-printrcl.Tpo $(DEPDIR)/libgutenprintui2_la-printrcl.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='printrcl.c' object='libgutenprintui2_la-printrcl.lo' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-printrcl.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-printrcl.Tpo -c -o libgutenprintui2_la-printrcl.lo `test -f 'printrcl.c' || echo '$(srcdir)/'`printrcl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgutenprintui2_la-printrcl.Tpo $(DEPDIR)/libgutenprintui2_la-printrcl.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printrcl.c' object='libgutenprintui2_la-printrcl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-printrcl.lo `test -f 'printrcl.c' || echo '$(srcdir)/'`printrcl.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-printrcl.lo `test -f 'printrcl.c' || echo '$(srcdir)/'`printrcl.c libgutenprintui2_la-panel.lo: panel.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-panel.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-panel.Tpo -c -o libgutenprintui2_la-panel.lo `test -f 'panel.c' || echo '$(srcdir)/'`panel.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgutenprintui2_la-panel.Tpo $(DEPDIR)/libgutenprintui2_la-panel.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='panel.c' object='libgutenprintui2_la-panel.lo' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-panel.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-panel.Tpo -c -o libgutenprintui2_la-panel.lo `test -f 'panel.c' || echo '$(srcdir)/'`panel.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgutenprintui2_la-panel.Tpo $(DEPDIR)/libgutenprintui2_la-panel.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='panel.c' object='libgutenprintui2_la-panel.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-panel.lo `test -f 'panel.c' || echo '$(srcdir)/'`panel.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-panel.lo `test -f 'panel.c' || echo '$(srcdir)/'`panel.c libgutenprintui2_la-plist.lo: plist.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-plist.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-plist.Tpo -c -o libgutenprintui2_la-plist.lo `test -f 'plist.c' || echo '$(srcdir)/'`plist.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgutenprintui2_la-plist.Tpo $(DEPDIR)/libgutenprintui2_la-plist.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='plist.c' object='libgutenprintui2_la-plist.lo' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-plist.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-plist.Tpo -c -o libgutenprintui2_la-plist.lo `test -f 'plist.c' || echo '$(srcdir)/'`plist.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgutenprintui2_la-plist.Tpo $(DEPDIR)/libgutenprintui2_la-plist.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='plist.c' object='libgutenprintui2_la-plist.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-plist.lo `test -f 'plist.c' || echo '$(srcdir)/'`plist.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-plist.lo `test -f 'plist.c' || echo '$(srcdir)/'`plist.c libgutenprintui2_la-ui-utils.lo: ui-utils.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-ui-utils.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-ui-utils.Tpo -c -o libgutenprintui2_la-ui-utils.lo `test -f 'ui-utils.c' || echo '$(srcdir)/'`ui-utils.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgutenprintui2_la-ui-utils.Tpo $(DEPDIR)/libgutenprintui2_la-ui-utils.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ui-utils.c' object='libgutenprintui2_la-ui-utils.lo' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-ui-utils.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-ui-utils.Tpo -c -o libgutenprintui2_la-ui-utils.lo `test -f 'ui-utils.c' || echo '$(srcdir)/'`ui-utils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgutenprintui2_la-ui-utils.Tpo $(DEPDIR)/libgutenprintui2_la-ui-utils.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ui-utils.c' object='libgutenprintui2_la-ui-utils.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-ui-utils.lo `test -f 'ui-utils.c' || echo '$(srcdir)/'`ui-utils.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-ui-utils.lo `test -f 'ui-utils.c' || echo '$(srcdir)/'`ui-utils.c libgutenprintui2_la-print-image-thumbnail.lo: print-image-thumbnail.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-print-image-thumbnail.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-print-image-thumbnail.Tpo -c -o libgutenprintui2_la-print-image-thumbnail.lo `test -f 'print-image-thumbnail.c' || echo '$(srcdir)/'`print-image-thumbnail.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgutenprintui2_la-print-image-thumbnail.Tpo $(DEPDIR)/libgutenprintui2_la-print-image-thumbnail.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='print-image-thumbnail.c' object='libgutenprintui2_la-print-image-thumbnail.lo' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-print-image-thumbnail.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-print-image-thumbnail.Tpo -c -o libgutenprintui2_la-print-image-thumbnail.lo `test -f 'print-image-thumbnail.c' || echo '$(srcdir)/'`print-image-thumbnail.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgutenprintui2_la-print-image-thumbnail.Tpo $(DEPDIR)/libgutenprintui2_la-print-image-thumbnail.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='print-image-thumbnail.c' object='libgutenprintui2_la-print-image-thumbnail.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-print-image-thumbnail.lo `test -f 'print-image-thumbnail.c' || echo '$(srcdir)/'`print-image-thumbnail.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-print-image-thumbnail.lo `test -f 'print-image-thumbnail.c' || echo '$(srcdir)/'`print-image-thumbnail.c libgutenprintui2_la-curve.lo: curve.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-curve.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-curve.Tpo -c -o libgutenprintui2_la-curve.lo `test -f 'curve.c' || echo '$(srcdir)/'`curve.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgutenprintui2_la-curve.Tpo $(DEPDIR)/libgutenprintui2_la-curve.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='curve.c' object='libgutenprintui2_la-curve.lo' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-curve.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-curve.Tpo -c -o libgutenprintui2_la-curve.lo `test -f 'curve.c' || echo '$(srcdir)/'`curve.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgutenprintui2_la-curve.Tpo $(DEPDIR)/libgutenprintui2_la-curve.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='curve.c' object='libgutenprintui2_la-curve.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-curve.lo `test -f 'curve.c' || echo '$(srcdir)/'`curve.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-curve.lo `test -f 'curve.c' || echo '$(srcdir)/'`curve.c libgutenprintui2_la-gammacurve.lo: gammacurve.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-gammacurve.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-gammacurve.Tpo -c -o libgutenprintui2_la-gammacurve.lo `test -f 'gammacurve.c' || echo '$(srcdir)/'`gammacurve.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgutenprintui2_la-gammacurve.Tpo $(DEPDIR)/libgutenprintui2_la-gammacurve.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gammacurve.c' object='libgutenprintui2_la-gammacurve.lo' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-gammacurve.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-gammacurve.Tpo -c -o libgutenprintui2_la-gammacurve.lo `test -f 'gammacurve.c' || echo '$(srcdir)/'`gammacurve.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgutenprintui2_la-gammacurve.Tpo $(DEPDIR)/libgutenprintui2_la-gammacurve.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gammacurve.c' object='libgutenprintui2_la-gammacurve.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-gammacurve.lo `test -f 'gammacurve.c' || echo '$(srcdir)/'`gammacurve.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-gammacurve.lo `test -f 'gammacurve.c' || echo '$(srcdir)/'`gammacurve.c libgutenprintui2_la-typebuiltins.lo: typebuiltins.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-typebuiltins.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-typebuiltins.Tpo -c -o libgutenprintui2_la-typebuiltins.lo `test -f 'typebuiltins.c' || echo '$(srcdir)/'`typebuiltins.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgutenprintui2_la-typebuiltins.Tpo $(DEPDIR)/libgutenprintui2_la-typebuiltins.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='typebuiltins.c' object='libgutenprintui2_la-typebuiltins.lo' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -MT libgutenprintui2_la-typebuiltins.lo -MD -MP -MF $(DEPDIR)/libgutenprintui2_la-typebuiltins.Tpo -c -o libgutenprintui2_la-typebuiltins.lo `test -f 'typebuiltins.c' || echo '$(srcdir)/'`typebuiltins.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgutenprintui2_la-typebuiltins.Tpo $(DEPDIR)/libgutenprintui2_la-typebuiltins.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='typebuiltins.c' object='libgutenprintui2_la-typebuiltins.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-typebuiltins.lo `test -f 'typebuiltins.c' || echo '$(srcdir)/'`typebuiltins.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgutenprintui2_la_CFLAGS) $(CFLAGS) -c -o libgutenprintui2_la-typebuiltins.lo `test -f 'typebuiltins.c' || echo '$(srcdir)/'`typebuiltins.c .l.c: - $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) + $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) .y.c: - $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE) + $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE) mostlyclean-libtool: -rm -f *.lo @@ -570,8 +687,11 @@ clean-libtool: -rm -rf .libs _libs install-pkgconfigdataDATA: $(pkgconfigdata_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgconfigdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdatadir)" @list='$(pkgconfigdata_DATA)'; test -n "$(pkgconfigdatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdatadir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -585,30 +705,17 @@ uninstall-pkgconfigdataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfigdata_DATA)'; test -n "$(pkgconfigdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgconfigdatadir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgconfigdatadir)" && rm -f $$files - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) + dir='$(DESTDIR)$(pkgconfigdatadir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -620,15 +727,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -637,6 +740,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -688,10 +806,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -780,20 +903,21 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgconfigdataDATA .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am \ - install-libLTLIBRARIES install-man install-pdf install-pdf-am \ - install-pkgconfigdataDATA install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-libLTLIBRARIES uninstall-pkgconfigdataDATA +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-libLTLIBRARIES install-man install-pdf \ + install-pdf-am install-pkgconfigdataDATA install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-libLTLIBRARIES \ + uninstall-pkgconfigdataDATA @SET_MAKE@ diff --git a/src/gutenprintui2/curve.c b/src/gutenprintui2/curve.c index 6f89a53..dc9f3f9 100644 --- a/src/gutenprintui2/curve.c +++ b/src/gutenprintui2/curve.c @@ -35,10 +35,8 @@ #include <string.h> #include <math.h> -#include <gtk/gtkmain.h> -#include <gtk/gtkradiobutton.h> -#include <gtk/gtktable.h> - +#include <gutenprintui2/gutenprintui.h> +#include "gutenprintui-internal.h" #include <gutenprint/gutenprint-intl-internal.h> #include <gutenprintui2/curve.h> @@ -440,7 +438,6 @@ stpui_curve_graph_events (GtkWidget *widget, { GdkCursorType new_type = c->cursor_type; gint i, src, dst, leftbound, rightbound; - GdkEventButton *bevent; GdkEventMotion *mevent; GtkWidget *w; gint tx, ty; @@ -494,7 +491,6 @@ stpui_curve_graph_events (GtkWidget *widget, case GDK_BUTTON_PRESS: gtk_grab_add (widget); - bevent = (GdkEventButton *) event; new_type = GDK_TCROSS; switch (c->curve_type) @@ -809,7 +805,7 @@ stpui_curve_reset (StpuiCurve *c) void stpui_curve_set_gamma (StpuiCurve *c, gfloat gamma) { - gfloat x, one_over_gamma, height, one_over_width; + gfloat x, one_over_gamma, height; StpuiCurveType old_type; gint i; @@ -823,7 +819,6 @@ stpui_curve_set_gamma (StpuiCurve *c, gfloat gamma) one_over_gamma = 1.0; else one_over_gamma = 1.0 / gamma; - one_over_width = 1.0 / (c->num_points - 1); height = c->height; for (i = 0; i < c->num_points; ++i) { diff --git a/src/gutenprintui2/gammacurve.c b/src/gutenprintui2/gammacurve.c index c195b7d..0572abd 100644 --- a/src/gutenprintui2/gammacurve.c +++ b/src/gutenprintui2/gammacurve.c @@ -35,23 +35,9 @@ #include <stdlib.h> #include <stdio.h> -#include <gtk/gtkdialog.h> -#include <gtk/gtkdrawingarea.h> -#include <gtk/gtkentry.h> -#include <gtk/gtkhbox.h> -#include <gtk/gtkimage.h> -#include <gtk/gtklabel.h> -#include <gtk/gtkmain.h> -#include <gtk/gtkradiobutton.h> -#include <gtk/gtkstock.h> -#include <gtk/gtktable.h> -#include <gtk/gtkvbox.h> -#include <gtk/gtkwindow.h> - #include <gutenprint/gutenprint-intl-internal.h> - -#include <gutenprintui2/curve.h> -#include <gutenprintui2/gammacurve.h> +#include <gutenprintui2/gutenprintui.h> +#include "gutenprintui-internal.h" static GtkVBoxClass *parent_class = NULL; @@ -320,7 +306,8 @@ button_realize_callback (GtkWidget *w) i = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (w), "_StpuiGammaCurveIndex")); pm = gdk_pixmap_create_from_xpm_d (w->window, &mask, - &w->style->bg[GTK_STATE_NORMAL], (gchar **)xpm[i]); + &w->style->bg[GTK_STATE_NORMAL], + (gchar **) cast_safe(xpm[i])); pixmap = gtk_image_new_from_pixmap (pm, mask); gtk_container_add (GTK_CONTAINER (w), pixmap); diff --git a/src/gutenprintui2/gutenprintui-internal.h b/src/gutenprintui2/gutenprintui-internal.h index fef3b63..9a4530e 100644 --- a/src/gutenprintui2/gutenprintui-internal.h +++ b/src/gutenprintui2/gutenprintui-internal.h @@ -1,5 +1,5 @@ /* - * "$Id: gutenprintui-internal.h,v 1.5 2008/01/22 02:36:42 rlk Exp $" + * "$Id: gutenprintui-internal.h,v 1.6 2014/01/04 00:31:37 rlk Exp $" * * Print plug-in for the GIMP. * @@ -34,8 +34,8 @@ #endif #include <sys/types.h> -#include <gtk/gtk.h> +#include <gutenprintui2/gutenprintui.h> #include <gutenprint/gutenprint.h> typedef struct @@ -250,4 +250,32 @@ extern void stpui_create_scale_entry(option_t *option, stp_image_t *stpui_image_thumbnail_new(const guchar *data, gint w, gint h, gint bpp); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpointer-to-int-cast" +static inline gint +p2gint(void *p) +{ + return (gint) p; +} +#pragma GCC diagnostic pop + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wint-to-pointer-cast" +static inline void * +gint2p(int i) +{ + return (gpointer) i; +} +#pragma GCC diagnostic pop + +#pragma GCC diagnostic ignored "-Woverlength-strings" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-qual" +static inline void * +cast_safe(const void *ptr) +{ + return (void *)ptr; +} +#pragma GCC diagnostic pop + #endif /* GUTENPRINTUI_INTERNAL_H */ diff --git a/src/gutenprintui2/panel.c b/src/gutenprintui2/panel.c index a81f073..ddfc2c3 100644 --- a/src/gutenprintui2/panel.c +++ b/src/gutenprintui2/panel.c @@ -1,5 +1,5 @@ /* - * "$Id: panel.c,v 1.19 2010/07/10 18:32:35 rlk Exp $" + * "$Id: panel.c,v 1.21 2014/01/12 02:06:13 rlk Exp $" * * Main window code for Print plug-in for the GIMP. * @@ -768,8 +768,8 @@ build_printer_combo(void) stp_string_list_destroy(printer_list); printer_list = stp_string_list_create(); for (i = 0; i < stpui_plist_count; i++) - stp_string_list_add_string(printer_list, - stpui_plist[i].name, stpui_plist[i].name); + stp_string_list_add_string_unsafe(printer_list, + stpui_plist[i].name, stpui_plist[i].name); plist_build_combo(printer_combo, NULL, printer_list, @@ -1441,6 +1441,7 @@ drawing_area_resize_callback(GtkWidget *widget, GdkEventConfigure *event) return 1; } +#pragma GCC diagnostic ignored "-Woverlength-strings" static void create_preview (void) { @@ -1505,8 +1506,8 @@ create_positioning_button(GtkWidget *box, int invalid, gtk_widget_show(button); stpui_set_help_data(button, help); g_signal_connect(G_OBJECT(button), "clicked", - G_CALLBACK(position_button_callback), - (gpointer) invalid); + G_CALLBACK(position_button_callback), + gint2p(invalid)); return button; } @@ -1821,7 +1822,7 @@ create_printer_dialog (void) { const gchar *make = stp_printer_get_manufacturer(the_printer); if (! stp_string_list_is_present(manufacturer_list, make)) - stp_string_list_add_string(manufacturer_list, make, make); + stp_string_list_add_string_unsafe(manufacturer_list, make, make); } } @@ -2564,7 +2565,7 @@ create_units_frame (void) 0.5, unit->checkbox, 1, TRUE); stpui_set_help_data(unit->checkbox, gettext(unit->help)); g_signal_connect(G_OBJECT(unit->checkbox), "toggled", - G_CALLBACK(unit_callback), (gpointer) i); + G_CALLBACK(unit_callback), gint2p(i)); } } @@ -2603,7 +2604,7 @@ create_main_window (void) do_update_thumbnail = 1; build_printer_combo (); - plist_callback (NULL, (gpointer) stpui_plist_current); + plist_callback (NULL, gint2p(stpui_plist_current)); update_adjusted_thumbnail (TRUE); /* The initial size request does not account for the @@ -2614,6 +2615,8 @@ create_main_window (void) gtk_widget_show (print_dialog); } +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wformat-nonliteral" static void set_entry_value(GtkWidget *entry, double value, int block) { @@ -2641,6 +2644,7 @@ set_entry_value(GtkWidget *entry, double value, int block) NULL, NULL); } +#pragma GCC diagnostic pop static void reset_preview(void) @@ -2955,7 +2959,7 @@ static void position_button_callback(GtkWidget *widget, gpointer data) { reset_preview(); - pv->invalid_mask |= (gint) data; + pv->invalid_mask |= p2gint(data); preview_update (); } @@ -3318,7 +3322,7 @@ do_all_updates(void) static void copy_count_callback(GtkAdjustment *adjustment, gpointer data) { - gint copy_count = (gint) adjustment->value; + gint copy_count = adjustment->value; stpui_plist_set_copy_count(pv, copy_count); update_standard_print_command(); } @@ -3434,7 +3438,7 @@ plist_callback (GtkWidget *widget, } else { - stpui_plist_current = (gint) data; + stpui_plist_current = p2gint(data); } set_current_printer(); @@ -3668,20 +3672,23 @@ combo_callback(GtkWidget *widget, gpointer data) /* * orientation_callback() - Update the current media size. */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wint-to-pointer-cast" static void orientation_callback (GtkWidget *widget, gpointer data) { reset_preview (); - if (pv->orientation != (gint) data) + if (pv->orientation != p2gint(data)) { invalidate_preview_thumbnail (); - set_orientation((gint) data); + set_orientation(p2gint(data)); update_adjusted_thumbnail(TRUE); preview_update (); } } +#pragma GCC diagnostic pop /* * output_type_callback() - Update the current output type. @@ -3782,7 +3789,7 @@ unit_callback (GtkWidget *widget, if (GTK_TOGGLE_BUTTON (widget)->active) { - pv->unit = (gint) data; + pv->unit = p2gint(data); gtk_label_set_text(GTK_LABEL(units_label), units[pv->unit].name); set_all_entry_values(); update_options(); @@ -3898,7 +3905,7 @@ setup_update (void) idx = stp_get_printer_index_by_driver (stp_get_driver (pv->v)); idx = gtk_clist_find_row_from_data(GTK_CLIST(printer_driver), - (gpointer) idx); + gint2p(idx)); /* if (idx >= 0) idx = 0; @@ -4035,7 +4042,7 @@ set_printer(void) gtk_label_set_text (GTK_LABEL (printer_model_label), gettext (stp_printer_get_long_name (tmp_printer))); - plist_callback (NULL, (gpointer) stpui_plist_current); + plist_callback (NULL, gint2p(stpui_plist_current)); } /* @@ -4139,7 +4146,7 @@ build_printer_driver_clist(void) gtk_clist_insert (GTK_CLIST (printer_driver), current_idx, &tmp); gtk_clist_set_row_data (GTK_CLIST (printer_driver), current_idx, - (gpointer) i); + gint2p(i)); g_free(tmp); current_idx++; } @@ -4168,6 +4175,8 @@ manufacturer_callback(GtkWidget *widget, /* I - Driver list */ /* * print_driver_callback() - Update the current printer driver. */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wint-to-pointer-cast" static void print_driver_callback (GtkWidget *widget, /* I - Driver list */ gint row, @@ -4184,7 +4193,7 @@ print_driver_callback (GtkWidget *widget, /* I - Driver list */ invalidate_preview_thumbnail (); reset_preview (); data = gtk_clist_get_row_data (GTK_CLIST (widget), row); - tmp_printer = stp_get_printer_by_index ((gint) data); + tmp_printer = stp_get_printer_by_index (p2gint(data)); tmp = stpui_build_standard_print_command(pv, tmp_printer); gtk_entry_set_text(GTK_ENTRY(standard_cmd_entry), tmp); g_free(tmp); @@ -4192,6 +4201,7 @@ print_driver_callback (GtkWidget *widget, /* I - Driver list */ pop_ppd_box(); calling_print_driver_callback--; } +#pragma GCC diagnostic pop /* * ppd_browse_callback() - @@ -4393,14 +4403,12 @@ static void redraw_color_swatch (void) { static GdkGC *gc = NULL; - static GdkColormap *cmap; if (adjusted_thumbnail_data && swatch && swatch->widget.window) { if (gc == NULL) { gc = gdk_gc_new (swatch->widget.window); - cmap = gtk_widget_get_colormap (GTK_WIDGET(swatch)); } if (!print_mode_is_color(pv->v)) diff --git a/src/gutenprintui2/plist.c b/src/gutenprintui2/plist.c index 77e8cab..7d70f4a 100644 --- a/src/gutenprintui2/plist.c +++ b/src/gutenprintui2/plist.c @@ -1,5 +1,5 @@ /* - * "$Id: plist.c,v 1.18 2008/07/04 14:29:28 rlk Exp $" + * "$Id: plist.c,v 1.20 2014/01/04 00:31:37 rlk Exp $" * * Print plug-in for the GIMP. * @@ -350,12 +350,6 @@ writefunc(void *file, const char *buf, size_t bytes) fwrite(buf, 1, bytes, prn); } -static void -stpui_errfunc(void *file, const char *buf, size_t bytes) -{ - g_message("%s",buf); -} - void stpui_printer_initialize(stpui_plist_t *printer) { @@ -966,7 +960,6 @@ extern int yyparse(void); static void stpui_printrc_load_v2(FILE *fp) { - int retval; char *locale; yyin = fp; @@ -975,7 +968,7 @@ stpui_printrc_load_v2(FILE *fp) locale = g_strdup(setlocale(LC_NUMERIC, NULL)); setlocale(LC_NUMERIC, "C"); #endif - retval = yyparse(); + (void) yyparse(); #ifdef HAVE_LOCALE_H setlocale(LC_NUMERIC, locale); SAFE_FREE(locale); @@ -1249,8 +1242,8 @@ stpui_get_system_printers(void) char line[1025]; /* Line from status command */ stpui_system_print_queues = stp_string_list_create(); - stp_string_list_add_string(stpui_system_print_queues, "", - _("(Default Printer)")); + stp_string_list_add_string_unsafe(stpui_system_print_queues, "", + _("(Default Printer)")); /* * Run the command, if any, to get the available printers... @@ -1281,8 +1274,8 @@ stpui_get_system_printers(void) if (strlen(line) > 0) { if (!stp_string_list_is_present(stpui_system_print_queues, line)) - stp_string_list_add_string(stpui_system_print_queues, - line, line); + stp_string_list_add_string_unsafe(stpui_system_print_queues, + line, line); } } pclose(pfile); @@ -1637,7 +1630,6 @@ stpui_print(const stpui_plist_t *printer, stpui_image_t *image) else /* Child 2 (printer command) */ { char *command; - char *locale; if (stpui_plist_get_command_type(printer) == COMMAND_TYPE_DEFAULT) { @@ -1648,7 +1640,7 @@ stpui_print(const stpui_plist_t *printer, stpui_image_t *image) } else command = - (char *) stpui_plist_get_custom_command(printer); + cast_safe(stpui_plist_get_custom_command(printer)); (void) close(2); (void) close(1); dup2 (errfd[1], 2); @@ -1658,7 +1650,7 @@ stpui_print(const stpui_plist_t *printer, stpui_image_t *image) close (pipefd[1]); close(syncfd[1]); #ifdef HAVE_LOCALE_H - locale = g_strdup(setlocale(LC_NUMERIC, NULL)); + setlocale(LC_NUMERIC, NULL); setlocale(LC_NUMERIC, "C"); #endif execl("/bin/sh", "/bin/sh", "-c", command, NULL); @@ -1828,11 +1820,12 @@ stpui_print(const stpui_plist_t *printer, stpui_image_t *image) } stpui_plist_destroy(np); g_free(np); - return 1; + return print_status; } + return 0; } /* - * End of "$Id: plist.c,v 1.18 2008/07/04 14:29:28 rlk Exp $". + * End of "$Id: plist.c,v 1.20 2014/01/04 00:31:37 rlk Exp $". */ diff --git a/src/gutenprintui2/printrcl.c b/src/gutenprintui2/printrcl.c index 088e296..ab63fe1 100644 --- a/src/gutenprintui2/printrcl.c +++ b/src/gutenprintui2/printrcl.c @@ -8,7 +8,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 +#define YY_FLEX_SUBMINOR_VERSION 37 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -53,7 +53,6 @@ typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN @@ -84,6 +83,8 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#endif /* ! C99 */ + #endif /* ! FLEXINT_H */ #ifdef __cplusplus @@ -152,7 +153,12 @@ typedef unsigned int flex_uint32_t; typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif -extern int yyleng; +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern yy_size_t yyleng; extern FILE *yyin, *yyout; @@ -178,11 +184,6 @@ extern FILE *yyin, *yyout; #define unput(c) yyunput( c, (yytext_ptr) ) -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state @@ -200,7 +201,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -270,8 +271,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; @@ -299,7 +300,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); @@ -329,7 +330,7 @@ void yyfree (void * ); #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) -#define yywrap(n) 1 +#define yywrap() 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; @@ -717,7 +718,7 @@ int yy_flex_debug = 0; char *yytext; #line 1 "printrcl.l" /* -*-Mode: C-*- - * "$Id: printrcl.l,v 1.2 2012/05/11 13:16:12 rlk Exp $" + * "$Id: printrcl.l,v 1.3 2014/01/04 00:31:37 rlk Exp $" * * printrc parser * @@ -754,6 +755,10 @@ char *yytext; #define YY_NO_UNPUT +/* Bison does some stuff that triggers unimportant warnings. */ +#pragma GCC diagnostic ignored "-Wredundant-decls" +#pragma GCC diagnostic ignored "-Wunused-function" + int mylineno = 1; extern YYSTYPE yylval; @@ -776,7 +781,7 @@ q_strdup(const char *s) return g_strndup(s + 1, strlen(s) - 2); } -#line 780 "printrcl.c" +#line 785 "printrcl.c" #define INITIAL 0 @@ -815,7 +820,7 @@ FILE *yyget_out (void ); void yyset_out (FILE * out_str ); -int yyget_leng (void ); +yy_size_t yyget_leng (void ); char *yyget_text (void ); @@ -865,7 +870,7 @@ static int input (void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -876,7 +881,7 @@ static int input (void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -958,10 +963,10 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 75 "printrcl.l" +#line 79 "printrcl.l" -#line 965 "printrcl.c" +#line 970 "printrcl.c" if ( !(yy_init) ) { @@ -1046,208 +1051,208 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 77 "printrcl.l" +#line 81 "printrcl.l" DBG(CURRENT_PRINTER); return CURRENT_PRINTER; YY_BREAK case 2: YY_RULE_SETUP -#line 78 "printrcl.l" +#line 82 "printrcl.l" DBG(SHOW_ALL_PAPER_SIZES); return SHOW_ALL_PAPER_SIZES; YY_BREAK case 3: YY_RULE_SETUP -#line 79 "printrcl.l" +#line 83 "printrcl.l" DBG(PRINTER); return PRINTER; YY_BREAK case 4: YY_RULE_SETUP -#line 80 "printrcl.l" +#line 84 "printrcl.l" DBG(DESTINATION); return DESTINATION; YY_BREAK case 5: YY_RULE_SETUP -#line 81 "printrcl.l" +#line 85 "printrcl.l" DBG(SCALING); return SCALING; YY_BREAK case 6: YY_RULE_SETUP -#line 82 "printrcl.l" +#line 86 "printrcl.l" DBG(ORIENTATION); return ORIENTATION; YY_BREAK case 7: YY_RULE_SETUP -#line 83 "printrcl.l" +#line 87 "printrcl.l" DBG(AUTOSIZE_ROLL_PAPER); return AUTOSIZE_ROLL_PAPER; YY_BREAK case 8: YY_RULE_SETUP -#line 84 "printrcl.l" +#line 88 "printrcl.l" DBG(UNIT); return UNIT; YY_BREAK case 9: YY_RULE_SETUP -#line 85 "printrcl.l" +#line 89 "printrcl.l" DBG(DRIVER); return DRIVER; YY_BREAK case 10: YY_RULE_SETUP -#line 86 "printrcl.l" +#line 90 "printrcl.l" DBG(LEFT); return LEFT; YY_BREAK case 11: YY_RULE_SETUP -#line 87 "printrcl.l" +#line 91 "printrcl.l" DBG(TOP); return TOP; YY_BREAK case 12: YY_RULE_SETUP -#line 88 "printrcl.l" +#line 92 "printrcl.l" DBG(CUSTOM_PAGE_WIDTH); return CUSTOM_PAGE_WIDTH; YY_BREAK case 13: YY_RULE_SETUP -#line 89 "printrcl.l" +#line 93 "printrcl.l" DBG(CUSTOM_PAGE_HEIGHT); return CUSTOM_PAGE_HEIGHT; YY_BREAK case 14: YY_RULE_SETUP -#line 90 "printrcl.l" +#line 94 "printrcl.l" DBG(OUTPUT_TYPE); return OUTPUT_TYPE; YY_BREAK case 15: YY_RULE_SETUP -#line 91 "printrcl.l" +#line 95 "printrcl.l" DBG(PARAMETER); return PARAMETER; YY_BREAK case 16: YY_RULE_SETUP -#line 92 "printrcl.l" +#line 96 "printrcl.l" DBG(QUEUE_NAME); return QUEUE_NAME; YY_BREAK case 17: YY_RULE_SETUP -#line 93 "printrcl.l" +#line 97 "printrcl.l" DBG(OUTPUT_FILENAME); return OUTPUT_FILENAME; YY_BREAK case 18: YY_RULE_SETUP -#line 94 "printrcl.l" +#line 98 "printrcl.l" DBG(EXTRA_PRINTER_OPTIONS); return EXTRA_PRINTER_OPTIONS; YY_BREAK case 19: YY_RULE_SETUP -#line 95 "printrcl.l" +#line 99 "printrcl.l" DBG(CUSTOM_COMMAND); return CUSTOM_COMMAND; YY_BREAK case 20: YY_RULE_SETUP -#line 96 "printrcl.l" +#line 100 "printrcl.l" DBG(COMMAND_TYPE); return COMMAND_TYPE; YY_BREAK case 21: YY_RULE_SETUP -#line 97 "printrcl.l" +#line 101 "printrcl.l" DBG(GLOBAL_SETTINGS); return GLOBAL_SETTINGS; YY_BREAK case 22: YY_RULE_SETUP -#line 98 "printrcl.l" +#line 102 "printrcl.l" DBG(END_GLOBAL_SETTINGS); return END_GLOBAL_SETTINGS; YY_BREAK case 23: YY_RULE_SETUP -#line 99 "printrcl.l" +#line 103 "printrcl.l" DBG(GLOBAL); return GLOBAL; YY_BREAK case 24: YY_RULE_SETUP -#line 101 "printrcl.l" +#line 105 "printrcl.l" DBG(pINT); return pINT; YY_BREAK case 25: YY_RULE_SETUP -#line 102 "printrcl.l" +#line 106 "printrcl.l" DBG(pSTRING_LIST); return pSTRING_LIST; YY_BREAK case 26: YY_RULE_SETUP -#line 103 "printrcl.l" +#line 107 "printrcl.l" DBG(pFILE); return pFILE; YY_BREAK case 27: YY_RULE_SETUP -#line 104 "printrcl.l" +#line 108 "printrcl.l" DBG(pDOUBLE); return pDOUBLE; YY_BREAK case 28: YY_RULE_SETUP -#line 105 "printrcl.l" +#line 109 "printrcl.l" DBG(pDIMENSION); return pDIMENSION; YY_BREAK case 29: YY_RULE_SETUP -#line 106 "printrcl.l" +#line 110 "printrcl.l" DBG(pBOOLEAN); return pBOOLEAN; YY_BREAK case 30: YY_RULE_SETUP -#line 107 "printrcl.l" +#line 111 "printrcl.l" DBG(pCURVE); return pCURVE; YY_BREAK case 31: YY_RULE_SETUP -#line 109 "printrcl.l" +#line 113 "printrcl.l" yylval.ival = atoi(yytext); DBG(tINT); return tINT; YY_BREAK case 32: YY_RULE_SETUP -#line 110 "printrcl.l" +#line 114 "printrcl.l" yylval.dval = strtod(yytext, NULL); DBG(tDOUBLE); return tDOUBLE; YY_BREAK case 33: /* rule 33 can match eol */ YY_RULE_SETUP -#line 111 "printrcl.l" +#line 115 "printrcl.l" yylval.sval = q_strdup(yytext); DBG(tSTRING); return tSTRING; YY_BREAK case 34: YY_RULE_SETUP -#line 112 "printrcl.l" +#line 116 "printrcl.l" yylval.sval = g_strdup(yytext); DBG(tBOOLEAN); return tBOOLEAN; YY_BREAK case 35: YY_RULE_SETUP -#line 113 "printrcl.l" +#line 117 "printrcl.l" yylval.sval = g_strdup(yytext); DBG(tWORD); return tWORD; YY_BREAK case 36: /* rule 36 can match eol */ YY_RULE_SETUP -#line 114 "printrcl.l" +#line 118 "printrcl.l" DBG(PRINTRC_HDR); return PRINTRC_HDR; YY_BREAK case 37: YY_RULE_SETUP -#line 115 "printrcl.l" +#line 119 "printrcl.l" DBG(whitespace1); /* Skip blanks/tabs */ YY_BREAK case 38: YY_RULE_SETUP -#line 116 "printrcl.l" +#line 120 "printrcl.l" DBG(comment1); /* Skip comments */ YY_BREAK case 39: /* rule 39 can match eol */ YY_RULE_SETUP -#line 117 "printrcl.l" +#line 121 "printrcl.l" DBG(newline); mylineno++; YY_BREAK case 40: YY_RULE_SETUP -#line 118 "printrcl.l" +#line 122 "printrcl.l" ECHO; YY_BREAK -#line 1251 "printrcl.c" +#line 1256 "printrcl.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1433,21 +1438,21 @@ static int yy_get_next_buffer (void) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -1478,7 +1483,7 @@ static int yy_get_next_buffer (void) /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), (size_t) num_to_read ); + (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } @@ -1573,7 +1578,7 @@ static int yy_get_next_buffer (void) yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 335); - return yy_is_jam ? 0 : yy_current_state; + return yy_is_jam ? 0 : yy_current_state; } static void yyunput (int c, register char * yy_bp ) @@ -1588,7 +1593,7 @@ static int yy_get_next_buffer (void) if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - register int number_to_move = (yy_n_chars) + 2; + register yy_size_t number_to_move = (yy_n_chars) + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = @@ -1637,7 +1642,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -1797,10 +1802,6 @@ static void yy_load_buffer_state (void) yyfree((void *) b ); } -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. @@ -1913,7 +1914,7 @@ void yypop_buffer_state (void) */ static void yyensure_buffer_stack (void) { - int num_to_alloc; + yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { @@ -2005,12 +2006,12 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; @@ -2097,7 +2098,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -int yyget_leng (void) +yy_size_t yyget_leng (void) { return yyleng; } @@ -2245,4 +2246,4 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 118 "printrcl.l" +#line 122 "printrcl.l" diff --git a/src/gutenprintui2/printrcl.l b/src/gutenprintui2/printrcl.l index e9ac6d1..a013e1f 100644 --- a/src/gutenprintui2/printrcl.l +++ b/src/gutenprintui2/printrcl.l @@ -1,5 +1,5 @@ /* -*-Mode: C-*- - * "$Id: printrcl.l,v 1.2 2012/05/11 13:16:12 rlk Exp $" + * "$Id: printrcl.l,v 1.3 2014/01/04 00:31:37 rlk Exp $" * * printrc parser * @@ -37,6 +37,10 @@ #define YY_NO_UNPUT +/* Bison does some stuff that triggers unimportant warnings. */ +#pragma GCC diagnostic ignored "-Wredundant-decls" +#pragma GCC diagnostic ignored "-Wunused-function" + int mylineno = 1; extern YYSTYPE yylval; diff --git a/src/gutenprintui2/ui-utils.c b/src/gutenprintui2/ui-utils.c index d45d22a..724f884 100644 --- a/src/gutenprintui2/ui-utils.c +++ b/src/gutenprintui2/ui-utils.c @@ -1,5 +1,5 @@ /* - * "$Id: ui-utils.c,v 1.4 2012/01/19 13:26:57 m0m Exp $" + * "$Id: ui-utils.c,v 1.5 2014/01/04 00:31:37 rlk Exp $" * * Main window code for Print plug-in for the GIMP. * @@ -50,6 +50,8 @@ typedef void (*StpuiBasicCallback) (GObject *object, gpointer user_data); /* local callbacks of dialog_new () */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-pedantic" static gint dialog_delete_callback (GtkWidget *widget, GdkEvent *event, @@ -71,6 +73,7 @@ dialog_delete_callback (GtkWidget *widget, return TRUE; } +#pragma GCC diagnostic pop /** * dialog_create_action_areav: @@ -79,6 +82,8 @@ dialog_delete_callback (GtkWidget *widget, * buttons. * */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-pedantic" static void dialog_create_action_areav (GtkDialog *dialog, va_list args) @@ -173,6 +178,7 @@ dialog_create_action_areav (GtkDialog *dialog, label = va_arg (args, gchar *); } } +#pragma GCC diagnostic pop /** * dialog_new: @@ -771,7 +777,7 @@ stpui_create_radio_button(radio_group_t *radio, GSList *group, radio->button, 1, FALSE); stpui_set_help_data(radio->button, gettext(radio->help)); g_signal_connect(G_OBJECT(radio->button), "toggled", - G_CALLBACK(callback), (gpointer) radio->value); + G_CALLBACK(callback), cast_safe(radio->value)); return group; } diff --git a/src/main/Makefile.in b/src/main/Makefile.in index 6dfeb32..7006fc9 100644 --- a/src/main/Makefile.in +++ b/src/main/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -22,6 +21,51 @@ VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -40,8 +84,9 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/gutenprint.pc.in $(top_srcdir)/scripts/global.mk +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs \ + $(srcdir)/gutenprint.pc.in $(top_srcdir)/scripts/depcomp subdir = src/main ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -82,15 +127,26 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgmoduledir)" \ "$(DESTDIR)$(pkgconfigdatadir)" LTLIBRARIES = $(lib_LTLIBRARIES) $(pkgmodule_LTLIBRARIES) color_traditional_la_LIBADD = am_color_traditional_la_OBJECTS = print-color.lo color-conversions.lo color_traditional_la_OBJECTS = $(am_color_traditional_la_OBJECTS) -color_traditional_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(color_traditional_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +color_traditional_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(color_traditional_la_LDFLAGS) \ + $(LDFLAGS) -o $@ @BUILD_MODULES_TRUE@am_color_traditional_la_rpath = -rpath \ @BUILD_MODULES_TRUE@ $(pkgmoduledir) am__DEPENDENCIES_1 = @@ -137,73 +193,99 @@ am_libgutenprint_la_OBJECTS = array.lo bit-ops.lo channel.lo color.lo \ printers.lo sequence.lo string-list.lo xml.lo $(am__objects_1) \ $(am__objects_2) $(am__objects_12) libgutenprint_la_OBJECTS = $(am_libgutenprint_la_OBJECTS) -libgutenprint_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libgutenprint_la_LDFLAGS) $(LDFLAGS) -o $@ +libgutenprint_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libgutenprint_la_LDFLAGS) $(LDFLAGS) \ + -o $@ print_canon_la_LIBADD = am_print_canon_la_OBJECTS = print-canon.lo print_canon_la_OBJECTS = $(am_print_canon_la_OBJECTS) -print_canon_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(print_canon_la_LDFLAGS) $(LDFLAGS) -o $@ +print_canon_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(print_canon_la_LDFLAGS) $(LDFLAGS) -o \ + $@ @BUILD_MODULES_TRUE@am_print_canon_la_rpath = -rpath $(pkgmoduledir) print_dyesub_la_LIBADD = am_print_dyesub_la_OBJECTS = print-olympus.lo print_dyesub_la_OBJECTS = $(am_print_dyesub_la_OBJECTS) -print_dyesub_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(print_dyesub_la_LDFLAGS) $(LDFLAGS) -o $@ +print_dyesub_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(print_dyesub_la_LDFLAGS) $(LDFLAGS) \ + -o $@ @BUILD_MODULES_TRUE@am_print_dyesub_la_rpath = -rpath $(pkgmoduledir) print_escp2_la_LIBADD = am_print_escp2_la_OBJECTS = print-escp2.lo escp2-driver.lo \ print-escp2-data.lo escp2-channels.lo escp2-papers.lo \ escp2-resolutions.lo print_escp2_la_OBJECTS = $(am_print_escp2_la_OBJECTS) -print_escp2_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(print_escp2_la_LDFLAGS) $(LDFLAGS) -o $@ +print_escp2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(print_escp2_la_LDFLAGS) $(LDFLAGS) -o \ + $@ @BUILD_MODULES_TRUE@am_print_escp2_la_rpath = -rpath $(pkgmoduledir) print_lexmark_la_LIBADD = am_print_lexmark_la_OBJECTS = print-lexmark.lo print_lexmark_la_OBJECTS = $(am_print_lexmark_la_OBJECTS) -print_lexmark_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(print_lexmark_la_LDFLAGS) $(LDFLAGS) -o $@ +print_lexmark_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(print_lexmark_la_LDFLAGS) $(LDFLAGS) \ + -o $@ @BUILD_MODULES_TRUE@am_print_lexmark_la_rpath = -rpath $(pkgmoduledir) print_pcl_la_LIBADD = am_print_pcl_la_OBJECTS = print-pcl.lo print_pcl_la_OBJECTS = $(am_print_pcl_la_OBJECTS) -print_pcl_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ +print_pcl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(print_pcl_la_LDFLAGS) $(LDFLAGS) -o $@ @BUILD_MODULES_TRUE@am_print_pcl_la_rpath = -rpath $(pkgmoduledir) print_ps_la_LIBADD = am_print_ps_la_OBJECTS = print-ps.lo xmlppd.lo print_ps_la_OBJECTS = $(am_print_ps_la_OBJECTS) -print_ps_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ +print_ps_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(print_ps_la_LDFLAGS) $(LDFLAGS) -o $@ @BUILD_MODULES_TRUE@am_print_ps_la_rpath = -rpath $(pkgmoduledir) print_raw_la_LIBADD = am_print_raw_la_OBJECTS = print-raw.lo print_raw_la_OBJECTS = $(am_print_raw_la_OBJECTS) -print_raw_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ +print_raw_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(print_raw_la_LDFLAGS) $(LDFLAGS) -o $@ @BUILD_MODULES_TRUE@am_print_raw_la_rpath = -rpath $(pkgmoduledir) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(color_traditional_la_SOURCES) $(libgutenprint_la_SOURCES) \ $(print_canon_la_SOURCES) $(print_dyesub_la_SOURCES) \ $(print_escp2_la_SOURCES) $(print_lexmark_la_SOURCES) \ @@ -214,13 +296,36 @@ DIST_SOURCES = $(color_traditional_la_SOURCES) \ $(print_dyesub_la_SOURCES) $(print_escp2_la_SOURCES) \ $(print_lexmark_la_SOURCES) $(print_pcl_la_SOURCES) \ $(print_ps_la_SOURCES) $(print_raw_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac DATA = $(pkgconfigdata_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -278,6 +383,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -289,6 +395,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -313,6 +420,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -577,6 +686,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -588,9 +698,9 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): gutenprint.pc: $(top_builddir)/config.status $(srcdir)/gutenprint.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ @@ -598,6 +708,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) else :; fi; \ done; \ test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } @@ -613,15 +725,17 @@ uninstall-libLTLIBRARIES: clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + install-pkgmoduleLTLIBRARIES: $(pkgmodule_LTLIBRARIES) @$(NORMAL_INSTALL) - test -z "$(pkgmoduledir)" || $(MKDIR_P) "$(DESTDIR)$(pkgmoduledir)" @list='$(pkgmodule_LTLIBRARIES)'; test -n "$(pkgmoduledir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ @@ -629,6 +743,8 @@ install-pkgmoduleLTLIBRARIES: $(pkgmodule_LTLIBRARIES) else :; fi; \ done; \ test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgmoduledir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgmoduledir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkgmoduledir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkgmoduledir)"; \ } @@ -644,30 +760,41 @@ uninstall-pkgmoduleLTLIBRARIES: clean-pkgmoduleLTLIBRARIES: -test -z "$(pkgmodule_LTLIBRARIES)" || rm -f $(pkgmodule_LTLIBRARIES) - @list='$(pkgmodule_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -color-traditional.la: $(color_traditional_la_OBJECTS) $(color_traditional_la_DEPENDENCIES) - $(color_traditional_la_LINK) $(am_color_traditional_la_rpath) $(color_traditional_la_OBJECTS) $(color_traditional_la_LIBADD) $(LIBS) -libgutenprint.la: $(libgutenprint_la_OBJECTS) $(libgutenprint_la_DEPENDENCIES) - $(libgutenprint_la_LINK) -rpath $(libdir) $(libgutenprint_la_OBJECTS) $(libgutenprint_la_LIBADD) $(LIBS) -print-canon.la: $(print_canon_la_OBJECTS) $(print_canon_la_DEPENDENCIES) - $(print_canon_la_LINK) $(am_print_canon_la_rpath) $(print_canon_la_OBJECTS) $(print_canon_la_LIBADD) $(LIBS) -print-dyesub.la: $(print_dyesub_la_OBJECTS) $(print_dyesub_la_DEPENDENCIES) - $(print_dyesub_la_LINK) $(am_print_dyesub_la_rpath) $(print_dyesub_la_OBJECTS) $(print_dyesub_la_LIBADD) $(LIBS) -print-escp2.la: $(print_escp2_la_OBJECTS) $(print_escp2_la_DEPENDENCIES) - $(print_escp2_la_LINK) $(am_print_escp2_la_rpath) $(print_escp2_la_OBJECTS) $(print_escp2_la_LIBADD) $(LIBS) -print-lexmark.la: $(print_lexmark_la_OBJECTS) $(print_lexmark_la_DEPENDENCIES) - $(print_lexmark_la_LINK) $(am_print_lexmark_la_rpath) $(print_lexmark_la_OBJECTS) $(print_lexmark_la_LIBADD) $(LIBS) -print-pcl.la: $(print_pcl_la_OBJECTS) $(print_pcl_la_DEPENDENCIES) - $(print_pcl_la_LINK) $(am_print_pcl_la_rpath) $(print_pcl_la_OBJECTS) $(print_pcl_la_LIBADD) $(LIBS) -print-ps.la: $(print_ps_la_OBJECTS) $(print_ps_la_DEPENDENCIES) - $(print_ps_la_LINK) $(am_print_ps_la_rpath) $(print_ps_la_OBJECTS) $(print_ps_la_LIBADD) $(LIBS) -print-raw.la: $(print_raw_la_OBJECTS) $(print_raw_la_DEPENDENCIES) - $(print_raw_la_LINK) $(am_print_raw_la_rpath) $(print_raw_la_OBJECTS) $(print_raw_la_LIBADD) $(LIBS) + @list='$(pkgmodule_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +color-traditional.la: $(color_traditional_la_OBJECTS) $(color_traditional_la_DEPENDENCIES) $(EXTRA_color_traditional_la_DEPENDENCIES) + $(AM_V_CCLD)$(color_traditional_la_LINK) $(am_color_traditional_la_rpath) $(color_traditional_la_OBJECTS) $(color_traditional_la_LIBADD) $(LIBS) + +libgutenprint.la: $(libgutenprint_la_OBJECTS) $(libgutenprint_la_DEPENDENCIES) $(EXTRA_libgutenprint_la_DEPENDENCIES) + $(AM_V_CCLD)$(libgutenprint_la_LINK) -rpath $(libdir) $(libgutenprint_la_OBJECTS) $(libgutenprint_la_LIBADD) $(LIBS) + +print-canon.la: $(print_canon_la_OBJECTS) $(print_canon_la_DEPENDENCIES) $(EXTRA_print_canon_la_DEPENDENCIES) + $(AM_V_CCLD)$(print_canon_la_LINK) $(am_print_canon_la_rpath) $(print_canon_la_OBJECTS) $(print_canon_la_LIBADD) $(LIBS) + +print-dyesub.la: $(print_dyesub_la_OBJECTS) $(print_dyesub_la_DEPENDENCIES) $(EXTRA_print_dyesub_la_DEPENDENCIES) + $(AM_V_CCLD)$(print_dyesub_la_LINK) $(am_print_dyesub_la_rpath) $(print_dyesub_la_OBJECTS) $(print_dyesub_la_LIBADD) $(LIBS) + +print-escp2.la: $(print_escp2_la_OBJECTS) $(print_escp2_la_DEPENDENCIES) $(EXTRA_print_escp2_la_DEPENDENCIES) + $(AM_V_CCLD)$(print_escp2_la_LINK) $(am_print_escp2_la_rpath) $(print_escp2_la_OBJECTS) $(print_escp2_la_LIBADD) $(LIBS) + +print-lexmark.la: $(print_lexmark_la_OBJECTS) $(print_lexmark_la_DEPENDENCIES) $(EXTRA_print_lexmark_la_DEPENDENCIES) + $(AM_V_CCLD)$(print_lexmark_la_LINK) $(am_print_lexmark_la_rpath) $(print_lexmark_la_OBJECTS) $(print_lexmark_la_LIBADD) $(LIBS) + +print-pcl.la: $(print_pcl_la_OBJECTS) $(print_pcl_la_DEPENDENCIES) $(EXTRA_print_pcl_la_DEPENDENCIES) + $(AM_V_CCLD)$(print_pcl_la_LINK) $(am_print_pcl_la_rpath) $(print_pcl_la_OBJECTS) $(print_pcl_la_LIBADD) $(LIBS) + +print-ps.la: $(print_ps_la_OBJECTS) $(print_ps_la_DEPENDENCIES) $(EXTRA_print_ps_la_DEPENDENCIES) + $(AM_V_CCLD)$(print_ps_la_LINK) $(am_print_ps_la_rpath) $(print_ps_la_OBJECTS) $(print_ps_la_LIBADD) $(LIBS) + +print-raw.la: $(print_raw_la_OBJECTS) $(print_raw_la_DEPENDENCIES) $(EXTRA_print_raw_la_DEPENDENCIES) + $(AM_V_CCLD)$(print_raw_la_LINK) $(am_print_raw_la_rpath) $(print_raw_la_OBJECTS) $(print_raw_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -725,25 +852,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlppd.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo @@ -752,8 +879,11 @@ clean-libtool: -rm -rf .libs _libs install-pkgconfigdataDATA: $(pkgconfigdata_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgconfigdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdatadir)" @list='$(pkgconfigdata_DATA)'; test -n "$(pkgconfigdatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdatadir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -767,30 +897,17 @@ uninstall-pkgconfigdataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfigdata_DATA)'; test -n "$(pkgconfigdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgconfigdatadir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgconfigdatadir)" && rm -f $$files - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) + dir='$(DESTDIR)$(pkgconfigdatadir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -802,15 +919,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -819,6 +932,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -870,10 +998,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -961,22 +1094,22 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgconfigdataDATA \ .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool clean-pkgmoduleLTLIBRARIES \ - ctags distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libLTLIBRARIES install-man install-pdf \ - install-pdf-am install-pkgconfigdataDATA \ - install-pkgmoduleLTLIBRARIES install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-libLTLIBRARIES uninstall-pkgconfigdataDATA \ - uninstall-pkgmoduleLTLIBRARIES + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-libLTLIBRARIES \ + install-man install-pdf install-pdf-am \ + install-pkgconfigdataDATA install-pkgmoduleLTLIBRARIES \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \ + uninstall-pkgconfigdataDATA uninstall-pkgmoduleLTLIBRARIES @SET_MAKE@ diff --git a/src/main/canon-inks.h b/src/main/canon-inks.h index ff478a9..5c0f2e5 100644 --- a/src/main/canon-inks.h +++ b/src/main/canon-inks.h @@ -54,6 +54,8 @@ typedef struct { const int bits; /* bitdepth */ const int flags; /* flags: */ #define INK_FLAG_5pixel_in_1byte 0x1 /* use special compression where 5 3level pixels get stored in 1 byte */ +#define INK_FLAG_3pixel5level_in_1byte 0x2 /* use special compression where 3 5level pixels get stored in 1 byte */ +#define INK_FLAG_3pixel6level_in_1byte 0x4 /* use special compression where 3 6level pixels get stored in 1 byte */ int numsizes; /* number of possible {bit,density} tuples */ const stp_dotsize_t *dot_sizes; /* pointer to an array of {bit,density} tuples */ } canon_ink_t; @@ -110,7 +112,6 @@ DECLARE_INK(2,4); /*under development*/ DECLARE_INK(4,4); -DECLARE_INK_EXTENDED(4,4,INK_FLAG_5pixel_in_1byte); static const stp_dotsize_t dotsizes_5l[] = { { 0x1, 0.45 }, @@ -121,7 +122,7 @@ static const stp_dotsize_t dotsizes_5l[] = { /*under development*/ DECLARE_INK(4,5); -DECLARE_INK_EXTENDED(4,5,INK_FLAG_5pixel_in_1byte); +DECLARE_INK_EXTENDED(4,5,INK_FLAG_3pixel5level_in_1byte); static const stp_dotsize_t dotsizes_6l[] = { { 0x1, 0.2 }, @@ -133,7 +134,7 @@ static const stp_dotsize_t dotsizes_6l[] = { /*under development*/ DECLARE_INK(4,6); -DECLARE_INK_EXTENDED(4,6,INK_FLAG_5pixel_in_1byte); +DECLARE_INK_EXTENDED(4,6,INK_FLAG_3pixel6level_in_1byte); static const stp_dotsize_t dotsizes_7l[] = { { 0x1, 0.45 }, @@ -1436,6 +1437,54 @@ static const canon_inkset_t canon_13_C3M3Y2K2k3photo_c_inkset[] = { {0,0.0,NULL}, }; +static const canon_inkset_t canon_13_C3M3Y2K3k3_c_inkset[] = { + {'C',1.0,&canon_2b_3l_c_ink}, + {'M',1.0,&canon_2b_3l_c_ink}, + {'Y',1.0,&canon_1b_2l_ink}, + {'K',1.0,&canon_2b_3l_c_ink}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {'k',0.0,&canon_2b_3l_c_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_C3M3Y2K3k3on_c_inkset[] = { + {'C',1.0,&canon_2b_3l_c_ink}, + {'M',1.0,&canon_2b_3l_c_ink}, + {'Y',1.0,&canon_1b_2l_ink}, + {'K',1.0,&canon_2b_3l_c_ink}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {'k',1.0,&canon_2b_3l_c_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_C3M3Y2K3k3photo_c_inkset[] = { + {'C',1.0,&canon_2b_3l_c_ink}, + {'M',1.0,&canon_2b_3l_c_ink}, + {'Y',1.0,&canon_1b_2l_ink}, + {'K',0.0,&canon_2b_3l_c_ink},/* switched off */ + {0,0.0,NULL}, + {0,0.0,NULL}, + {'k',1.0,&canon_2b_3l_c_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_C3M3Y3k3c3m3_inkset[] = { {'C',1.0,&canon_2b_3l_ink}, {'M',1.0,&canon_2b_3l_ink}, @@ -1484,11 +1533,11 @@ static const canon_inkset_t canon_13_C4M4Y4_inkset[] = { {0,0.0,NULL}, }; -static const canon_inkset_t canon_13_C4M4Y4K2_inkset[] = { +static const canon_inkset_t canon_13_C4M4Y3K3_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}, + {'Y',1.0,&canon_2b_3l_ink}, + {'K',1.0,&canon_2b_3l_ink}, {0,0.0,NULL}, {0,0.0,NULL}, {0,0.0,NULL}, @@ -1500,11 +1549,11 @@ static const canon_inkset_t canon_13_C4M4Y4K2_inkset[] = { {0,0.0,NULL}, }; -static const canon_inkset_t canon_13_C4M4Y3K3_inkset[] = { +static const canon_inkset_t canon_13_C4M4Y3K4_inkset[] = { {'C',1.0,&canon_2b_4l_ink}, {'M',1.0,&canon_2b_4l_ink}, {'Y',1.0,&canon_2b_3l_ink}, - {'K',1.0,&canon_2b_3l_ink}, + {'K',1.0,&canon_2b_4l_ink}, {0,0.0,NULL}, {0,0.0,NULL}, {0,0.0,NULL}, @@ -1516,17 +1565,49 @@ static const canon_inkset_t canon_13_C4M4Y3K3_inkset[] = { {0,0.0,NULL}, }; -static const canon_inkset_t canon_13_C4M4Y3K4_inkset[] = { +static const canon_inkset_t canon_13_C4M4Y4K2_inkset[] = { {'C',1.0,&canon_2b_4l_ink}, {'M',1.0,&canon_2b_4l_ink}, - {'Y',1.0,&canon_2b_3l_ink}, - {'K',1.0,&canon_2b_4l_ink}, + {'Y',1.0,&canon_2b_4l_ink}, + {'K',1.0,&canon_1b_2l_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}, +}; + +static const canon_inkset_t canon_13_C4M4Y4K3k4off_c_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_2b_3l_c_ink}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {'k',0.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_C4M4Y4K3k4_c_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_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}, @@ -1644,22 +1725,6 @@ static const canon_inkset_t canon_13_C4M4Y4c4m4y4_inkset[] = { {0,0.0,NULL}, }; -static const canon_inkset_t canon_13_C5M5Y4y4_inkset[] = { - {'C',1.0,&canon_4b_5l_ink}, - {'M',1.0,&canon_4b_5l_ink}, - {'Y',1.0,&canon_2b_4l_ink}, - {0,0.0,NULL}, - {0,0.0,NULL}, - {0,0.0,NULL}, - {'k',1.0,&canon_2b_4l_ink}, /* swap 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_C5M5Y4k4_inkset[] = { {'C',1.0,&canon_4b_5l_ink}, {'M',1.0,&canon_4b_5l_ink}, @@ -1708,22 +1773,6 @@ static const canon_inkset_t canon_13_C6M6Y2K2k4_inkset[] = { {0,0.0,NULL}, }; -static const canon_inkset_t canon_13_C6M6Y4y4_inkset[] = { - {'C',1.0,&canon_4b_6l_ink}, - {'M',1.0,&canon_4b_6l_ink}, - {'Y',1.0,&canon_2b_4l_ink}, - {0,0.0,NULL}, - {0,0.0,NULL}, - {0,0.0,NULL}, - {'k',1.0,&canon_2b_4l_ink}, /* set y to k for photo modes */ - {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_C6M6Y4k4_inkset[] = { {'C',1.0,&canon_4b_6l_ink}, {'M',1.0,&canon_4b_6l_ink}, @@ -1804,22 +1853,6 @@ static const canon_inkset_t canon_13_C6M6Y4k4yask_inkset[] = { {0,0.0,NULL}, }; -static const canon_inkset_t canon_13_C8M8Y4y4_inkset[] = { - {'C',1.0,&canon_4b_8l_ink}, - {'M',1.0,&canon_4b_8l_ink}, - {'Y',1.0,&canon_2b_4l_ink}, - {0,0.0,NULL}, - {0,0.0,NULL}, - {0,0.0,NULL}, - {'k',1.0,&canon_2b_4l_ink}, /* set y to k for photo modes */ - {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}, @@ -2869,7 +2902,6 @@ static const canon_inkset_t canon_22_C4M4Y4K2c4m4k4on_inkset[] = { /* fast */ /* MP990, MG6100, MG800 */ /* 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_C2M2K2m2_inkset[] = {*/ static const canon_inkset_t canon_30_K2C2M2Y2_inkset[] = { {'K',1.0,&canon_1b_2l_ink}, {'C',1.0,&canon_1b_2l_ink}, @@ -3010,6 +3042,146 @@ static const canon_inkset_t canon_30_K2C6M6Y4k4_inkset[] = { {0,0.0,NULL}, }; +/* standard */ +/* MG6500, MG7100 */ +static const canon_inkset_t canon_30_K3C3M3Y2k3off_c_inkset[] = { + {'K',1.0,&canon_2b_3l_c_ink}, + {'C',1.0,&canon_2b_3l_c_ink}, + {0,0.0,NULL}, + {'M',1.0,&canon_2b_3l_c_ink}, + {0,0.0,NULL}, + {'Y',1.0,&canon_1b_2l_ink}, + {0,0.0,NULL}, + {'k',0.0,&canon_2b_3l_c_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 for Duplex */ +/* MG6500, MG7100 */ +static const canon_inkset_t canon_30_K3C3M3Y2k3_c_inkset[] = { + {'K',1.0,&canon_2b_3l_c_ink}, + {'C',1.0,&canon_2b_3l_c_ink}, + {0,0.0,NULL}, + {'M',1.0,&canon_2b_3l_c_ink}, + {0,0.0,NULL}, + {'Y',1.0,&canon_1b_2l_ink}, + {0,0.0,NULL}, + {'k',1.0,&canon_2b_3l_c_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 Borderless */ +/* MG6500, MG7100 */ +static const canon_inkset_t canon_30_K3C3M3Y2k3photo_c_inkset[] = { + {'K',0.0,&canon_2b_3l_c_ink}, /* switched off */ + {'C',1.0,&canon_2b_3l_c_ink}, + {0,0.0,NULL}, + {'M',1.0,&canon_2b_3l_c_ink}, + {0,0.0,NULL}, + {'Y',1.0,&canon_1b_2l_ink}, + {0,0.0,NULL}, + {'k',1.0,&canon_2b_3l_c_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 */ +/* MG6500, MG7100 */ +static const canon_inkset_t canon_30_K3C6M6Y4k4off_c_inkset[] = { + {'K',1.0,&canon_2b_3l_c_ink}, + {'C',1.0,&canon_4b_6l_ink}, + {0,0.0,NULL}, + {'M',1.0,&canon_4b_6l_ink}, + {0,0.0,NULL}, + {'Y',1.0,&canon_2b_4l_ink}, + {0,0.0,NULL}, + {'k',0.0,&canon_2b_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}, +}; + /* CD photo */ /* 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_M5K5m4k4_inkset[] = {*/ @@ -3079,6 +3251,41 @@ static const canon_inkset_t canon_30_M6K6m4k4_inkset[] = { {0,0.0,NULL}, }; +/* photo standard */ +/* MG6500, MG7100 */ +static const canon_inkset_t canon_30_M6K6m4k4H6off_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_2b_4l_ink}, + {0,0.0,NULL}, + {'k',1.0,&canon_2b_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}, @@ -3112,5 +3319,40 @@ static const canon_inkset_t canon_30_M8K8m4k4_inkset[] = { {0,0.0,NULL}, }; +/* photo high */ +/* MG6500, MG7100 */ +static const canon_inkset_t canon_30_M8K8m4k4H8off_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_2b_4l_ink}, + {0,0.0,NULL}, + {'k',1.0,&canon_2b_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 7025510..95d6768 100644 --- a/src/main/canon-media-mode.h +++ b/src/main/canon-media-mode.h @@ -1,10662 +1,11755 @@ -/*
- * Print plug-in CANON BJL driver for the GIMP.
- *
- * Copyright 1997-2000 Michael Sweet (mike@easysw.com),
- * Robert Krawitz (rlk@alum.mit.edu) and
- * Andy Thaller (thaller@ph.tum.de)
- * Copyright (c) 2006 - 2007 Sascha Sommer (saschasommer@freenet.de)
- *
- * 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.
- */
-
-/* This file contains the usage matrix matching media with modes
-*/
-
-#ifndef GUTENPRINT_INTERNAL_CANON_MEDIA_MODE_H
-#define GUTENPRINT_INTERNAL_CANON_MEDIA_MODE_H
-
-/* create matrix of which media are used with which mode */
-
-typedef struct {
- const char *name; /* unstranslated media name */
- const char** mode_name_list; /* untranslated mode names */
- const unsigned int use_flags;
- /* flags to indicate support in the media */
-#define INKSET_BLACK_SUPPORT 0x1
-#define INKSET_COLOR_SUPPORT 0x2
- /*#define INKSET_BOTH_SUPPORT 0x4*/
-#define INKSET_PHOTO_SUPPORT 0x8
- /* duplex support for media --- this is currently not implemented: so duplex can be specified for all media types */
-#define DUPLEX_SUPPORT 0x10
- /* flags to indicate existence of special replacement modes to search for */
-#define INKSET_BLACK_MODEREPL 0x100
-#define INKSET_COLOR_MODEREPL 0x200
- /*#define INKSET_BOTH_MODEREPL 0x400*/
-#define INKSET_PHOTO_MODEREPL 0x800
-#define DUPLEX_MODEREPL 0x1000
-
-} canon_modeuse_t;
-
-typedef struct {
- const char *name;
- const short count;
- const canon_modeuse_t *modeuses;
-} canon_modeuselist_t;
-
-#define DECLARE_MODEUSES(name) \
- static const canon_modeuselist_t name##_modeuselist = { \
- #name, \
- sizeof(name##_modeuses) / sizeof(canon_modeuse_t), \
- name##_modeuses \
-}
-
-/* Ordering of data:
- BJC
- DS
- mini
- S
- i --- *i is Japanese model, with Hagaki/inkjetHagaki support.
- i* is US model without such support. Not sure about European models.
- iP
- iX
- MP
- MX
- MG
- Pro
-*/
-
-/* ----------------------------------- Canon BJC 30 ----------------------------------- */
-/* TODO: mode-media correlation */
-static const char* canon_BJC_30_modeuses_plain[] = {
- "720x360dpi",
- "360x360dpi",
- "180x180dpi",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_30_modeuses[] = {
- { "Plain", canon_BJC_30_modeuses_plain, 0 },
- { "Transparency", canon_BJC_30_modeuses_plain, 0 },
- { "BackPrint", canon_BJC_30_modeuses_plain, 0 },
- { "Fabric", canon_BJC_30_modeuses_plain, 0 },
- { "Envelope", canon_BJC_30_modeuses_plain, 0 },
- { "Coated", canon_BJC_30_modeuses_plain, 0 },
- { "TShirt", canon_BJC_30_modeuses_plain, 0 },
- { "GlossyFilm", canon_BJC_30_modeuses_plain, 0 },
- { "GlossyPaper", canon_BJC_30_modeuses_plain, 0 },
- { "GlossyCard", canon_BJC_30_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_30_modeuses_plain, 0 },
- { "Other", canon_BJC_30_modeuses_plain, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_30);
-
-/* ----------------------------------- Canon BJC 85 ----------------------------------- */
-/* TODO: mode-media correlation */
-static const char* canon_BJC_85_modeuses_plain[] = {
- "720x360dpi",
- "360x360dmt",
- "360x360dpi",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_85_modeuses[] = {
- { "Plain", canon_BJC_85_modeuses_plain, 0 },
- { "Transparency", canon_BJC_85_modeuses_plain, 0 },
- { "BackPrint", canon_BJC_85_modeuses_plain, 0 },
- { "Fabric", canon_BJC_85_modeuses_plain, 0 },
- { "Envelope", canon_BJC_85_modeuses_plain, 0 },
- { "Coated", canon_BJC_85_modeuses_plain, 0 },
- { "TShirt", canon_BJC_85_modeuses_plain, 0 },
- { "GlossyFilm", canon_BJC_85_modeuses_plain, 0 },
- { "GlossyPaper", canon_BJC_85_modeuses_plain, 0 },
- { "GlossyCard", canon_BJC_85_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_85_modeuses_plain, 0 },
- { "Other", canon_BJC_85_modeuses_plain, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_85);
-
-/* ----------------------------------- Canon BJC 210 ----------------------------------- */
-/* TODO: mode-media correlation */
-static const char* canon_BJC_210_modeuses_plain[] = {
- "720x360dpi",
- "360x360dpi",
- "180x180dpi",
- "90x90dpi",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_210_modeuses[] = {
- { "Plain", canon_BJC_210_modeuses_plain, 0 },
- { "Transparency", canon_BJC_210_modeuses_plain, 0 },
- { "BackPrint", canon_BJC_210_modeuses_plain, 0 },
- { "Fabric", canon_BJC_210_modeuses_plain, 0 },
- { "Envelope", canon_BJC_210_modeuses_plain, 0 },
- { "Coated", canon_BJC_210_modeuses_plain, 0 },
- { "TShirt", canon_BJC_210_modeuses_plain, 0 },
- { "GlossyFilm", canon_BJC_210_modeuses_plain, 0 },
- { "GlossyPaper", canon_BJC_210_modeuses_plain, 0 },
- { "GlossyCard", canon_BJC_210_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_210_modeuses_plain, 0 },
- { "Other", canon_BJC_210_modeuses_plain, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_210);
-
-/* ----------------------------------- Canon BJC 240 ----------------------------------- */
-/* TODO: mode-media correlation */
-static const char* canon_BJC_240_modeuses_plain[] = {
- "720x360dpi",
- "360x360dmt",
- "360x360dpi",
- "180x180dpi",
- "90x90dpi",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_240_modeuses[] = {
- { "Plain", canon_BJC_240_modeuses_plain, 0 },
- { "Transparency", canon_BJC_240_modeuses_plain, 0 },
- { "BackPrint", canon_BJC_240_modeuses_plain, 0 },
- { "Fabric", canon_BJC_240_modeuses_plain, 0 },
- { "Envelope", canon_BJC_240_modeuses_plain, 0 },
- { "Coated", canon_BJC_240_modeuses_plain, 0 },
- { "TShirt", canon_BJC_240_modeuses_plain, 0 },
- { "GlossyFilm", canon_BJC_240_modeuses_plain, 0 },
- { "GlossyPaper", canon_BJC_240_modeuses_plain, 0 },
- { "GlossyCard", canon_BJC_240_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_240_modeuses_plain, 0 },
- { "Other", canon_BJC_240_modeuses_plain, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_240);
-
-/* ----------------------------------- Canon BJC 2000 ----------------------------------- */
-/* TODO: mode-media correlation */
-static const char* canon_BJC_2000_modeuses_plain[] = {
- "360x360dpi",
- "180x180dpi",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_2000_modeuses[] = {
- { "Plain", canon_BJC_2000_modeuses_plain, 0 },
- { "Transparency", canon_BJC_2000_modeuses_plain, 0 },
- { "BackPrint", canon_BJC_2000_modeuses_plain, 0 },
- { "Fabric", canon_BJC_2000_modeuses_plain, 0 },
- { "Envelope", canon_BJC_2000_modeuses_plain, 0 },
- { "Coated", canon_BJC_2000_modeuses_plain, 0 },
- { "TShirt", canon_BJC_2000_modeuses_plain, 0 },
- { "GlossyFilm", canon_BJC_2000_modeuses_plain, 0 },
- { "GlossyPaper", canon_BJC_2000_modeuses_plain, 0 },
- { "GlossyCard", canon_BJC_2000_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_2000_modeuses_plain, 0 },
- { "Other", canon_BJC_2000_modeuses_plain, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_2000);
-
-/* ----------------------------------- Canon BJC 3000 ----------------------------------- */
-
-static const char* canon_BJC_3000_modeuses_plain[] = {
- "1440x720dpi",/*untested*/
- "720x720dpi",
- "360x360dpi",
- "360x360dmt",
- "360x360dpi_draft",
- "180x180dpi",
- /* Photo */
- "360x360dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_3000_modeuses_PPgloss[] = {
- "1440x720dpi",
- "720x720dpi",
- "360x360dpi",
- "360x360dmt",
- /* Photo */
- "360x360dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_3000_modeuses_coated[] = {
- "1440x720dpi",
- "720x720dpi",
- "360x360dpi",
- "360x360dmt",
- "360x360dpi_draft",
- /* Photo */
- "360x360dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_3000_modeuses_glossFilm[] = {
- "720x720dpi",
- "360x360dpi",
- "360x360dmt",
- NULL
-};
-
-static const char* canon_BJC_3000_modeuses_Tshirt[] = {
- "360x360dpi",
- "360x360dmt",
- NULL
-};
-
-static const char* canon_BJC_3000_modeuses_Transparency[] = {
- "360x360dpi",
- "360x360dmt",
- "360x360dpi_draft",
- NULL
-};
-
-static const char* canon_BJC_3000_modeuses_Envelope[] = {
- "720x720dpi",
- "360x360dpi",
- "360x360dmt",
- "360x360dpi_draft",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_3000_modeuses[] = {
- { "Plain", canon_BJC_3000_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },
- { "Transparency", canon_BJC_3000_modeuses_Transparency, INKSET_BLACK_SUPPORT },
- { "BackPrint", canon_BJC_3000_modeuses_Tshirt, 0 },
- { "Fabric", canon_BJC_3000_modeuses_Tshirt, 0 },/*untested*/
- { "Envelope", canon_BJC_3000_modeuses_Envelope, INKSET_BLACK_SUPPORT },
- { "Coated", canon_BJC_3000_modeuses_coated, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },
- { "TShirt", canon_BJC_3000_modeuses_Tshirt, 0 },
- { "GlossyFilm", canon_BJC_3000_modeuses_glossFilm, 0 },
- { "GlossyPaper", canon_BJC_3000_modeuses_PPgloss, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },
- { "GlossyCard", canon_BJC_3000_modeuses_PPgloss, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },
- { "GlossyPro", canon_BJC_3000_modeuses_PPgloss, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },/*untested*/
- { "Other", canon_BJC_3000_modeuses_PPgloss, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_3000);
-
-/* ----------------------------------- Canon BJC 4300 ----------------------------------- */
-
-static const char* canon_BJC_4300_modeuses_plain[] = {
- "360x360dpi_high",
- "360x360dpi",
- "360x360dmt",
- "720x360dpi",
- "360x360dpi_draft",
- "180x180dpi",
- /* Photo */
- "360x360dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_4300_modeuses_PPgloss[] = {
- "360x360dpi_high",
- "360x360dpi",
- "360x360dmt",
- "720x360dpi",/*mono*/
- /* Photo */
- "360x360dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_4300_modeuses_coated[] = {
- "360x360dpi_high",
- "360x360dpi",
- "360x360dmt",
- "720x360dpi",
- "360x360dpi_draft",
- /* Photo */
- "360x360dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_4300_modeuses_glossFilm[] = {
- "360x360dpi_high",
- "360x360dpi",
- "360x360dmt",
- "720x360dpi",/*mono*/
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_4300_modeuses[] = {
- { "Plain", canon_BJC_4300_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },
- { "Transparency", canon_BJC_4300_modeuses_glossFilm, INKSET_BLACK_SUPPORT },
- { "BackPrint", canon_BJC_4300_modeuses_glossFilm, INKSET_BLACK_SUPPORT },
- { "Fabric", canon_BJC_4300_modeuses_glossFilm, INKSET_BLACK_SUPPORT },
- { "Envelope", canon_BJC_4300_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },
- { "Coated", canon_BJC_4300_modeuses_coated, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },
- { "TShirt", canon_BJC_4300_modeuses_glossFilm, INKSET_BLACK_SUPPORT },
- { "GlossyFilm", canon_BJC_4300_modeuses_glossFilm, INKSET_BLACK_SUPPORT },
- { "GlossyPaper", canon_BJC_4300_modeuses_PPgloss, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },
- { "GlossyCard", canon_BJC_4300_modeuses_PPgloss, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },
- { "GlossyPro", canon_BJC_4300_modeuses_PPgloss, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },/*untested*/
- { "Other", canon_BJC_4300_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },
-};
-
-DECLARE_MODEUSES(canon_BJC_4300);
-
-/* ----------------------------------- Canon BJC 4400 ----------------------------------- */
-/* TODO: mode-media correlation */
-static const char* canon_BJC_4400_modeuses_plain[] = {
- "720x360dpi",
- "360x360dpi",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_4400_modeuses[] = {
- { "Plain", canon_BJC_4400_modeuses_plain, 0 },
- { "Transparency", canon_BJC_4400_modeuses_plain, 0 },
- { "BackPrint", canon_BJC_4400_modeuses_plain, 0 },
- { "Fabric", canon_BJC_4400_modeuses_plain, 0 },
- { "Envelope", canon_BJC_4400_modeuses_plain, 0 },
- { "Coated", canon_BJC_4400_modeuses_plain, 0 },
- { "TShirt", canon_BJC_4400_modeuses_plain, 0 },
- { "GlossyFilm", canon_BJC_4400_modeuses_plain, 0 },
- { "GlossyPaper", canon_BJC_4400_modeuses_plain, 0 },
- { "GlossyCard", canon_BJC_4400_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_4400_modeuses_plain, 0 },
- { "Other", canon_BJC_4400_modeuses_plain, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_4400);
-
-/* ----------------------------------- Canon BJC 4550 ----------------------------------- */
-
-static const char* canon_BJC_4550_modeuses_plain[] = {
- "720x360dpi_high",
- "360x360dpi_high",
- "720x360dpi",
- "360x360dpi",
- "180x180dpi",
- /* Photo */
- "360x360dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_4550_modeuses_glossFilm[] = {
- "720x360dpi_high",
- "360x360dpi_high",
- "360x360dpi",/*untested*/
- "180x180dpi",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_4550_modeuses[] = {
- { "Plain", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },
- { "Transparency", canon_BJC_4550_modeuses_glossFilm, INKSET_BLACK_SUPPORT },
- { "BackPrint", canon_BJC_4550_modeuses_glossFilm, INKSET_BLACK_SUPPORT },
- { "Fabric", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT },
- { "Envelope", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },
- { "Coated", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },
- { "TShirt", canon_BJC_4550_modeuses_glossFilm, INKSET_BLACK_SUPPORT },
- { "GlossyFilm", canon_BJC_4550_modeuses_glossFilm, INKSET_BLACK_SUPPORT },
- { "GlossyPaper", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },
- { "GlossyCard", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },/*untested*/
- { "GlossyPro", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },/*untested*/
- { "Other", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },
-};
-
-DECLARE_MODEUSES(canon_BJC_4550);
-
-/* ----------------------------------- Canon BJC 5500 ----------------------------------- */
-/* TODO: mode-media correlation */
-static const char* canon_BJC_5500_modeuses_plain[] = {
- "360x360dpi",
- "180x180dpi",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_5500_modeuses[] = {
- { "Plain", canon_BJC_5500_modeuses_plain, 0 },
- { "Transparency", canon_BJC_5500_modeuses_plain, 0 },
- { "BackPrint", canon_BJC_5500_modeuses_plain, 0 },
- { "Fabric", canon_BJC_5500_modeuses_plain, 0 },
- { "Envelope", canon_BJC_5500_modeuses_plain, 0 },
- { "Coated", canon_BJC_5500_modeuses_plain, 0 },
- { "TShirt", canon_BJC_5500_modeuses_plain, 0 },
- { "GlossyFilm", canon_BJC_5500_modeuses_plain, 0 },
- { "GlossyPaper", canon_BJC_5500_modeuses_plain, 0 },
- { "GlossyCard", canon_BJC_5500_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_5500_modeuses_plain, 0 },
- { "Other", canon_BJC_5500_modeuses_plain, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_5500);
-
-/* ----------------------------------- Canon BJC 6000 ----------------------------------- */
-/* TODO: mode-media correlation */
-static const char* canon_BJC_6000_modeuses_plain[] = {
- "1440x720dpi",
- "720x720dpi",
- "360x360dmt",
- "360x360dpi",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_6000_modeuses[] = {
- { "Plain", canon_BJC_6000_modeuses_plain, 0 },
- { "Transparency", canon_BJC_6000_modeuses_plain, 0 },
- { "BackPrint", canon_BJC_6000_modeuses_plain, 0 },
- { "Fabric", canon_BJC_6000_modeuses_plain, 0 },
- { "Envelope", canon_BJC_6000_modeuses_plain, 0 },
- { "Coated", canon_BJC_6000_modeuses_plain, 0 },
- { "TShirt", canon_BJC_6000_modeuses_plain, 0 },
- { "GlossyFilm", canon_BJC_6000_modeuses_plain, 0 },
- { "GlossyPaper", canon_BJC_6000_modeuses_plain, 0 },
- { "GlossyCard", canon_BJC_6000_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_6000_modeuses_plain, 0 },
- { "Other", canon_BJC_6000_modeuses_plain, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_6000);
-
-/* ----------------------------------- Canon BJC 7000 ----------------------------------- */
-/* TODO: mode-media correlation */
-static const char* canon_BJC_7000_modeuses_plain[] = {
- "1200x1200dpi",
- "600x600dpi",
- "300x300dpi",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_7000_modeuses[] = {
- { "Plain", canon_BJC_7000_modeuses_plain, 0 },
- { "Transparency", canon_BJC_7000_modeuses_plain, 0 },
- { "BackPrint", canon_BJC_7000_modeuses_plain, 0 },
- { "Fabric", canon_BJC_7000_modeuses_plain, 0 },
- { "Envelope", canon_BJC_7000_modeuses_plain, 0 },
- { "Coated", canon_BJC_7000_modeuses_plain, 0 },
- { "TShirt", canon_BJC_7000_modeuses_plain, 0 },
- { "GlossyFilm", canon_BJC_7000_modeuses_plain, 0 },
- { "GlossyPaper", canon_BJC_7000_modeuses_plain, 0 },
- { "GlossyCard", canon_BJC_7000_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_7000_modeuses_plain, 0 },
- { "Other", canon_BJC_7000_modeuses_plain, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_7000);
-
-/* ----------------------------------- Canon BJC 7100 ----------------------------------- */
-/* TODO: mode-media correlation */
-static const char* canon_BJC_7100_modeuses_plain[] = {
- "1200x1200dpi",
- "600x600dpi",
- "300x300dpi",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_7100_modeuses[] = {
- { "Plain", canon_BJC_7100_modeuses_plain, 0 },
- { "Transparency", canon_BJC_7100_modeuses_plain, 0 },
- { "BackPrint", canon_BJC_7100_modeuses_plain, 0 },
- { "Fabric", canon_BJC_7100_modeuses_plain, 0 },
- { "Envelope", canon_BJC_7100_modeuses_plain, 0 },
- { "Coated", canon_BJC_7100_modeuses_plain, 0 },
- { "TShirt", canon_BJC_7100_modeuses_plain, 0 },
- { "GlossyFilm", canon_BJC_7100_modeuses_plain, 0 },
- { "GlossyPaper", canon_BJC_7100_modeuses_plain, 0 },
- { "GlossyCard", canon_BJC_7100_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_7100_modeuses_plain, 0 },
- { "Other", canon_BJC_7100_modeuses_plain, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_7100);
-
-/* ----------------------------------- Canon BJC 8200 ----------------------------------- */
-/* TODO: mode-media correlation */
-static const char* canon_BJC_8200_modeuses_plain[] = {
- "1200x1200dpi",
- "600x600dpi",
- "300x300dpi",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_8200_modeuses[] = {
- { "Plain", canon_BJC_8200_modeuses_plain, 0 },
- { "Transparency", canon_BJC_8200_modeuses_plain, 0 },
- { "BackPrint", canon_BJC_8200_modeuses_plain, 0 },
- { "Fabric", canon_BJC_8200_modeuses_plain, 0 },
- { "Envelope", canon_BJC_8200_modeuses_plain, 0 },
- { "Coated", canon_BJC_8200_modeuses_plain, 0 },
- { "TShirt", canon_BJC_8200_modeuses_plain, 0 },
- { "GlossyFilm", canon_BJC_8200_modeuses_plain, 0 },
- { "GlossyPaper", canon_BJC_8200_modeuses_plain, 0 },
- { "GlossyCard", canon_BJC_8200_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_8200_modeuses_plain, 0 },
- { "Other", canon_BJC_8200_modeuses_plain, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_8200);
-
-/* ----------------------------------- Canon BJC 8500 ----------------------------------- */
-/* TODO: mode-media correlation */
-static const char* canon_BJC_8500_modeuses_plain[] = {
- "600x600dpi",
- "300x300dpi",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_8500_modeuses[] = {
- { "Plain", canon_BJC_8500_modeuses_plain, 0 },
- { "Transparency", canon_BJC_8500_modeuses_plain, 0 },
- { "BackPrint", canon_BJC_8500_modeuses_plain, 0 },
- { "Fabric", canon_BJC_8500_modeuses_plain, 0 },
- { "Envelope", canon_BJC_8500_modeuses_plain, 0 },
- { "Coated", canon_BJC_8500_modeuses_plain, 0 },
- { "TShirt", canon_BJC_8500_modeuses_plain, 0 },
- { "GlossyFilm", canon_BJC_8500_modeuses_plain, 0 },
- { "GlossyPaper", canon_BJC_8500_modeuses_plain, 0 },
- { "GlossyCard", canon_BJC_8500_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_8500_modeuses_plain, 0 },
- { "Other", canon_BJC_8500_modeuses_plain, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_8500);
-
-/* ----------------------------------- Canon DS700 ----------------------------------- */
-static const char* canon_SELPHY_DS700_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_SELPHY_DS700_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_SELPHY_DS700_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_SELPHY_DS700_modeuses_PPgloss[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_SELPHY_DS700_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_SELPHY_DS700_modeuses_Hagaki[] = {
- "600x600dpi_photo3",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const canon_modeuse_t canon_SELPHY_DS700_modeuses[] = {
- { "GlossyPro", canon_SELPHY_DS700_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_SELPHY_DS700_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_SELPHY_DS700_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_SELPHY_DS700_modeuses_PPgloss, 0 },
- { "InkJetHagaki", canon_SELPHY_DS700_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_SELPHY_DS700_modeuses_Hagaki, 0 },
-};
-
-DECLARE_MODEUSES(canon_SELPHY_DS700);
-
-/* ----------------------------------- Canon DS810 ----------------------------------- */
-static const char* canon_SELPHY_DS810_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_SELPHY_DS810_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_SELPHY_DS810_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_SELPHY_DS810_modeuses_PPgloss[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_SELPHY_DS810_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_SELPHY_DS810_modeuses_Hagaki[] = {
- "600x600dpi_photo3",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const canon_modeuse_t canon_SELPHY_DS810_modeuses[] = {
- { "GlossyPro", canon_SELPHY_DS810_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_SELPHY_DS810_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_SELPHY_DS810_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_SELPHY_DS810_modeuses_PPgloss, 0 },
- { "InkJetHagaki", canon_SELPHY_DS810_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_SELPHY_DS810_modeuses_Hagaki, 0 },
-};
-
-DECLARE_MODEUSES(canon_SELPHY_DS810);
-
-/* ----------------------------------- Canon mini220 ----------------------------------- */
-static const char* canon_PIXMA_mini220_modeuses_PPpro[] = {
- "1200x1200dpi_photohigh",
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_mini220_modeuses_PPplus[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_mini220_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_mini220_modeuses_PPgloss[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_mini220_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_mini220_modeuses_Hagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo2",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_mini220_modeuses[] = {
- { "GlossyPro", canon_PIXMA_mini220_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_mini220_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_PIXMA_mini220_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_mini220_modeuses_PPgloss, 0 },
- { "InkJetHagaki", canon_PIXMA_mini220_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_mini220_modeuses_Hagaki, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_mini220);
-
-/* ----------------------------------- Canon mini320 ----------------------------------- */
-/*most nodes not supported*/
-static const char* canon_PIXMA_mini320_modeuses_PPpro[] = {
- "1200x1200dpi_photohigh",
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-/*most nodes not supported*/
-static const char* canon_PIXMA_mini320_modeuses_PPplus[] = {
- "600x600dpi_photo",
- NULL
-};
-
-/*unsupported*/
-static const char* canon_PIXMA_mini320_modeuses_PPmatte[] = {
- "600x600dpi_photo",/*stand-in*/
- NULL
-};
-
-/*most nodes not supported*/
-static const char* canon_PIXMA_mini320_modeuses_PPgloss[] = {
- "600x600dpi_photo",
- NULL
-};
-
-/*unsupported*/
-static const char* canon_PIXMA_mini320_modeuses_inkjetHagaki[] = {
- "600x600dpi_photo",/*stand-in*/
- NULL
-};
-
-/*unsupported*/
-static const char* canon_PIXMA_mini320_modeuses_Hagaki[] = {
- "600x600dpi_photo",/*stand-in*/
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_mini320_modeuses[] = {
- { "GlossyPro", canon_PIXMA_mini320_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_mini320_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_mini320_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_PIXMA_mini320_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_mini320_modeuses_PPgloss, 0 },
- { "PhotoPlusGloss2", canon_PIXMA_mini320_modeuses_PPplus, 0 },
- { "InkJetHagaki", canon_PIXMA_mini320_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_mini320_modeuses_Hagaki, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_mini320);
-
-/* ----------------------------------- Canon S200 ----------------------------------- */
-/* TODO: mode-media correlation */
-static const char* canon_BJC_S200_modeuses_plain[] = {
- "1440x1440dpi",
- "1440x720dpi",
- "720x720dpi",
- "360x360dpi",
- NULL
- };
-
-static const canon_modeuse_t canon_BJC_S200_modeuses[] = {
- { "Plain", canon_BJC_S200_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_S200_modeuses_plain, 0 },
- { "PhotopaperPlus", canon_BJC_S200_modeuses_plain, 0 },/*untested*/
- { "PhotopaperPlusDouble",canon_BJC_S200_modeuses_plain, 0 },/*untested*/
- { "PhotopaperMatte", canon_BJC_S200_modeuses_plain, 0 },/*untested*/
- { "GlossyPaper", canon_BJC_S200_modeuses_plain, 0 },
- { "Coated", canon_BJC_S200_modeuses_plain, 0 },
- { "InkJetHagaki", canon_BJC_S200_modeuses_plain, 0 },/*untested*/
- { "Hagaki", canon_BJC_S200_modeuses_plain, 0 },/*untested*/
- { "GlossyFilm", canon_BJC_S200_modeuses_plain, 0 },
- { "TShirt", canon_BJC_S200_modeuses_plain, 0 },
- { "Transparency", canon_BJC_S200_modeuses_plain, 0 },
- { "Envelope", canon_BJC_S200_modeuses_plain, 0 },
- { "PhotopaperOther", canon_BJC_S200_modeuses_plain, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_S200);
-
-/* ----------------------------------- Canon BJC S300 ----------------------------------- */
-static const char* canon_BJC_S300_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_std2",
- "600x600dpi",/*untested*/
- "300x300dpi",
- NULL
- };
-
-static const char* canon_BJC_S300_modeuses_PPpro[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_S300_modeuses_PPgloss[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_S300_modeuses_coated[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_S300_modeuses_Envelope[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",
- NULL
-};
-
-static const char* canon_BJC_S300_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_S300_modeuses_Transparency[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_S300_modeuses[] = {
- { "Plain", canon_BJC_S300_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_S300_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_S300_modeuses_PPgloss, 0 },/*untested*/
- { "PhotopaperPlusDouble", canon_BJC_S300_modeuses_PPgloss, 0 },/*untested*/
- { "PhotopaperMatte", canon_BJC_S300_modeuses_PPgloss, 0 },/*untested*/
- { "GlossyPaper", canon_BJC_S300_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_S300_modeuses_coated, 0 },
- { "InkJetHagaki", canon_BJC_S300_modeuses_PPgloss, 0 },/*untested*/
- { "Hagaki", canon_BJC_S300_modeuses_Envelope, 0 },/*untested*/
- { "GlossyFilm", canon_BJC_S300_modeuses_coated, 0 },
- { "GlossyCard", canon_BJC_S300_modeuses_PPgloss, 0 },
- { "Transparency", canon_BJC_S300_modeuses_Transparency, 0 },
- { "TShirt", canon_BJC_S300_modeuses_TShirt, 0 },
- { "Envelope", canon_BJC_S300_modeuses_Envelope, 0 },
- { "PhotopaperOther", canon_BJC_S300_modeuses_PPgloss, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_S300);
-
-/* ----------------------------------- Canon BJC S330 ----------------------------------- */
-static const char* canon_BJC_S330_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_std2",
- "600x600dpi",/*untested*/
- "300x300dpi",
- NULL
- };
-
-static const char* canon_BJC_S330_modeuses_PPpro[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_S330_modeuses_PPmatte[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_S330_modeuses_PPgloss[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_S330_modeuses_Envelope[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",
- NULL
-};
-
-static const char* canon_BJC_S330_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_S330_modeuses_Transparency[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_S330_modeuses[] = {
- { "Plain", canon_BJC_S330_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_S330_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_S330_modeuses_PPpro, 0 },
- { "PhotopaperPlusDouble", canon_BJC_S330_modeuses_PPpro, 0 },/*untested*/
- { "PhotopaperMatte", canon_BJC_S330_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_BJC_S330_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_S330_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_BJC_S330_modeuses_PPpro, 0 },/*untested*/
- { "Hagaki", canon_BJC_S330_modeuses_Envelope, 0 },/*untested*/
- { "GlossyFilm", canon_BJC_S330_modeuses_PPmatte, 0 },
- { "Transparency", canon_BJC_S330_modeuses_Transparency, 0 },
- { "TShirt", canon_BJC_S330_modeuses_TShirt, 0 },
- { "Envelope", canon_BJC_S330_modeuses_Envelope, 0 },
- { "PhotopaperOther", canon_BJC_S330_modeuses_PPpro, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_S330);
-
-/* ----------------------------------- Canon BJC S500 ----------------------------------- */
-static const char* canon_BJC_S500_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",
- "300x300dpi",/*untested*/
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_BJC_S500_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_S500_modeuses_coated[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_BJC_S500_modeuses_PPgloss[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_S500_modeuses_Envelope[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_BJC_S500_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_S500_modeuses_Transparency[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_S500_modeuses[] = {
- { "Plain", canon_BJC_S500_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_S500_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_S500_modeuses_PPpro, 0 },/*untested*/
- { "PhotopaperPlusDouble", canon_BJC_S500_modeuses_PPpro, 0 },/*untested*/
- { "PhotopaperMatte", canon_BJC_S500_modeuses_coated, 0 },/*untested*/
- { "GlossyPaper", canon_BJC_S500_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_S500_modeuses_coated, 0 },
- { "InkJetHagaki", canon_BJC_S500_modeuses_PPpro, 0 },/*untested*/
- { "Hagaki", canon_BJC_S500_modeuses_Envelope, 0 },/*untested*/
- { "GlossyFilm", canon_BJC_S500_modeuses_PPpro, 0 },
- { "GlossyCard", canon_BJC_S500_modeuses_PPgloss, 0 },
- { "Transparency", canon_BJC_S500_modeuses_Transparency, 0 },
- { "TShirt", canon_BJC_S500_modeuses_TShirt, 0 },
- { "Envelope", canon_BJC_S500_modeuses_Envelope, 0 },
- { "PhotopaperOther", canon_BJC_S500_modeuses_PPpro, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_S500);
-
-/* ----------------------------------- Canon BJC S520 ----------------------------------- */
-static const char* canon_BJC_S520_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_highmono",/* mono */
- "600x600dpi",/*untested*/
- "600x600dpi_draft",
- "300x300dpi",/*untested*/
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_BJC_S520_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_S520_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_S520_modeuses_PPgloss[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_S520_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_BJC_S520_modeuses_Envelope[] = {
- "600x600dpi_high3",
- "600x600dpi_highmono3",/* mono */
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_BJC_S520_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_S520_modeuses_Transparency[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_S520_modeuses[] = {
- { "Plain", canon_BJC_S520_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_S520_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_S520_modeuses_PPpro, 0 },
- { "PhotopaperPlusDouble", canon_BJC_S520_modeuses_PPpro, 0 },/*untested*/
- { "PhotopaperMatte", canon_BJC_S520_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_BJC_S520_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_S520_modeuses_coated, 0 },
- { "InkJetHagaki", canon_BJC_S520_modeuses_PPpro, 0 },/*untested*/
- { "Hagaki", canon_BJC_S520_modeuses_Envelope, 0 },/*untested*/
- { "GlossyFilm", canon_BJC_S520_modeuses_PPpro, 0 },
- { "Transparency", canon_BJC_S520_modeuses_Transparency, 0 },
- { "TShirt", canon_BJC_S520_modeuses_TShirt, 0 },
- { "Envelope", canon_BJC_S520_modeuses_Envelope, 0 },
- { "PhotopaperOther", canon_BJC_S520_modeuses_PPpro, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_S520);
-
-/* ----------------------------------- Canon BJC S600 ----------------------------------- */
-static const char* canon_BJC_S600_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_BJC_S600_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_S600_modeuses_coated[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_BJC_S600_modeuses_PPgloss[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_S600_modeuses_inkjetHagaki[] = {
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_BJC_S600_modeuses_Envelope[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_BJC_S600_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_S600_modeuses_Transparency[] = {
- "600x600dpi_photohigh5",
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_S600_modeuses[] = {
- { "Plain", canon_BJC_S600_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_S600_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_S600_modeuses_PPpro, 0 },/*untested*/
- { "PhotopaperPlusDouble", canon_BJC_S600_modeuses_PPpro, 0 },/*untested*/
- { "PhotopaperMatte", canon_BJC_S600_modeuses_PPgloss, 0 },/*untested*/
- { "GlossyPaper", canon_BJC_S600_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_S600_modeuses_coated, 0 },
- { "InkJetHagaki", canon_BJC_S600_modeuses_inkjetHagaki, 0 },/*untested*/
- { "Hagaki", canon_BJC_S600_modeuses_Envelope, 0 },/*untested*/
- { "GlossyFilm", canon_BJC_S600_modeuses_PPpro, 0 },
- { "GlossyCard", canon_BJC_S600_modeuses_PPgloss, 0 },
- { "Transparency", canon_BJC_S600_modeuses_Transparency, 0 },
- { "TShirt", canon_BJC_S600_modeuses_TShirt, 0 },
- { "Envelope", canon_BJC_S600_modeuses_Envelope, 0 },
- { "PhotopaperOther", canon_BJC_S600_modeuses_PPpro, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_S600);
-
-/* ----------------------------------- Canon BJC S750 ----------------------------------- */
-static const char* canon_BJC_S750_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",
- "300x300dpi",/*untested*/
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_BJC_S750_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_S750_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_S750_modeuses_PPgloss[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_S750_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_BJC_S750_modeuses_Envelope[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_BJC_S750_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_S750_modeuses_Transparency[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_S750_modeuses[] = {
- { "Plain", canon_BJC_S750_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_S750_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_S750_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_BJC_S750_modeuses_PPplus, 0 },/*untested*/
- { "PhotopaperMatte", canon_BJC_S750_modeuses_PPplus, 0 },
- { "GlossyPaper", canon_BJC_S750_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_S750_modeuses_coated, 0 },
- { "InkJetHagaki", canon_BJC_S750_modeuses_PPplus, 0 },/*untested*/
- { "Hagaki", canon_BJC_S750_modeuses_Envelope, 0 },/*untested*/
- { "GlossyFilm", canon_BJC_S750_modeuses_PPpro, 0 },
- { "Transparency", canon_BJC_S750_modeuses_Transparency, 0 },
- { "TShirt", canon_BJC_S750_modeuses_TShirt, 0 },
- { "Envelope", canon_BJC_S750_modeuses_Envelope, 0 },
- { "PhotopaperOther", canon_BJC_S750_modeuses_PPpro, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_S750);
-
-/* ----------------------------------- Canon BJC S800 ----------------------------------- */
-static const char* canon_BJC_S800_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",
- /* Mono */
- "600x600dpi_highmono2",
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",
- NULL
- };
-
-static const char* canon_BJC_S800_modeuses_PPpro[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photohigh",
- NULL
-};
-
-static const char* canon_BJC_S800_modeuses_PPplus[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",/*untested*/
- NULL
-};
-
-static const char* canon_BJC_S800_modeuses_PPgloss[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_S800_modeuses_glossFilm[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",/*untested*/
- NULL
-};
-
-static const char* canon_BJC_S800_modeuses_PPother[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- /* Mono */
- "600x600dpi_photomonohigh2",
- "600x600dpi_photomonohigh",
- "600x600dpi_photomono",
- "600x600dpi_photomonodraft",
- NULL
-};
-
-static const char* canon_BJC_S800_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_S800_modeuses_Transparency[] = {
- "600x600dpi_std2",
- "600x600dpi_draft2",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_S800_modeuses[] = {
- { "Plain", canon_BJC_S800_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_S800_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_S800_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_BJC_S800_modeuses_PPplus, 0 },/*untested*/
- { "PhotopaperMatte", canon_BJC_S800_modeuses_PPgloss, 0 },
- { "GlossyPaper", canon_BJC_S800_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_S800_modeuses_PPgloss, 0 },
- { "InkJetHagaki", canon_BJC_S800_modeuses_PPgloss, 0 },/*untested*/
- { "Hagaki", canon_BJC_S800_modeuses_plain, 0 },/*untested*/
- { "GlossyFilm", canon_BJC_S800_modeuses_glossFilm, 0 },
- { "GlossyCard", canon_BJC_S800_modeuses_PPgloss, 0 },
- { "Transparency", canon_BJC_S800_modeuses_Transparency, 0 },
- { "TShirt", canon_BJC_S800_modeuses_TShirt, 0 },
- { "Envelope", canon_BJC_S800_modeuses_plain, 0 },
- { "PhotopaperOther", canon_BJC_S800_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_S800);
-
-/* ----------------------------------- Canon BJC S820 ----------------------------------- */
-static const char* canon_BJC_S820_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high",/*untested*/
- "600x600dpi",
- "600x600dpi_draft",
- /* Mono */
- "600x600dpi_highmono2",/*untested*/
- "600x600dpi_highmono",/*untested*/
- "600x600dpi_mono",/*untested*/
- "600x600dpi_draftmono",
- NULL
- };
-
-static const char* canon_BJC_S820_modeuses_PPpro[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photohigh",
- NULL
-};
-
-static const char* canon_BJC_S820_modeuses_PPplus[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",/*untested*/
- NULL
-};
-
-static const char* canon_BJC_S820_modeuses_PPgloss[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_S820_modeuses_glossFilm[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",/*untested*/
- NULL
-};
-
-static const char* canon_BJC_S820_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_S820_modeuses_Transparency[] = {
- "600x600dpi_std2",
- "600x600dpi_draft2",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_S820_modeuses[] = {
- { "Plain", canon_BJC_S820_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_S820_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_S820_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_BJC_S820_modeuses_PPplus, 0 },/*untested*/
- { "PhotopaperMatte", canon_BJC_S820_modeuses_PPgloss, 0 },
- { "GlossyPaper", canon_BJC_S820_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_S820_modeuses_PPgloss, 0 },
- { "InkJetHagaki", canon_BJC_S820_modeuses_PPgloss, 0 },/*untested*/
- { "Hagaki", canon_BJC_S820_modeuses_plain, 0 },/*untested*/
- { "GlossyFilm", canon_BJC_S820_modeuses_glossFilm, 0 },
- { "GlossyCard", canon_BJC_S820_modeuses_PPgloss, 0 },
- { "Transparency", canon_BJC_S820_modeuses_Transparency, 0 },
- { "TShirt", canon_BJC_S820_modeuses_TShirt, 0 },
- { "Envelope", canon_BJC_S820_modeuses_plain, 0 },
- { "PhotopaperOther", canon_BJC_S820_modeuses_plain, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_S820);
-
-/* ----------------------------------- Canon BJC S900 ----------------------------------- */
-static const char* canon_BJC_S900_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",
- /* Mono */
- "600x600dpi_highmono2",/*untested*/
- "600x600dpi_highmono",/*untested*/
- "600x600dpi_mono",/*untested*/
- "600x600dpi_draftmono",
- NULL
- };
-
-static const char* canon_BJC_S900_modeuses_PPpro[] = {
- "600x600dpi_photohigh5",
- "600x600dpi_photohigh",
- NULL
-};
-
-static const char* canon_BJC_S900_modeuses_PPplus[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo2",/*untested*/
- NULL
-};
-
-static const char* canon_BJC_S900_modeuses_PPgloss[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_S900_modeuses_coated[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_S900_modeuses_glossFilm[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",/*untested*/
- NULL
-};
-
-static const char* canon_BJC_S900_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_S900_modeuses_Transparency[] = {
- "600x600dpi_std2",
- "600x600dpi_draft2",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_S900_modeuses[] = {
- { "Plain", canon_BJC_S900_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_S900_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_S900_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_BJC_S900_modeuses_PPplus, 0 },/*untested*/
- { "PhotopaperMatte", canon_BJC_S900_modeuses_PPgloss, 0 },
- { "GlossyPaper", canon_BJC_S900_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_S900_modeuses_coated, 0 },
- { "InkJetHagaki", canon_BJC_S900_modeuses_PPgloss, 0 },/*untested*/
- { "Hagaki", canon_BJC_S900_modeuses_plain, 0 },/*untested*/
- { "GlossyFilm", canon_BJC_S900_modeuses_glossFilm, 0 },
- { "GlossyCard", canon_BJC_S900_modeuses_PPgloss, 0 },
- { "Transparency", canon_BJC_S900_modeuses_Transparency, 0 },
- { "TShirt", canon_BJC_S900_modeuses_TShirt, 0 },
- { "Envelope", canon_BJC_S900_modeuses_plain, 0 },
- { "PhotopaperOther", canon_BJC_S900_modeuses_plain, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_S900);
-
-/* ----------------------------------- Canon i50 ----------------------------------- */
-static const char* canon_BJC_i50_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_BJC_i50_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_i50_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_i50_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i50_modeuses_PPgloss[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photomed",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_i50_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",/*color*/
- "600x600dpi_std4",/*mono*/
- "600x600dpi_draft3",
- NULL
-};
-
-static const char* canon_BJC_i50_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_i50_modeuses_Transparency[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_BJC_i50_modeuses_PPother[] = {
- "600x600dpi_photo2",
- NULL
- };
-
-static const canon_modeuse_t canon_BJC_i50_modeuses[] = {
- { "Plain", canon_BJC_i50_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_i50_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_i50_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble",canon_BJC_i50_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_BJC_i50_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_BJC_i50_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_i50_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_BJC_i50_modeuses_PPplus, 0 },
- { "Hagaki", canon_BJC_i50_modeuses_Hagaki, 0 },
- { "TShirt", canon_BJC_i50_modeuses_TShirt, 0 },
- { "Transparency", canon_BJC_i50_modeuses_Transparency, 0 },
- { "Envelope", canon_BJC_i50_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_BJC_i50_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_i50);
-
-/* ----------------------------------- Canon i80 ----------------------------------- */
-static const char* canon_BJC_i80_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/*mono*/
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
-};
-
-static const char* canon_BJC_i80_modeuses_PPpro[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i80_modeuses_PPplus[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_BJC_i80_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i80_modeuses_PPgloss[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i80_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const char* canon_BJC_i80_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_high4",/*mono*/
- "600x600dpi_std3",
- "600x600dpi_draft3",
- NULL
-};
-
-static const char* canon_BJC_i80_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_i80_modeuses_Transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- "600x600dpi_ohpdraft",
- NULL
-};
-
-static const char* canon_BJC_i80_modeuses_PPother[] = {
- "600x600dpi_photo2",
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_i80_modeuses[] = {
- { "Plain", canon_BJC_i80_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_i80_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_i80_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble",canon_BJC_i80_modeuses_PPmatte, 0 },
- { "PhotopaperMatte", canon_BJC_i80_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_BJC_i80_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_i80_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_BJC_i80_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_BJC_i80_modeuses_Hagaki, 0 },
- { "TShirt", canon_BJC_i80_modeuses_TShirt, 0 },
- { "Transparency", canon_BJC_i80_modeuses_Transparency, 0 },
- { "Envelope", canon_BJC_i80_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_BJC_i80_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_i80);
-
-/* ----------------------------------- Canon i450 ----------------------------------- */
-static const char* canon_BJC_i450_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_highmono",/* mono mode */
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_BJC_i450_modeuses_PPpro[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i450_modeuses_PPplus[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_BJC_i450_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i450_modeuses_PPgloss[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i450_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const char* canon_BJC_i450_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_highmono2",/* mono */
- "600x600dpi_std2",
- "600x600dpi_draft2",
- NULL
-};
-
-static const char* canon_BJC_i450_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_i450_modeuses_Transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-static const char* canon_BJC_i450_modeuses_PPother[] = {
- "600x600dpi_photohigh2",/*untested*/
- "600x600dpi_photo2",/*untested*/
- NULL
- };
-
-static const canon_modeuse_t canon_BJC_i450_modeuses[] = {
- { "Plain", canon_BJC_i450_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_i450_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_i450_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble",canon_BJC_i450_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_BJC_i450_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_BJC_i450_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_i450_modeuses_PPplusDS, 0 },
- { "InkJetHagaki", canon_BJC_i450_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_BJC_i450_modeuses_Hagaki, 0 },
- { "TShirt", canon_BJC_i450_modeuses_TShirt, 0 },
- { "Transparency", canon_BJC_i450_modeuses_Transparency, 0 },
- { "Envelope", canon_BJC_i450_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_BJC_i450_modeuses_PPother, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_i450);
-
-/* ----------------------------------- Canon i455 ----------------------------------- */
-static const char* canon_BJC_i455_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_highmono",/* mono mode */
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_BJC_i455_modeuses_PPpro[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i455_modeuses_PPplus[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_BJC_i455_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i455_modeuses_PPgloss[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i455_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const char* canon_BJC_i455_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_highmono2",/* mono */
- "600x600dpi_std2",
- "600x600dpi_draft2",
- NULL
-};
-
-static const char* canon_BJC_i455_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_i455_modeuses_Transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-static const char* canon_BJC_i455_modeuses_PPother[] = {
- "600x600dpi_photohigh2",/*untested*/
- "600x600dpi_photo2",/*untested*/
- NULL
- };
-
-static const canon_modeuse_t canon_BJC_i455_modeuses[] = {
- { "Plain", canon_BJC_i455_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_i455_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_i455_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble",canon_BJC_i455_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_BJC_i455_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_BJC_i455_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_i455_modeuses_PPplusDS, 0 },
- { "InkJetHagaki", canon_BJC_i455_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_BJC_i455_modeuses_Hagaki, 0 },
- { "TShirt", canon_BJC_i455_modeuses_TShirt, 0 },
- { "Transparency", canon_BJC_i455_modeuses_Transparency, 0 },
- { "Envelope", canon_BJC_i455_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_BJC_i455_modeuses_PPother, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_i455);
-
-/* ----------------------------------- Canon i550 ----------------------------------- */
-static const char* canon_BJC_i550_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_highmono",/* mono mode */
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_BJC_i550_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_i550_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i550_modeuses_PPgloss[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photomed",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i550_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_BJC_i550_modeuses_inkjetHagaki[] = {
- "600x600dpi_photo3",
- "600x600dpi_photo",
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_BJC_i550_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_highmono3",/* mono */
- "600x600dpi_std3",
- "600x600dpi_draft3",
- NULL
-};
-
-static const char* canon_BJC_i550_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_i550_modeuses_Transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-/*untested*/
-static const char* canon_BJC_i550_modeuses_PPother[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
- };
-
-static const canon_modeuse_t canon_BJC_i550_modeuses[] = {
- { "Plain", canon_BJC_i550_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_i550_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_i550_modeuses_PPpro, 0 },
- { "PhotopaperPlusDouble",canon_BJC_i550_modeuses_PPpro, 0 },
- { "PhotopaperMatte", canon_BJC_i550_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_BJC_i550_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_i550_modeuses_coated, 0 },
- { "InkJetHagaki", canon_BJC_i550_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_BJC_i550_modeuses_Hagaki, 0 },
- { "GlossyFilm", canon_BJC_i550_modeuses_PPpro, 0 },
- { "TShirt", canon_BJC_i550_modeuses_TShirt, 0 },
- { "Transparency", canon_BJC_i550_modeuses_Transparency, 0 },
- { "Envelope", canon_BJC_i550_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_BJC_i550_modeuses_PPother, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_i550);
-
-/* ----------------------------------- Canon i560 ----------------------------------- */
-static const char* canon_BJC_i560_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi_high",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not supported yet */
-static const char* canon_BJC_i560_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i560_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_BJC_i560_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i560_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft2",/*untested*/
- NULL
-};
-
-static const char* canon_BJC_i560_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_BJC_i560_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_BJC_i560_modeuses_disc[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
- NULL
-};
-
-static const char* canon_BJC_i560_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_i560_modeuses_Transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-static const char* canon_BJC_i560_modeuses_PPother[] = {
- "600x600dpi_photo",/*untested*/
- NULL
- };
-
-static const canon_modeuse_t canon_BJC_i560_modeuses[] = {
- { "Plain", canon_BJC_i560_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_i560_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_i560_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble",canon_BJC_i560_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_BJC_i560_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_BJC_i560_modeuses_PPplusDS, 0 },
- { "Coated", canon_BJC_i560_modeuses_coated, 0 },
- { "InkJetHagaki", canon_BJC_i560_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_BJC_i560_modeuses_Hagaki, 0 },
- { "DiscCompat", canon_BJC_i560_modeuses_disc, 0 },
- { "DiscOthers", canon_BJC_i560_modeuses_disc, 0 },
- { "TShirt", canon_BJC_i560_modeuses_TShirt, 0 },
- { "Transparency", canon_BJC_i560_modeuses_Transparency, 0 },
- { "Envelope", canon_BJC_i560_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_BJC_i560_modeuses_PPother, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_i560);
-
-/* ----------------------------------- Canon i850 ----------------------------------- */
-static const char* canon_BJC_i850_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi_high",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highset mode not supported yet */
-static const char* canon_BJC_i850_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i850_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* highset mode not supported yet */
-static const char* canon_BJC_i850_modeuses_PPgloss[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i850_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_BJC_i850_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_i850_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_BJC_i850_modeuses_disc[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_BJC_i850_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_i850_modeuses_Transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-/*untested*/
-static const char* canon_BJC_i850_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
- };
-
-static const canon_modeuse_t canon_BJC_i850_modeuses[] = {
- { "Plain", canon_BJC_i850_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_i850_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_i850_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble",canon_BJC_i850_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_BJC_i850_modeuses_PPplus, 0 },
- { "GlossyPaper", canon_BJC_i850_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_i850_modeuses_coated, 0 },
- { "InkJetHagaki", canon_BJC_i850_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_BJC_i850_modeuses_Hagaki, 0 },
- { "DiscCompat", canon_BJC_i850_modeuses_disc, 0 },
- { "DiscOthers", canon_BJC_i850_modeuses_disc, 0 },
- { "GlossyFilm", canon_BJC_i850_modeuses_PPplus, 0 },
- { "TShirt", canon_BJC_i850_modeuses_TShirt, 0 },
- { "Transparency", canon_BJC_i850_modeuses_Transparency, 0 },
- { "Envelope", canon_BJC_i850_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_BJC_i850_modeuses_PPother, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_i850);
-
-/* ----------------------------------- Canon i860 ----------------------------------- */
-static const char* canon_BJC_i860_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
-};
-
-/* highest mode not supported yet */
-static const char* canon_BJC_i860_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_BJC_i860_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_BJC_i860_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i860_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_BJC_i860_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_BJC_i860_modeuses_disc[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_BJC_i860_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_i860_modeuses_Transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-static const char* canon_BJC_i860_modeuses_PPother[] = {
- "600x600dpi_photo",/*untested*/
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_i860_modeuses[] = {
- { "Plain", canon_BJC_i860_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_BJC_i860_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_i860_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble",canon_BJC_i860_modeuses_PPmatte, 0 },/*untested*/
- { "PhotopaperMatte", canon_BJC_i860_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_BJC_i860_modeuses_PPmatte, 0 },
- { "Coated", canon_BJC_i860_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_BJC_i860_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_BJC_i860_modeuses_Hagaki, DUPLEX_SUPPORT }, /* not sure */
- { "DiscCompat", canon_BJC_i860_modeuses_disc, 0 },
- { "DiscOthers", canon_BJC_i860_modeuses_disc, 0 },
- { "TShirt", canon_BJC_i860_modeuses_TShirt, 0 },
- { "Transparency", canon_BJC_i860_modeuses_Transparency, 0 },
- { "Envelope", canon_BJC_i860_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_BJC_i860_modeuses_PPother, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_i860);
-
-/* ----------------------------------- Canon i900 ----------------------------------- */
-static const char* canon_BJC_i900_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
-};
-
-static const char* canon_BJC_i900_modeuses_PPpro[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i900_modeuses_PPplus[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i900_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i900_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const char* canon_BJC_i900_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",
- NULL
-};
-
-static const char* canon_BJC_i900_modeuses_disc[] = {
- "600x600dpi_photohigh5",
- "600x600dpi_photo5",
- "600x600dpi_photodraft5",
- NULL
-};
-
-static const char* canon_BJC_i900_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_i900_modeuses_Transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-static const char* canon_BJC_i900_modeuses_PPother[] = {
- "600x600dpi_photo",/*untested*/
- NULL
-};
-
-static const canon_modeuse_t canon_BJC_i900_modeuses[] = {
- { "Plain", canon_BJC_i900_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_i900_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_i900_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble",canon_BJC_i900_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_BJC_i900_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_BJC_i900_modeuses_PPplus, 0 },
- { "Coated", canon_BJC_i900_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_BJC_i900_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_BJC_i900_modeuses_Hagaki, 0 },
- { "DiscCompat", canon_BJC_i900_modeuses_disc, 0 },
- { "DiscOthers", canon_BJC_i900_modeuses_disc, 0 },
- { "TShirt", canon_BJC_i900_modeuses_TShirt, 0 },
- { "Transparency", canon_BJC_i900_modeuses_Transparency, 0 },
- { "Envelope", canon_BJC_i900_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_BJC_i900_modeuses_PPother, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_i900);
-
-/* ----------------------------------- Canon i950 ----------------------------------- */
-static const char* canon_BJC_i950_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high"/*untested*/,
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "600x600dpi_draft2",
- "600x600dpi_draftmono",/* mono --- untested*/
- "600x600dpi_draftmono2",/* mono */
- NULL
- };
-
-static const char* canon_BJC_i950_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_BJC_i950_modeuses_PPplus[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",/*untested*/
- NULL
-};
-
-static const char* canon_BJC_i950_modeuses_PPgloss[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_i950_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_i950_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo3",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i950_modeuses_GlossyFilm[] = {
- "600x600dpi_photohigh",
- NULL
-};
-
-static const char* canon_BJC_i950_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
- NULL
-};
-
-static const char* canon_BJC_i950_modeuses_disc[] = {
- "600x600dpi_photo5",
- "600x600dpi_photodraft5",
- NULL
-};
-
-static const char* canon_BJC_i950_modeuses_Hagaki[] = {
- "600x600dpi_high4",
- "600x600dpi_high5",/*untested*/
- "600x600dpi_std4",/*untested*/
- "600x600dpi_std5",
- "600x600dpi_draftmono4",/* mono---untested*/
- "600x600dpi_draftmono5",/* mono */
- NULL
-};
-
-static const char* canon_BJC_i950_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_i950_modeuses_Transparency[] = {
- "600x600dpi_std3",
- "600x600dpi_draft3",
- "600x600dpi_draft4",
- NULL
-};
-
-static const char* canon_BJC_i950_modeuses_PPother[] = {
- "600x600dpi_photo2",/*untested*/
- NULL
- };
-
-static const canon_modeuse_t canon_BJC_i950_modeuses[] = {
- { "Plain", canon_BJC_i950_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_i950_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_i950_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble",canon_BJC_i950_modeuses_PPgloss, 0 },
- { "PhotopaperMatte", canon_BJC_i950_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_BJC_i950_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_i950_modeuses_coated, 0 },
- { "InkJetHagaki", canon_BJC_i950_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_BJC_i950_modeuses_Hagaki, 0 },
- { "DiscCompat", canon_BJC_i950_modeuses_disc, 0 },
- { "DiscOthers", canon_BJC_i950_modeuses_disc, 0 },
- { "GlossyFilm", canon_BJC_i950_modeuses_GlossyFilm, 0 },
- { "TShirt", canon_BJC_i950_modeuses_TShirt, 0 },
- { "Transparency", canon_BJC_i950_modeuses_Transparency, 0 },
- { "Envelope", canon_BJC_i950_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_BJC_i950_modeuses_PPother, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_i950);
-
-/* ----------------------------------- Canon i960 ----------------------------------- */
-static const char* canon_BJC_i960_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high3",/* duplex */
- "600x600dpi_high",
- "600x600dpi",/*untested*/
- "600x600dpi_draft",
- "600x600dpi_draft2",
- "600x600dpi_draftmono",/* mono */
- "600x600dpi_draftmono2",/* mono */
- NULL
- };
-
-static const char* canon_BJC_i960_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i960_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo5",/*untested*/
- NULL
-};
-
-
-static const char* canon_BJC_i960_modeuses_PPgloss[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_i960_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_i960_modeuses_coated[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- "600x600dpi_photo5",
- NULL
-};
-
-static const char* canon_BJC_i960_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_BJC_i960_modeuses_disc[] = {
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
- NULL
-};
-
-static const char* canon_BJC_i960_modeuses_Hagaki[] = {
- "600x600dpi_high4",
- "600x600dpi_high5",
- "600x600dpi_std4",/*untested*/
- "600x600dpi_std5",
- "600x600dpi_draft5",
- "600x600dpi_draftmono4",
- "600x600dpi_draftmono5",
- NULL
-};
-
-static const char* canon_BJC_i960_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_i960_modeuses_Transparency[] = {
- "600x600dpi_std3",
- "600x600dpi_draft3",
- "600x600dpi_draft4",/*untested*/
- NULL
-};
-
-static const char* canon_BJC_i960_modeuses_PPother[] = {
- "600x600dpi_photo2",/*untested*/
- NULL
- };
-
-static const canon_modeuse_t canon_BJC_i960_modeuses[] = {
- { "Plain", canon_BJC_i960_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "GlossyPro", canon_BJC_i960_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_i960_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble",canon_BJC_i960_modeuses_PPgloss, 0 },
- { "PhotopaperMatte", canon_BJC_i960_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_BJC_i960_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_i960_modeuses_coated, 0 },
- { "InkJetHagaki", canon_BJC_i960_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_BJC_i960_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_BJC_i960_modeuses_disc, 0 },
- { "DiscOthers", canon_BJC_i960_modeuses_disc, 0 },
- { "TShirt", canon_BJC_i960_modeuses_TShirt, 0 },
- { "Transparency", canon_BJC_i960_modeuses_Transparency, 0 },
- { "Envelope", canon_BJC_i960_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_BJC_i960_modeuses_PPother, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_i960);
-
-/* ----------------------------------- Canon i990 ----------------------------------- */
-static const char* canon_BJC_i990_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high3", /*duplex*/
- "600x600dpi",
- "600x600dpi_draft",
- "600x600dpi_draft2",
- "600x600dpi_draftmono",/*mono*/
- "600x600dpi_draftmono2",/*mono*/
- NULL
- };
-
-/* most photo modes use R ink and therefore unsupported */
-/* unsupported */
-static const char* canon_BJC_i990_modeuses_PPpro[] = {
- "600x600dpi_photohigh",/*stand-in*/
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_BJC_i990_modeuses_PPplus[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photodraft",
- NULL
-};
-
-/* unsupported */
-static const char* canon_BJC_i990_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",/*stand-in*/
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_BJC_i990_modeuses_PPgloss[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_BJC_i990_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photomed",
- "600x600dpi_photo",
- NULL
-};
-
-/* high mode not yet supported */
-static const char* canon_BJC_i990_modeuses_inkjetHagaki[] = {
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_i990_modeuses_disc[] = {
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_BJC_i990_modeuses_Hagaki[] = {
- "600x600dpi_high4",
- "600x600dpi_std4",
- "600x600dpi_draft5",
- "600x600dpi_draft4",
- "600x600dpi_draftmono4",/*mono*/
- "600x600dpi_draftmono5",/*mono*/
- NULL
-};
-
-static const char* canon_BJC_i990_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_i990_modeuses_Transparency[] = {
- "600x600dpi_std3",
- "600x600dpi_draft3",
- NULL
-};
-
-/* untested */
-static const char* canon_BJC_i990_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_BJC_i990_modeuses[] = {
- { "Plain", canon_BJC_i990_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "GlossyPro", canon_BJC_i990_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_i990_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble",canon_BJC_i990_modeuses_PPplus, 0 },/*untested*/
- { "PhotopaperMatte", canon_BJC_i990_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_BJC_i990_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_i990_modeuses_coated, 0 },
- { "InkJetHagaki", canon_BJC_i990_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_BJC_i990_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_BJC_i990_modeuses_disc, 0 },
- { "DiscOthers", canon_BJC_i990_modeuses_disc, 0 },
- { "TShirt", canon_BJC_i990_modeuses_TShirt, 0 },
- { "Transparency", canon_BJC_i990_modeuses_Transparency, 0 },
- { "Envelope", canon_BJC_i990_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_BJC_i990_modeuses_PPother, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_i990);
-
-/* ----------------------------------- Canon i6100 ----------------------------------- */
-static const char* canon_BJC_i6100_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",/*untested*/
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_BJC_i6100_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_i6100_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i6100_modeuses_PPgloss[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i6100_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_BJC_i6100_modeuses_inkjetHagaki[] = {
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_BJC_i6100_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_BJC_i6100_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_i6100_modeuses_Transparency[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const char* canon_BJC_i6100_modeuses_PPother[] = {
- "600x600dpi_photo2",/*untested*/
- "600x600dpi_photo",/*untested*/
- NULL
- };
-
-static const canon_modeuse_t canon_BJC_i6100_modeuses[] = {
- { "Plain", canon_BJC_i6100_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_i6100_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_i6100_modeuses_PPpro, 0 },
- { "PhotopaperPlusDouble",canon_BJC_i6100_modeuses_PPpro, 0 },
- { "PhotopaperMatte", canon_BJC_i6100_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_BJC_i6100_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_i6100_modeuses_coated, 0 },
- { "InkJetHagaki", canon_BJC_i6100_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_BJC_i6100_modeuses_Hagaki, 0 },
- { "TShirt", canon_BJC_i6100_modeuses_TShirt, 0 },
- { "Transparency", canon_BJC_i6100_modeuses_Transparency, 0 },
- { "Envelope", canon_BJC_i6100_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_BJC_i6100_modeuses_PPother, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_i6100);
-
-/* ----------------------------------- Canon i9100 ----------------------------------- */
-static const char* canon_BJC_i9100_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "600x600dpi_mono",/*untested*/
- "600x600dpi_draftmono",
- NULL
- };
-
-static const char* canon_BJC_i9100_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_i9100_modeuses_PPplus[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",/*untested*/
- NULL
-};
-
-static const char* canon_BJC_i9100_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i9100_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_BJC_i9100_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
- NULL
-};
-
-static const char* canon_BJC_i9100_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",
- "600x600dpi_draftmono2",
- NULL
-};
-
-static const char* canon_BJC_i9100_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_i9100_modeuses_Transparency[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",/*untested*/
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_BJC_i9100_modeuses_PPother[] = {
- "600x600dpi_photo2",/*untested*/
- "600x600dpi_photo",/*untested*/
- NULL
- };
-
-static const canon_modeuse_t canon_BJC_i9100_modeuses[] = {
- { "Plain", canon_BJC_i9100_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_i9100_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_i9100_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble",canon_BJC_i9100_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_BJC_i9100_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_BJC_i9100_modeuses_PPmatte, 0 },
- { "Coated", canon_BJC_i9100_modeuses_coated, 0 },
- { "InkJetHagaki", canon_BJC_i9100_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_BJC_i9100_modeuses_Hagaki, 0 },
- { "TShirt", canon_BJC_i9100_modeuses_TShirt, 0 },
- { "Transparency", canon_BJC_i9100_modeuses_Transparency, 0 },
- { "Envelope", canon_BJC_i9100_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_BJC_i9100_modeuses_PPother, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_BJC_i9100);
-
-/* ----------------------------------- Canon i9900 ----------------------------------- */
-static const char* canon_BJC_i9900_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi",
- "600x600dpi_draft",
- "600x600dpi_draft2",
- "600x600dpi_draftmono",/*mono*/
- "600x600dpi_draftmono2",/*mono*/
- NULL
- };
-
-/* most photo modes use R,G inks and therefore unsupported */
-/* unsupported */
-static const char* canon_BJC_i9900_modeuses_PPpro[] = {
- "600x600dpi_photohigh",/*stand-in*/
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_BJC_i9900_modeuses_PPplus[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photodraft",
- NULL
-};
-
-/* unsupported */
-static const char* canon_BJC_i9900_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",/*stand-in*/
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_BJC_i9900_modeuses_PPgloss[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_BJC_i9900_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photomed",
- "600x600dpi_photo",
- NULL
-};
-
-/* high mode not yet supported */
-static const char* canon_BJC_i9900_modeuses_inkjetHagaki[] = {
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_BJC_i9900_modeuses_disc[] = {
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_BJC_i9900_modeuses_Hagaki[] = {
- "600x600dpi_high4",
- "600x600dpi_std4",
- "600x600dpi_draft5",
- "600x600dpi_draft4",
- "600x600dpi_draftmono4",/*mono*/
- "600x600dpi_draftmono5",/*mono*/
- NULL
-};
-
-static const char* canon_BJC_i9900_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_BJC_i9900_modeuses_Transparency[] = {
- "600x600dpi_std3",
- "600x600dpi_draft3",
- NULL
-};
-
-static const char* canon_BJC_i9900_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_BJC_i9900_modeuses[] = {
- { "Plain", canon_BJC_i9900_modeuses_plain, 0 },
- { "GlossyPro", canon_BJC_i9900_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_BJC_i9900_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble",canon_BJC_i9900_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_BJC_i9900_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_BJC_i9900_modeuses_PPgloss, 0 },
- { "Coated", canon_BJC_i9900_modeuses_coated, 0 },
- { "InkJetHagaki", canon_BJC_i9900_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_BJC_i9900_modeuses_Hagaki, 0 },
- { "DiscCompat", canon_BJC_i9900_modeuses_disc, 0 },
- { "DiscOthers", canon_BJC_i9900_modeuses_disc, 0 },
- { "TShirt", canon_BJC_i9900_modeuses_TShirt, 0 },
- { "Transparency", canon_BJC_i9900_modeuses_Transparency, 0 },
- { "Envelope", canon_BJC_i9900_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_BJC_i9900_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_BJC_i9900);
-
-/* ----------------------------------- Canon iP90 ----------------------------------- */
-static const char* canon_PIXMA_iP90_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high", /* mono */
- "600x600dpi",
- "600x600dpi_draft",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
-};
-
-static const char* canon_PIXMA_iP90_modeuses_PPpro[] = {
- "600x600dpi_photohigh2", /* no ESC (S */
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP90_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_PIXMA_iP90_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP90_modeuses_Hagaki[] = {
- "600x600dpi_high4",
- "600x600dpi_high3", /* mono */
- "600x600dpi_std2",
- "600x600dpi_draft2",
- NULL
-};
-
-static const char* canon_PIXMA_iP90_modeuses_TShirt[] = {
- "600x600dpi_tshirt", /* no ESC (S */
- NULL
-};
-
-static const char* canon_PIXMA_iP90_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_iP90_modeuses[] = {
- { "Plain", canon_PIXMA_iP90_modeuses_plain, 0 },/*INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL*/
- { "GlossyPro", canon_PIXMA_iP90_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotopaperPlus", canon_PIXMA_iP90_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotopaperPlusDouble", canon_PIXMA_iP90_modeuses_PPplusDS, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_PIXMA_iP90_modeuses_PPplusDS, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_PIXMA_iP90_modeuses_PPplusDS, INKSET_COLOR_SUPPORT },
- { "Coated", canon_PIXMA_iP90_modeuses_PPplusDS, INKSET_COLOR_SUPPORT },
- { "InkJetHagaki", canon_PIXMA_iP90_modeuses_PPplusDS, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_PIXMA_iP90_modeuses_Hagaki, 0 },/*INKSET_COLOR_SUPPORT*/
- { "TShirt", canon_PIXMA_iP90_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_PIXMA_iP90_modeuses_Hagaki, 0 },/* INKSET_COLOR_SUPPORT*/
- { "PhotopaperOther", canon_PIXMA_iP90_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP90);
-
-/* ----------------------------------- Canon iP100 ----------------------------------- */
-static const char* canon_PIXMA_iP100_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high", /* mono */
- "600x600dpi",
- "600x600dpi_draft",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
-};
-
-static const char* canon_PIXMA_iP100_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP100_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP100_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP100_modeuses_Hagaki[] = {
- "600x600dpi_high4",
- "600x600dpi_high3", /* mono */
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_iP100_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP100_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_iP100_modeuses[] = {
- { "Plain", canon_PIXMA_iP100_modeuses_plain, 0 },/*INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL*/
- { "GlossyPro", canon_PIXMA_iP100_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotopaperPlus", canon_PIXMA_iP100_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotoPlusGloss2", canon_PIXMA_iP100_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotopaperPlusDouble", canon_PIXMA_iP100_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss",canon_PIXMA_iP100_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_PIXMA_iP100_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_PIXMA_iP100_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "Coated", canon_PIXMA_iP100_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
- { "InkJetHagaki", canon_PIXMA_iP100_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_PIXMA_iP100_modeuses_Hagaki, 0 },/*INKSET_COLOR_SUPPORT*/
- { "TShirt", canon_PIXMA_iP100_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_PIXMA_iP100_modeuses_Hagaki, 0 },/*INKSET_COLOR_SUPPORT*/
- { "PhotopaperOther", canon_PIXMA_iP100_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP100);
-
-/* ----------------------------------- Canon iP2000 ----------------------------------- */
-static const char* canon_PIXMA_iP2000_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high",/* mono */
- "600x600dpi",
- "600x600dpi_draft",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_PIXMA_iP2000_modeuses_PPpro[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP2000_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_PIXMA_iP2000_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP2000_modeuses_PPgloss[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP2000_modeuses_Hagaki[] = {
- "600x600dpi_high4",
- "600x600dpi_high3",/* mono */
- "600x600dpi_std3",
- "600x600dpi_draft3",
- NULL
-};
-
-static const char* canon_PIXMA_iP2000_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP2000_modeuses_Transparency[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const char* canon_PIXMA_iP2000_modeuses_PPother[] = {
- "600x600dpi_photo2",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_iP2000_modeuses[] = {
- { "Plain", canon_PIXMA_iP2000_modeuses_plain, 0 },
- { "GlossyPro", canon_PIXMA_iP2000_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP2000_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble",canon_PIXMA_iP2000_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP2000_modeuses_PPplus, 0 },
- { "GlossyPaper", canon_PIXMA_iP2000_modeuses_PPgloss, 0 },
- { "Coated", canon_PIXMA_iP2000_modeuses_PPplusDS, 0 },
- { "InkJetHagaki", canon_PIXMA_iP2000_modeuses_PPplusDS, 0 },/*untested*/
- { "Hagaki", canon_PIXMA_iP2000_modeuses_Hagaki, 0 },/*untested*/
- { "TShirt", canon_PIXMA_iP2000_modeuses_TShirt, 0 },
- { "Transparency", canon_PIXMA_iP2000_modeuses_Transparency, 0 },
- { "Envelope", canon_PIXMA_iP2000_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP2000_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP2000);
-
-/* ----------------------------------- Canon iP2700 ----------------------------------- */
-static const char* canon_PIXMA_iP2700_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- /* Mono */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "300x300dpi_mono",
- /* Color */
- "600x600dpi_high3",
- "600x600dpi_std3",
- "300x300dpi_std3",
- NULL
- };
-
-static const char* canon_PIXMA_iP2700_modeuses_PPpro[] = {
- "1200x1200dpi_high",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP2700_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP2700_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- /* Mono */
- "600x600dpi_highmono2",
- "600x600dpi_mono2",
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- NULL
-};
-
-static const char* canon_PIXMA_iP2700_modeuses_TShirt[] = {
- "600x600dpi_photohigh",
- NULL
-};
-
-static const char* canon_PIXMA_iP2700_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_iP2700_modeuses[] = {
- { "Plain", canon_PIXMA_iP2700_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotoPlusGloss2", canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoPro2", canon_PIXMA_iP2700_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss",canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Coated", canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "HagakiA", canon_PIXMA_iP2700_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "InkJetHagaki", canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "CanonPhotoHagakiK",canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_PIXMA_iP2700_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_PIXMA_iP2700_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_PIXMA_iP2700_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_PIXMA_iP2700_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP2700);
-
-/* ----------------------------------- Canon iP3000 ----------------------------------- */
-static const char* canon_PIXMA_iP3000_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi_high",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not supported yet */
-static const char* canon_PIXMA_iP3000_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP3000_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_PIXMA_iP3000_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* Note: iP3000 US driver does not have inkjetHagaki or Hagaki media */
-/* untested */
-static const char* canon_PIXMA_iP3000_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_iP3000_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_iP3000_modeuses_disc[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_PIXMA_iP3000_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP3000_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const char* canon_PIXMA_iP3000_modeuses_transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_iP3000_modeuses[] = {
- { "Plain", canon_PIXMA_iP3000_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_PIXMA_iP3000_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP3000_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP3000_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP3000_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_PIXMA_iP3000_modeuses_PPplusDS, 0 },
- { "Coated", canon_PIXMA_iP3000_modeuses_PPplusDS, 0 },
- { "InkJetHagaki", canon_PIXMA_iP3000_modeuses_inkjetHagaki, 0 },/*untested*/
- { "Hagaki", canon_PIXMA_iP3000_modeuses_Hagaki, DUPLEX_SUPPORT },/*untested*/
- { "DiscCompat", canon_PIXMA_iP3000_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP3000_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP3000_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP3000_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP3000_modeuses_PPother, 0 },
- { "Transparency", canon_PIXMA_iP3000_modeuses_transparency, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP3000);
-
-/* ----------------------------------- Canon iP3100 ----------------------------------- */
-static const char* canon_PIXMA_iP3100_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi_high",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not supported yet */
-static const char* canon_PIXMA_iP3100_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP3100_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_PIXMA_iP3100_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP3100_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_PIXMA_iP3100_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_iP3100_modeuses_disc[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_PIXMA_iP3100_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-/* Note: iP3100 US driver does not have this media */
-/*untested*/
-static const char* canon_PIXMA_iP3100_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const char* canon_PIXMA_iP3100_modeuses_transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_iP3100_modeuses[] = {
- { "Plain", canon_PIXMA_iP3100_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_PIXMA_iP3100_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP3100_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP3100_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP3100_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_PIXMA_iP3100_modeuses_PPplusDS, 0 },
- { "Coated", canon_PIXMA_iP3100_modeuses_PPplusDS, 0 },
- { "InkJetHagaki", canon_PIXMA_iP3100_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_iP3100_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_PIXMA_iP3100_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP3100_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP3100_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP3100_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP3100_modeuses_PPother, 0 },/*untested*/
- { "Transparency", canon_PIXMA_iP3100_modeuses_transparency, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP3100);
-
-/* ----------------------------------- Canon iP3300 ----------------------------------- */
-static const char* canon_PIXMA_iP3300_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not yet supported */
-static const char* canon_PIXMA_iP3300_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP3300_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP3300_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP3300_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_draft3",
- NULL
-};
-
-static const char* canon_PIXMA_iP3300_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_PIXMA_iP3300_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP3300_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_iP3300_modeuses[] = {
- { "Plain", canon_PIXMA_iP3300_modeuses_plain, 0 },
- { "GlossyPro", canon_PIXMA_iP3300_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP3300_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP3300_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_PIXMA_iP3300_modeuses_PPplusDS, 0 },/*check*/
- { "PhotopaperMatte", canon_PIXMA_iP3300_modeuses_PPplusDS, 0 },
- { "Coated", canon_PIXMA_iP3300_modeuses_PPplusDS, 0 },
- { "InkJetHagaki", canon_PIXMA_iP3300_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_iP3300_modeuses_Hagaki, 0 },
- { "TShirt", canon_PIXMA_iP3300_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP3300_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP3300_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP3300);
-
-/* ----------------------------------- Canon iP3600 ----------------------------------- */
-static const char* canon_PIXMA_iP3600_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not yet supported */
-static const char* canon_PIXMA_iP3600_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP3600_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP3600_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP3600_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_PIXMA_iP3600_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_iP3600_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP3600_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_iP3600_modeuses[] = {
- { "Plain", canon_PIXMA_iP3600_modeuses_plain, 0 },
- { "PhotoPlusGloss2", canon_PIXMA_iP3600_modeuses_PPplusG2, 0 },
- { "PhotoPro2", canon_PIXMA_iP3600_modeuses_PPpro, 0 },
- { "PhotoProPlat", canon_PIXMA_iP3600_modeuses_PPplusG2, 0 },
- { "PhotoProSemiGloss", canon_PIXMA_iP3600_modeuses_PPplusG2, 0 },
- { "GlossyPaper", canon_PIXMA_iP3600_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP3600_modeuses_PPmatte, 0 },
- { "Coated", canon_PIXMA_iP3600_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_iP3600_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_iP3600_modeuses_Hagaki, 0 },
- { "TShirt", canon_PIXMA_iP3600_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP3600_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP3600_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP3600);
-
-/* ----------------------------------- Canon iP4000 ----------------------------------- */
-static const char* canon_PIXMA_iP4000_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi_high",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- "600x600dpi_high2",/*legacy*/
- "600x600dpi_std2",/*legacy*/
- "600x600dpi_draft2",/*legacy*/
- NULL
- };
-
-/* highest mode not supported yet */
-static const char* canon_PIXMA_iP4000_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP4000_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_PIXMA_iP4000_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* Note: iP4000 US driver does not have inkjetHagaki or Hagaki media */
-/* untested */
-static const char* canon_PIXMA_iP4000_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_iP4000_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_PIXMA_iP4000_modeuses_disc[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_PIXMA_iP4000_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP4000_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const char* canon_PIXMA_iP4000_modeuses_transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_iP4000_modeuses[] = {
- { "Plain", canon_PIXMA_iP4000_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_PIXMA_iP4000_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP4000_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP4000_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP4000_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_PIXMA_iP4000_modeuses_PPplusDS, 0 },
- { "Coated", canon_PIXMA_iP4000_modeuses_PPplusDS, 0 },
- { "InkJetHagaki", canon_PIXMA_iP4000_modeuses_inkjetHagaki, 0 },/*untested*/
- { "Hagaki", canon_PIXMA_iP4000_modeuses_Hagaki, DUPLEX_SUPPORT },/*untested*/
- { "CD", canon_PIXMA_iP4000_modeuses_plain, 0 },/*NOTE:temporary replacement*/
- { "DiscCompat", canon_PIXMA_iP4000_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP4000_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP4000_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP4000_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP4000_modeuses_PPother, 0 },
- { "Transparency", canon_PIXMA_iP4000_modeuses_transparency, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP4000);
-
-/* ----------------------------------- Canon iP4100 ----------------------------------- */
-static const char* canon_PIXMA_iP4100_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not supported yet */
-static const char* canon_PIXMA_iP4100_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP4100_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_PIXMA_iP4100_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP4100_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_iP4100_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_PIXMA_iP4100_modeuses_disc[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_PIXMA_iP4100_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP4100_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const char* canon_PIXMA_iP4100_modeuses_transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_iP4100_modeuses[] = {
- { "Plain", canon_PIXMA_iP4100_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_PIXMA_iP4100_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP4100_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP4100_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP4100_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_PIXMA_iP4100_modeuses_PPplusDS, 0 },
- { "Coated", canon_PIXMA_iP4100_modeuses_PPplusDS, 0 },
- { "InkJetHagaki", canon_PIXMA_iP4100_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_iP4100_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_PIXMA_iP4100_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP4100_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP4100_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP4100_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP4100_modeuses_PPother, 0 },/*untested*/
- { "Transparency", canon_PIXMA_iP4100_modeuses_transparency, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP4100);
-
-/* ----------------------------------- Canon iP4200 ----------------------------------- */
-static const char* canon_PIXMA_iP4200_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* most photo modes not supported yet --- used photodraft as stand-in everywhere */
-static const char* canon_PIXMA_iP4200_modeuses_PPplus[] = {
- "600x600dpi_photodraft",
- NULL
-};
-
-/* high mode not yet supported */
-static const char* canon_PIXMA_iP4200_modeuses_inkjetHagaki[] = {
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_PIXMA_iP4200_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_iP4200_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-/*untested*/
-static const char* canon_PIXMA_iP4200_modeuses_transparency[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_iP4200_modeuses[] = {
- { "Plain", canon_PIXMA_iP4200_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */
- { "PhotopaperPlus", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* mostly not yet supported */
- { "PhotopaperPlusDouble", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */
- { "PhotopaperMatte", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */
- { "GlossyPaper", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */
- { "Coated", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */
- { "InkJetHagaki", canon_PIXMA_iP4200_modeuses_inkjetHagaki, 0 },/* partially not yet supported */
- { "Hagaki", canon_PIXMA_iP4200_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "CD", canon_PIXMA_iP4200_modeuses_plain, 0 },/*NOTE:temporary replacement*/
- { "DiscCompat", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */
- { "DiscOthers", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */
- { "TShirt", canon_PIXMA_iP4200_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP4200_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */
- { "Transparency", canon_PIXMA_iP4200_modeuses_transparency, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP4200);
-
-/* ----------------------------------- Canon iP4300 ----------------------------------- */
-static const char* canon_PIXMA_iP4300_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* most photo modes not supported yet --- used photodraft as stand-in everywhere */
-static const char* canon_PIXMA_iP4300_modeuses_PPplus[] = {
- "600x600dpi_photodraft",
- NULL
-};
-
-/* high mode not yet supported */
-static const char* canon_PIXMA_iP4300_modeuses_inkjetHagaki[] = {
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_PIXMA_iP4300_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_iP4300_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-/*untested*/
-static const char* canon_PIXMA_iP4300_modeuses_transparency[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_iP4300_modeuses[] = {
- { "Plain", canon_PIXMA_iP4300_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */
- { "PhotopaperPlus", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* mostly not yet supported */
- { "PhotopaperPlusDouble", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */
- { "PhotopaperMatte", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */
- { "GlossyPaper", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */
- { "Coated", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */
- { "InkJetHagaki", canon_PIXMA_iP4300_modeuses_inkjetHagaki, 0 },/* partially not yet supported */
- { "Hagaki", canon_PIXMA_iP4300_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "CD", canon_PIXMA_iP4300_modeuses_plain, 0 },/*NOTE:temporary replacement*/
- { "DiscCompat", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */
- { "DiscOthers", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */
- { "TShirt", canon_PIXMA_iP4300_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP4300_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */
- { "Transparency", canon_PIXMA_iP4300_modeuses_transparency, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP4300);
-
-/* ----------------------------------- Canon iP4500 ----------------------------------- */
-static const char* canon_PIXMA_iP4500_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_PIXMA_iP4500_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_PIXMA_iP4500_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_PIXMA_iP4500_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP4500_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP4500_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_PIXMA_iP4500_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_iP4500_modeuses_disc[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
- NULL
-};
-
-static const char* canon_PIXMA_iP4500_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP4500_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_iP4500_modeuses[] = {
- { "Plain", canon_PIXMA_iP4500_modeuses_plain, DUPLEX_SUPPORT },
- { "PhotoPlusGloss2", canon_PIXMA_iP4500_modeuses_PPplus, 0 },
- { "GlossyPro", canon_PIXMA_iP4500_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP4500_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP4500_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_PIXMA_iP4500_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP4500_modeuses_PPmatte, 0 },
- { "Coated", canon_PIXMA_iP4500_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_iP4500_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_iP4500_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_PIXMA_iP4500_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP4500_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP4500_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP4500_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP4500_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP4500);
-
-/* ----------------------------------- Canon iP4600 ----------------------------------- */
-static const char* canon_PIXMA_iP4600_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_PIXMA_iP4600_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",/*untested*/
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_PIXMA_iP4600_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",/*untested*/
- NULL
-};
-
-static const char* canon_PIXMA_iP4600_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_PIXMA_iP4600_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",/*untested*/
- NULL
-};
-
-static const char* canon_PIXMA_iP4600_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",/*untested*/
- NULL
-};
-
-static const char* canon_PIXMA_iP4600_modeuses_disc[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_PIXMA_iP4600_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP4600_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_iP4600_modeuses[] = {
- { "Plain", canon_PIXMA_iP4600_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_PIXMA_iP4600_modeuses_PPplusG2, 0 },
- { "PhotoPro2", canon_PIXMA_iP4600_modeuses_PPpro, 0 },
- { "PhotoProPlat", canon_PIXMA_iP4600_modeuses_PPplusG2, 0 },
- { "PhotoProSemiGloss",canon_PIXMA_iP4600_modeuses_PPplusG2, 0 },
- { "GlossyPaper", canon_PIXMA_iP4600_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP4600_modeuses_PPmatte, 0 },
- { "Coated", canon_PIXMA_iP4600_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_iP4600_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_iP4600_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_PIXMA_iP4600_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP4600_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP4600_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP4600_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP4600_modeuses_PPother, 0 },
- };
-
-DECLARE_MODEUSES(canon_PIXMA_iP4600);
-
-/* ----------------------------------- Canon iP4700 ----------------------------------- */
-static const char* canon_PIXMA_iP4700_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",
- "600x600dpi",
- "300x300dpi",
- NULL
- };
-
-static const char* canon_PIXMA_iP4700_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_PIXMA_iP4700_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP4700_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP4700_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_PIXMA_iP4700_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_PIXMA_iP4700_modeuses_disc[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const char* canon_PIXMA_iP4700_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP4700_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_iP4700_modeuses[] = {
- { "Plain", canon_PIXMA_iP4700_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_PIXMA_iP4700_modeuses_PPplusG2, 0 },
- { "PhotoPro2", canon_PIXMA_iP4700_modeuses_PPpro, 0 },
- { "PhotoProPlat", canon_PIXMA_iP4700_modeuses_PPplusG2, 0 },
- { "PhotoProSemiGloss",canon_PIXMA_iP4700_modeuses_PPplusG2, 0 },
- { "GlossyPaper", canon_PIXMA_iP4700_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP4700_modeuses_PPmatte, 0 },
- { "Coated", canon_PIXMA_iP4700_modeuses_PPmatte, 0 },
- { "HagakiA", canon_PIXMA_iP4700_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_PIXMA_iP4700_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_PIXMA_iP4700_modeuses_PPpro, 0 },
- { "OtherPhotoHagakiO",canon_PIXMA_iP4700_modeuses_PPpro, 0 },
- { "Hagaki", canon_PIXMA_iP4700_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_PIXMA_iP4700_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP4700_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP4700_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP4700_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP4700_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP4700);
-
-/* ----------------------------------- Canon iP4900 ----------------------------------- */
-static const char* canon_PIXMA_iP4900_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "600x600dpi_std2",
- "300x300dpi",
- NULL
- };
-
-static const char* canon_PIXMA_iP4900_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_PIXMA_iP4900_modeuses_PPproPlat[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP4900_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP4900_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const char* canon_PIXMA_iP4900_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_iP4900_modeuses_disc[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_PIXMA_iP4900_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP4900_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_iP4900_modeuses[] = {
- { "Plain", canon_PIXMA_iP4900_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_PIXMA_iP4900_modeuses_PPplusG2, 0 },
- { "PhotoProPlat", canon_PIXMA_iP4900_modeuses_PPproPlat, 0 },
- { "PhotoProSemiGloss",canon_PIXMA_iP4900_modeuses_PPplusG2, 0 },
- { "GlossyPaper", canon_PIXMA_iP4900_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP4900_modeuses_PPmatte, 0 },
- { "Coated", canon_PIXMA_iP4900_modeuses_PPmatte, 0 },
- { "HagakiA", canon_PIXMA_iP4900_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_PIXMA_iP4900_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_PIXMA_iP4900_modeuses_PPplusG2, 0 },
- { "Hagaki", canon_PIXMA_iP4900_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_PIXMA_iP4900_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP4900_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP4900_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP4900_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP4900_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP4900);
-
-/* ----------------------------------- Canon iP5000 ----------------------------------- */
-/* high mode not supported yet */
-static const char* canon_PIXMA_iP5000_modeuses_plain[] = {
- "600x600dpi",
- "300x300dpi_high",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* high modes not supported yet */
-static const char* canon_PIXMA_iP5000_modeuses_PPpro[] = {
- "600x600dpi_photodraft",/*stand-in*/
- NULL
-};
-
-/* high modes not supported yet */
-static const char* canon_PIXMA_iP5000_modeuses_PPplus[] = {
- "600x600dpi_photodraft",
- NULL
-};
-
-/* high modes not supported yet */
-static const char* canon_PIXMA_iP5000_modeuses_PPplusDS[] = {
- "600x600dpi_photodraft",/*stand-in*/
- NULL
-};
-
-/* US driver does not supply this media: untested */
-static const char* canon_PIXMA_iP5000_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-/* high modes not supported yet */
-static const char* canon_PIXMA_iP5000_modeuses_disc[] = {
- /* plain mode temporarily added here */
- "600x600dpi",
- "300x300dpi_high",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- /* photo modes temporarily added */
- "600x600dpi_photodraft",/*stand-in*/
- NULL
-};
-
-static const char* canon_PIXMA_iP5000_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-/* high modes not supported yet */
-static const char* canon_PIXMA_iP5000_modeuses_PPother[] = {
- "600x600dpi_photodraft",/*stand-in*/
- NULL
- };
-
-static const char* canon_PIXMA_iP5000_modeuses_transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_iP5000_modeuses[] = {
- { "Plain", canon_PIXMA_iP5000_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_PIXMA_iP5000_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP5000_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP5000_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP5000_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_PIXMA_iP5000_modeuses_PPplusDS, 0 },
- { "Coated", canon_PIXMA_iP5000_modeuses_PPplusDS, 0 },
- { "InkJetHagaki", canon_PIXMA_iP5000_modeuses_PPplusDS, 0 },/*untested*/
- { "Hagaki", canon_PIXMA_iP5000_modeuses_Hagaki, DUPLEX_SUPPORT },/*untested*/
- { "DiscCompat", canon_PIXMA_iP5000_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP5000_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP5000_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP5000_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP5000_modeuses_PPother, 0 },
- { "Transparency", canon_PIXMA_iP5000_modeuses_transparency, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP5000);
-
-/* ----------------------------------- Canon iP5300 ----------------------------------- */
-static const char* canon_PIXMA_iP5300_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not yet supported */
-static const char* canon_PIXMA_iP5300_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP5300_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_PIXMA_iP5300_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP5300_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP5300_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_PIXMA_iP5300_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_iP5300_modeuses_disc[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
- NULL
-};
-
-static const char* canon_PIXMA_iP5300_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP5300_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_iP5300_modeuses[] = {
- { "Plain", canon_PIXMA_iP5300_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_PIXMA_iP5300_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP5300_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP5300_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_PIXMA_iP5300_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP5300_modeuses_PPmatte, 0 },
- { "Coated", canon_PIXMA_iP5300_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_iP5300_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_iP5300_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "CD", canon_PIXMA_iP5300_modeuses_plain, 0 },/*optional using plain*/
- { "DiscCompat", canon_PIXMA_iP5300_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP5300_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP5300_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP5300_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP5300_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP5300);
-
-/* ----------------------------------- Canon iP6000 ----------------------------------- */
-static const char* canon_PIXMA_iP6000_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_PIXMA_iP6000_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP6000_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP6000_modeuses_PPmatte[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo",
- NULL
-};
-
-/*Note: US printer driver does not support inkjetHagaki */
-static const char* canon_PIXMA_iP6000_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/*Note: US printer driver does not support Hagaki */
-static const char* canon_PIXMA_iP6000_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",
- NULL
-};
-
-static const char* canon_PIXMA_iP6000_modeuses_disc[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP6000_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP6000_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
- };
-
-static const char* canon_PIXMA_iP6000_modeuses_transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_iP6000_modeuses[] = {
- { "Plain", canon_PIXMA_iP6000_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "GlossyPro", canon_PIXMA_iP6000_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP6000_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP6000_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP6000_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_iP6000_modeuses_PPplus, 0 },
- { "Coated", canon_PIXMA_iP6000_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_iP6000_modeuses_inkjetHagaki, 0 },/*untested*/
- { "Hagaki", canon_PIXMA_iP6000_modeuses_Hagaki, DUPLEX_SUPPORT },/* untested */
- { "CD", canon_PIXMA_iP6000_modeuses_disc, 0 },/*NOTE:temporary*/
- { "DiscCompat", canon_PIXMA_iP6000_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP6000_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP6000_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP6000_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP6000_modeuses_PPother, 0 },
- { "Transparency", canon_PIXMA_iP6000_modeuses_transparency, 0 },
- };
-
-DECLARE_MODEUSES(canon_PIXMA_iP6000);
-
-/* ----------------------------------- Canon iP6100 ----------------------------------- */
-static const char* canon_PIXMA_iP6100_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_PIXMA_iP6100_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP6100_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP6100_modeuses_PPmatte[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP6100_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh2",/*untested*/
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP6100_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",
- NULL
-};
-
-static const char* canon_PIXMA_iP6100_modeuses_disc[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP6100_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP6100_modeuses_PPother[] = {
- "600x600dpi_photohigh",/*untested*/
- NULL
- };
-
-static const char* canon_PIXMA_iP6100_modeuses_transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_iP6100_modeuses[] = {
- { "Plain", canon_PIXMA_iP6100_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "GlossyPro", canon_PIXMA_iP6100_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP6100_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP6100_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP6100_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_iP6100_modeuses_PPplus, 0 },
- { "Coated", canon_PIXMA_iP6100_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_iP6100_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_iP6100_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "CD", canon_PIXMA_iP6100_modeuses_disc, 0 },/*NOTE:identical, so combined*/
- { "TShirt", canon_PIXMA_iP6100_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP6100_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP6100_modeuses_PPother, 0 },
- { "Transparency", canon_PIXMA_iP6100_modeuses_transparency, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP6100);
-
-/* ----------------------------------- Canon iP6210 ----------------------------------- */
-static const char* canon_PIXMA_iP6210_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- /* Color */
- "600x600dpi_high2",
- "600x600dpi_std2",
- "300x300dpi_std2",
- "300x300dpi_draft2",
- NULL
- };
-
-static const char* canon_PIXMA_iP6210_modeuses_PPpro[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- /* Color */
- "1200x1200dpi_photohigh4",
- "600x600dpi_photohigh3",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP6210_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- /* Color */
- "600x600dpi_photohigh5",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP6210_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- /* Color */
- "600x600dpi_photohigh5",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP6210_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- "600x600dpi_draft4",
- NULL
-};
-
-static const char* canon_PIXMA_iP6210_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- /* Color */
- "600x600dpi_std5",
- NULL
-};
-
-static const char* canon_PIXMA_iP6210_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",/*untested*/
- /* Color */
- "600x600dpi_photohigh3",
- "600x600dpi_photo2",/*untested*/
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_iP6210_modeuses[] = {
- { "Plain", canon_PIXMA_iP6210_modeuses_plain, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL },
- { "GlossyPro", canon_PIXMA_iP6210_modeuses_PPpro, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL },
- { "PhotopaperPlus", canon_PIXMA_iP6210_modeuses_PPplus, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL },
- { "PhotopaperPlusDouble", canon_PIXMA_iP6210_modeuses_PPplusDS, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL },
- { "PhotopaperMatte", canon_PIXMA_iP6210_modeuses_PPplusDS, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL },
- { "GlossyPaper", canon_PIXMA_iP6210_modeuses_PPplusDS, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL },
- { "Coated", canon_PIXMA_iP6210_modeuses_PPplusDS, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL },
- { "InkJetHagaki", canon_PIXMA_iP6210_modeuses_PPplusDS, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL },
- { "Hagaki", canon_PIXMA_iP6210_modeuses_Hagaki, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_PIXMA_iP6210_modeuses_TShirt, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL },
- { "Envelope", canon_PIXMA_iP6210_modeuses_Hagaki, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_PIXMA_iP6210_modeuses_PPother, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iP6210);
-
-/* ----------------------------------- Canon iP6600 ----------------------------------- */
-static const char* canon_PIXMA_iP6600_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not yet supported */
-static const char* canon_PIXMA_iP6600_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP6600_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP6600_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP6600_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_PIXMA_iP6600_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",
- NULL
-};
-
-static const char* canon_PIXMA_iP6600_modeuses_disc[] = {
- "600x600dpi_photohigh5",
- "600x600dpi_photo5",
- "600x600dpi_photodraft5",
- NULL
-};
-
-static const char* canon_PIXMA_iP6600_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP6600_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_iP6600_modeuses[] = {
- { "Plain", canon_PIXMA_iP6600_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_PIXMA_iP6600_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP6600_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP6600_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP6600_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_iP6600_modeuses_PPplus, 0 },
- { "Coated", canon_PIXMA_iP6600_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_iP6600_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_iP6600_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_PIXMA_iP6600_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP6600_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP6600_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP6600_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP6600_modeuses_PPother, 0 },
- };
-
-DECLARE_MODEUSES(canon_PIXMA_iP6600);
-
-/* ----------------------------------- Canon iP6700 ----------------------------------- */
-static const char* canon_PIXMA_iP6700_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not yet supported */
-static const char* canon_PIXMA_iP6700_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP6700_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP6700_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP6700_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_PIXMA_iP6700_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",
- NULL
-};
-
-static const char* canon_PIXMA_iP6700_modeuses_FA[] = {
- "600x600dpi_photohigh",
- NULL
-};
-
-static const char* canon_PIXMA_iP6700_modeuses_disc[] = {
- "600x600dpi_photohigh5",
- "600x600dpi_photo5",
- "600x600dpi_photodraft5",
- NULL
-};
-
-static const char* canon_PIXMA_iP6700_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP6700_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_iP6700_modeuses[] = {
- { "Plain", canon_PIXMA_iP6700_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_PIXMA_iP6700_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP6700_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP6700_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP6700_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_iP6700_modeuses_PPplus, 0 },
- { "Coated", canon_PIXMA_iP6700_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_iP6700_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_iP6700_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "FineArtPhotoRag", canon_PIXMA_iP6700_modeuses_FA, 0 },
- { "FineArtOther", canon_PIXMA_iP6700_modeuses_FA, 0 },
- { "DiscCompat", canon_PIXMA_iP6700_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP6700_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP6700_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP6700_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iP6700_modeuses_PPother, 0 },
- };
-
-DECLARE_MODEUSES(canon_PIXMA_iP6700);
-
-/* ----------------------------------- Canon iP7100 ----------------------------------- */
-static const char* canon_PIXMA_iP7100_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "600x600dpi_draft",
- "600x600dpi_draft2",
- /* Mono */
- "600x600dpi_mono",
- "600x600dpi_draftmono",
- NULL
- };
-
-static const char* canon_PIXMA_iP7100_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-
-static const char* canon_PIXMA_iP7100_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP7100_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-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_draft3",
- /* Mono */
- "600x600dpi_mono",
- NULL
-};
-
-static const char* canon_PIXMA_iP7100_modeuses_FA[] = {
- "600x600dpi_photohigh3",
- NULL
-};
-
-static const char* canon_PIXMA_iP7100_modeuses_disc[] = {
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_PIXMA_iP7100_modeuses_TShirt[] = {
- "600x600dpi",
- NULL
-};
-
-static const char* canon_PIXMA_iP7100_modeuses_Transparency[] = {
- "600x600dpi_std4",
- "600x600dpi_draft4",
- NULL
-};
-
-/*untested*/
-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 },
- { "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 },
- { "Envelope", canon_PIXMA_iP7100_modeuses_Hagaki, 0 },
- { "Transparency", canon_PIXMA_iP7100_modeuses_Transparency, 0 },
- { "PhotopaperOther", canon_PIXMA_iP7100_modeuses_PPother, 0 },/*untested*/
- };
-
-DECLARE_MODEUSES(canon_PIXMA_iP7100);
-
-/* ----------------------------------- Canon iP7500 ----------------------------------- */
-static const char* canon_PIXMA_iP7500_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest modes not yet supported */
-static const char* canon_PIXMA_iP7500_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-
-static const char* canon_PIXMA_iP7500_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP7500_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP7500_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",
- NULL
-};
-
-static const char* canon_PIXMA_iP7500_modeuses_FA[] = {
- "600x600dpi_photohigh3",
- NULL
-};
-
-static const char* canon_PIXMA_iP7500_modeuses_disc[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
- NULL
-};
-
-static const char* canon_PIXMA_iP7500_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-/*untested*/
-static const char* canon_PIXMA_iP7500_modeuses_Transparency[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP7500_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_iP7500_modeuses[] = {
- { "Plain", canon_PIXMA_iP7500_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_PIXMA_iP7500_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP7500_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP7500_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP7500_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_iP7500_modeuses_PPplus, 0 },
- { "Coated", canon_PIXMA_iP7500_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_iP7500_modeuses_PPplus, 0 },
- { "Hagaki", canon_PIXMA_iP7500_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "FineArtPhotoRag", canon_PIXMA_iP7500_modeuses_FA, 0 },
- { "FineArtOther", canon_PIXMA_iP7500_modeuses_FA, 0 },
- { "DiscCompat", canon_PIXMA_iP7500_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP7500_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP7500_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iP7500_modeuses_Hagaki, 0 },
- { "Transparency", canon_PIXMA_iP7500_modeuses_Transparency, 0 },/*untested*/
- { "PhotopaperOther", canon_PIXMA_iP7500_modeuses_PPother, 0 },
- };
-
-DECLARE_MODEUSES(canon_PIXMA_iP7500);
-
-/* ----------------------------------- Canon iP8100 ----------------------------------- */
-static const char* canon_PIXMA_iP8100_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "600x600dpi_draft",
- "600x600dpi_draft2",
- /* Mono */
- "600x600dpi_mono",
- "600x600dpi_draftmono",
- NULL
- };
-
-/* no support for modes using R yet */
-static const char* canon_PIXMA_iP8100_modeuses_PPpro[] = {
- "600x600dpi_photohigh",/*untested*/
- "600x600dpi_photo",
- NULL
-};
-
-
-static const char* canon_PIXMA_iP8100_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_PIXMA_iP8100_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP8100_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iP8100_modeuses_PPgloss[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-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_draft3",
- /* Mono */
- "600x600dpi_mono",
- NULL
-};
-
-static const char* canon_PIXMA_iP8100_modeuses_FA[] = {
- "600x600dpi_photohigh3",
- NULL
-};
-
-static const char* canon_PIXMA_iP8100_modeuses_disc[] = {
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_PIXMA_iP8100_modeuses_TShirt[] = {
- "600x600dpi",
- NULL
-};
-
-static const char* canon_PIXMA_iP8100_modeuses_Transparency[] = {
- "600x600dpi_std4",
- "600x600dpi_draft4",
- NULL
-};
-
-/*untested*/
-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 },
- { "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 },
- { "Envelope", canon_PIXMA_iP8100_modeuses_Hagaki, 0 },
- { "Transparency", canon_PIXMA_iP8100_modeuses_Transparency, 0 },
- { "PhotopaperOther", canon_PIXMA_iP8100_modeuses_PPother, 0 },/*untested*/
- };
-
-DECLARE_MODEUSES(canon_PIXMA_iP8100);
-
-/* ----------------------------------- Canon iP8500 ----------------------------------- */
-static const char* canon_PIXMA_iP8500_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* modes not yet supported */
-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[] = {
- "600x600dpi_photodraft",
- NULL
-};
-
-/* most modes unsupported */
-static const char* canon_PIXMA_iP8500_modeuses_PPplusDS[] = {
- "600x600dpi_photodraft2",
- NULL
-};
-
-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[] = {
- "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_draft3",
- NULL
-};
-
-static const char* canon_PIXMA_iP8500_modeuses_disc[] = {
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_PIXMA_iP8500_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_iP8500_modeuses_Transparency[] = {
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
- NULL
-};
-
-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*/
- { "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 },
- { "Envelope", canon_PIXMA_iP8500_modeuses_Hagaki, 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_draft",
- "600x600dpi_draft2",
- /* Mono */
- "600x600dpi_mono",
- "600x600dpi_draftmono",
- NULL
- };
-
-/* modes using R not yet supported */
-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",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_PIXMA_iP8600_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP8600_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-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_draft3",
- /* Mono */
- "600x600dpi_mono",
- NULL
-};
-
-static const char* canon_PIXMA_iP8600_modeuses_FA[] = {
- "600x600dpi_photohigh4",
- NULL
-};
-
-static const char* canon_PIXMA_iP8600_modeuses_disc[] = {
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_PIXMA_iP8600_modeuses_TShirt[] = {
- "600x600dpi",
- NULL
-};
-
-static const char* canon_PIXMA_iP8600_modeuses_Transparency[] = {
- "600x600dpi_std4",
- "600x600dpi_draft4",
- NULL
-};
-
-/*untested*/
-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 },
- { "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 },
- { "Envelope", canon_PIXMA_iP8600_modeuses_Hagaki, 0 },
- { "Transparency", canon_PIXMA_iP8600_modeuses_Transparency, 0 },
- { "PhotopaperOther", canon_PIXMA_iP8600_modeuses_PPother, 0 },/*untested*/
- };
-
-DECLARE_MODEUSES(canon_PIXMA_iP8600);
-
-/* ----------------------------------- Canon iP9910 ----------------------------------- */
-static const char* canon_PIXMA_iP9910_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "600x600dpi_draft",
- "600x600dpi_draft2",
- /* Mono */
- "600x600dpi_mono",
- "600x600dpi_draftmono",
- NULL
- };
-
-/* highest mode using R not yet supported */
-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[] = {
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_PIXMA_iP9910_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iP9910_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-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_draft3",
- /* Mono */
- "600x600dpi_mono",
- NULL
-};
-
-static const char* canon_PIXMA_iP9910_modeuses_FA[] = {
- "600x600dpi_photohigh4",
- NULL
-};
-
-static const char* canon_PIXMA_iP9910_modeuses_disc[] = {
- "600x600dpi_photo2",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_PIXMA_iP9910_modeuses_TShirt[] = {
- "600x600dpi",
- NULL
-};
-
-static const char* canon_PIXMA_iP9910_modeuses_Transparency[] = {
- "600x600dpi_std4",
- "600x600dpi_draft4",
- NULL
-};
-
-/*untested*/
-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 },
- { "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 },
- { "Envelope", canon_PIXMA_iP9910_modeuses_Hagaki, 0 },
- { "Transparency", canon_PIXMA_iP9910_modeuses_Transparency, 0 },
- { "PhotopaperOther", canon_PIXMA_iP9910_modeuses_PPother, 0 },
- };
-
-DECLARE_MODEUSES(canon_PIXMA_iP9910);
-
-/* ----------------------------------- Canon iX4000 ----------------------------------- */
-static const char* canon_PIXMA_iX4000_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not supported yet */
-static const char* canon_PIXMA_iX4000_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iX4000_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_PIXMA_iX4000_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iX4000_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_PIXMA_iX4000_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_iX4000_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-/* US driver does not have this media */
-static const char* canon_PIXMA_iX4000_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-/* US driver does not have this media */
-static const char* canon_PIXMA_iX4000_modeuses_Transparency[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_iX4000_modeuses[] = {
- { "Plain", canon_PIXMA_iX4000_modeuses_plain, 0 },
- { "GlossyPro", canon_PIXMA_iX4000_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iX4000_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iX4000_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_PIXMA_iX4000_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_PIXMA_iX4000_modeuses_PPplusDS, 0 },
- { "Coated", canon_PIXMA_iX4000_modeuses_PPplusDS, 0 },
- { "InkJetHagaki", canon_PIXMA_iX4000_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_iX4000_modeuses_Hagaki, 0 },
- { "TShirt", canon_PIXMA_iX4000_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iX4000_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iX4000_modeuses_PPother, 0 },/*Note: US driver does not have this media*/
- { "Transparency", canon_PIXMA_iX4000_modeuses_Transparency, 0 },/*Note: US driver does not have this media */
- };
-
-DECLARE_MODEUSES(canon_PIXMA_iX4000);
-
-/* ----------------------------------- Canon iX5000 ----------------------------------- */
-static const char* canon_PIXMA_iX5000_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not supported yet */
-static const char* canon_PIXMA_iX5000_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iX5000_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_PIXMA_iX5000_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iX5000_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_PIXMA_iX5000_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_iX5000_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-/* US driver does not have this media */
-static const char* canon_PIXMA_iX5000_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_iX5000_modeuses[] = {
- { "Plain", canon_PIXMA_iX5000_modeuses_plain, 0 },
- { "GlossyPro", canon_PIXMA_iX5000_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iX5000_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iX5000_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_PIXMA_iX5000_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_PIXMA_iX5000_modeuses_PPplusDS, 0 },
- { "Coated", canon_PIXMA_iX5000_modeuses_PPplusDS, 0 },
- { "InkJetHagaki", canon_PIXMA_iX5000_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_iX5000_modeuses_Hagaki, 0 },
- { "TShirt", canon_PIXMA_iX5000_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iX5000_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iX5000_modeuses_PPother, 0 },/*Note: US driver does not have this media*/
- { "Transparency", canon_PIXMA_iX5000_modeuses_inkjetHagaki, 0 },/*Note: US driver does not have this media */
- };
-
-DECLARE_MODEUSES(canon_PIXMA_iX5000);
-
-/* ----------------------------------- Canon iX6500 ----------------------------------- */
-static const char* canon_PIXMA_iX6500_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-
-static const char* canon_PIXMA_iX6500_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* highest mode not supported yet */
-static const char* canon_PIXMA_iX6500_modeuses_PPproPlat[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_iX6500_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_iX6500_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_PIXMA_iX6500_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_iX6500_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-/*untested*/
-static const char* canon_PIXMA_iX6500_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_iX6500_modeuses[] = {
- { "Plain", canon_PIXMA_iX6500_modeuses_plain, 0 },
- { "PhotoPlusGloss2", canon_PIXMA_iX6500_modeuses_PPplusG2, 0 },
- { "PhotoProPlat", canon_PIXMA_iX6500_modeuses_PPproPlat, 0 },
- { "PhotoProSemiGloss",canon_PIXMA_iX6500_modeuses_PPplusG2, 0 },
- { "GlossyPaper", canon_PIXMA_iX6500_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_PIXMA_iX6500_modeuses_PPmatte, 0 },
- { "Coated", canon_PIXMA_iX6500_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_iX6500_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_PIXMA_iX6500_modeuses_PPplusG2, 0 },
- { "HagakiA", canon_PIXMA_iX6500_modeuses_Hagaki, 0 },
- { "Hagaki", canon_PIXMA_iX6500_modeuses_Hagaki, 0 },
- { "TShirt", canon_PIXMA_iX6500_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_iX6500_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_iX6500_modeuses_PPother, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iX6500);
-
-/* ----------------------------------- Canon iX7000 ----------------------------------- */
-static const char* canon_PIXMA_iX7000_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-
-static const char* canon_PIXMA_iX7000_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",/*untested*/
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_PIXMA_iX7000_modeuses_PPproPlat[] = {
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-/* highest mode not supported yet */
-static const char* canon_PIXMA_iX7000_modeuses_PPsemigloss[] = {
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_PIXMA_iX7000_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_PIXMA_iX7000_modeuses_Hagaki[] = {
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_PIXMA_iX7000_modeuses_FA[] = {
- "600x600dpi_photo3",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_iX7000_modeuses[] = {
- { "Plain", canon_PIXMA_iX7000_modeuses_plain, DUPLEX_SUPPORT },
- { "PhotoPlusGloss2", canon_PIXMA_iX7000_modeuses_PPplusG2, 0 },
- { "PhotoProPlat", canon_PIXMA_iX7000_modeuses_PPproPlat, 0 },
- { "PhotoProSemiGloss",canon_PIXMA_iX7000_modeuses_PPsemigloss, 0 },
- { "PhotopaperMatte", canon_PIXMA_iX7000_modeuses_PPproPlat, 0 },
- { "InkJetHagaki", canon_PIXMA_iX7000_modeuses_inkjetHagaki, 0 },
- { "HagakiA", canon_PIXMA_iX7000_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "Hagaki", canon_PIXMA_iX7000_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "FineArtPhotoRag", canon_PIXMA_iX7000_modeuses_FA, 0 },
- { "FineArtOther", canon_PIXMA_iX7000_modeuses_FA, 0 },
- { "Envelope", canon_PIXMA_iX7000_modeuses_Hagaki, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_iX7000);
-
-/* ----------------------------------- Canon MP150 ----------------------------------- */
-static const char* canon_MULTIPASS_MP150_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- /* mono */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",/*untested*/
- "300x300dpi_mono",
- "300x300dpi_draftmono",
- /* color-only */
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",/*untested*/
- "300x300dpi_std3",
- "300x300dpi_draft3",
- NULL
- };
-
-static const char* canon_MULTIPASS_MP150_modeuses_PPpro[] = {
- "1200x1200dpi_photohigh3",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP150_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP150_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP150_modeuses_PPgloss[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP150_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",
- /* mono */
- "600x600dpi_highmono2",
- "600x600dpi_mono2",
- "600x600dpi_draftmono2",
- /* color-only */
- "600x600dpi_high4",
- "600x600dpi_std4",
- "600x600dpi_draft4",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP150_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP150_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",/*untested*/
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MP150_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP150_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "GlossyPro", canon_MULTIPASS_MP150_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotopaperPlus", canon_MULTIPASS_MP150_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP150_modeuses_PPplusDS, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MP150_modeuses_PPplusDS, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MP150_modeuses_PPgloss, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MP150_modeuses_PPplusDS, INKSET_COLOR_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MP150_modeuses_PPplusDS, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MP150_modeuses_Hagaki, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_MP150_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MP150_modeuses_Hagaki, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MP150_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP150);
-
-/* ----------------------------------- Canon MP190 ----------------------------------- */
-static const char* canon_MULTIPASS_MP190_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- /* Mono */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",/*untested*/
- "300x300dpi_mono",
- "300x300dpi_draftmono",
- /* Color */
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",/*untested*/
- "300x300dpi_std3",
- "300x300dpi_draft3",
- NULL
- };
-
-static const char* canon_MULTIPASS_MP190_modeuses_PPpro[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP190_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP190_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP190_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",/*untested*/
- /* Mono */
- "600x600dpi_highmono2",
- "600x600dpi_mono2",
- "600x600dpi_draftmono2",/*untested*/
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- "600x600dpi_draft4",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP190_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP190_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",/*untested*/
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MP190_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP190_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MP190_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoPro2", canon_MULTIPASS_MP190_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "GlossyPro", canon_MULTIPASS_MP190_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotopaperPlus", canon_MULTIPASS_MP190_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss",canon_MULTIPASS_MP190_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MP190_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MP190_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MP190_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MP190_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MP190_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_MP190_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MP190_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MP190_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP190);
-
-/* ----------------------------------- Canon MP210 ----------------------------------- */
-static const char* canon_MULTIPASS_MP210_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- /* Mono */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",/*untested*/
- "300x300dpi_mono",
- "300x300dpi_draftmono",
- /* Color */
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",/*untested*/
- "300x300dpi_std3",
- "300x300dpi_draft3",
- NULL
- };
-
-static const char* canon_MULTIPASS_MP210_modeuses_PPpro[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested here*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP210_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP210_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested here*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP210_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- "600x600dpi_photodraft",/*untested here*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP210_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",/*untested*/
- /* Mono */
- "600x600dpi_highmono2",
- "600x600dpi_mono2",
- "600x600dpi_draftmono2",/*untested*/
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- "600x600dpi_draft4",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP210_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP210_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",/*untested*/
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MP210_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP210_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "GlossyPro", canon_MULTIPASS_MP210_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotopaperPlus", canon_MULTIPASS_MP210_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP210_modeuses_PPplusDS, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MP210_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MP210_modeuses_PPplusDS, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MP210_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MP210_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MP210_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_MP210_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MP210_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MP210_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP210);
-
-/* ----------------------------------- Canon MP240 ----------------------------------- */
-static const char* canon_MULTIPASS_MP240_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- /* Mono */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",/*untested*/
- "300x300dpi_mono",
- "300x300dpi_draftmono",
- /* Color */
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",/*untested*/
- "300x300dpi_std3",
- "300x300dpi_draft3",
- NULL
- };
-
-static const char* canon_MULTIPASS_MP240_modeuses_PPpro[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP240_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP240_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",/*untested*/
- /* Mono */
- "600x600dpi_highmono2",
- "600x600dpi_mono2",
- "600x600dpi_draftmono2",/*untested*/
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- "600x600dpi_draft4",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP240_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP240_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP240_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP240_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL},
- { "PhotoPlusGloss2", canon_MULTIPASS_MP240_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotoPro2", canon_MULTIPASS_MP240_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_MULTIPASS_MP240_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss", canon_MULTIPASS_MP240_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MP240_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MP240_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MP240_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MP240_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MP240_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_MP240_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MP240_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MP240_modeuses_PPother, INKSET_COLOR_SUPPORT },
- };
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP240);
-
-/* ----------------------------------- Canon MP250 ----------------------------------- */
-static const char* canon_MULTIPASS_MP250_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",/*untested*/
- /* mono */
- "600x600dpi_highmono",
- "600x600dpi_highmono2",/* duplex */
- "600x600dpi_mono",
- "600x600dpi_draftmono",/*untested*/
- "300x300dpi_mono",
- "300x300dpi_draftmono",/*untested*/
- /* color-only --- no special duplex */
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",/*untested*/
- "300x300dpi_std3",
- "300x300dpi_draft3",/*untested*/
- NULL
- };
-
-static const char* canon_MULTIPASS_MP250_modeuses_PPpro[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP250_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP250_modeuses_Hagaki[] = {
- "600x600dpi_high5",
- "600x600dpi_std2",
- "600x600dpi_draft2",/*untested*/
- /* mono */
- "600x600dpi_highmono5",
- "600x600dpi_mono2",
- "600x600dpi_draftmono2",/*untested*/
- /* color-only */
- "600x600dpi_high4",
- "600x600dpi_std4",
- "600x600dpi_draft4",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP250_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP250_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MP250_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP250_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL},
- { "PhotoPlusGloss2", canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotoPro2", canon_MULTIPASS_MP250_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss",canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "HagakiA", canon_MULTIPASS_MP250_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "CanonPhotoHagakiK",canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "ProPhotoHagakiP", canon_MULTIPASS_MP250_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MP250_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT},
- { "TShirt", canon_MULTIPASS_MP250_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MP250_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MP250_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP250);
-
-/* ----------------------------------- Canon MP280 ----------------------------------- */
-static const char* canon_MULTIPASS_MP280_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",/*untested*/
- /* Mono */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",/*untested*/
- "300x300dpi_mono",
- "300x300dpi_draftmono",/*untested*/
- /* Color */
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",/*untested*/
- "300x300dpi_std3",
- "300x300dpi_draft3",/*untested*/
- NULL
- };
-
-static const char* canon_MULTIPASS_MP280_modeuses_PPproPlat[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP280_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP280_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",/*untested*/
- /* Mono */
- "600x600dpi_highmono2",
- "600x600dpi_mono2",
- "600x600dpi_draftmono2",/*untested*/
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- "600x600dpi_draft4",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP280_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP280_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP280_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP280_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL},
- { "PhotoPlusGloss2", canon_MULTIPASS_MP280_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_MULTIPASS_MP280_modeuses_PPproPlat, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss", canon_MULTIPASS_MP280_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MP280_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MP280_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MP280_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "HagakiA", canon_MULTIPASS_MP280_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "InkJetHagaki", canon_MULTIPASS_MP280_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "CanonPhotoHagakiK", canon_MULTIPASS_MP280_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MP280_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_MP280_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MP280_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MP280_modeuses_PPother, INKSET_COLOR_SUPPORT },
- };
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP280);
-
-/* ----------------------------------- Canon MP360 ----------------------------------- */
-static const char* canon_MULTIPASS_MP360_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_highmono",/* mono */
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_MULTIPASS_MP360_modeuses_PPpro[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP360_modeuses_PPplus[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP360_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP360_modeuses_PPgloss[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP360_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_highmono2",/* mono */
- "600x600dpi_std2",
- "600x600dpi_draft2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP360_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP360_modeuses_Transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MP360_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP360_modeuses_plain, 0 },
- { "GlossyPro", canon_MULTIPASS_MP360_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_MULTIPASS_MP360_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP360_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP360_modeuses_PPgloss, 0 },
- { "Coated", canon_MULTIPASS_MP360_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP360_modeuses_PPmatte, 0 },
- { "Hagaki", canon_MULTIPASS_MP360_modeuses_Hagaki, 0 },
- { "TShirt", canon_MULTIPASS_MP360_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP360_modeuses_Hagaki, 0 },
- { "Transparency", canon_MULTIPASS_MP360_modeuses_Transparency, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP360);
-
-/* ----------------------------------- Canon MP470 ----------------------------------- */
-static const char* canon_MULTIPASS_MP470_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- /* Mono */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",/*untested*/
- "300x300dpi_mono",
- "300x300dpi_draftmono",
- /* Color */
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",/*untested*/
- "300x300dpi_std2",
- "300x300dpi_draft2",
- NULL
- };
-
-/* high mode not supported yet */
-static const char* canon_MULTIPASS_MP470_modeuses_PPpro[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP470_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP470_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP470_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP470_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",
- /* Mono */
- "600x600dpi_highmono3",
- "600x600dpi_mono3",
- "600x600dpi_draftmono3",
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- "600x600dpi_draft4",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP470_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP470_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",/*untested*/
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MP470_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP470_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL},
- { "GlossyPro", canon_MULTIPASS_MP470_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotopaperPlus", canon_MULTIPASS_MP470_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP470_modeuses_PPplusDS, INKSET_COLOR_SUPPORT },
- { "PhotoPlusGloss2", canon_MULTIPASS_MP470_modeuses_PPplusDS, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MP470_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MP470_modeuses_PPplusDS, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MP470_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MP470_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MP470_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_MP470_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MP470_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MP470_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP470);
-
-/* ----------------------------------- Canon MP480 ----------------------------------- */
-static const char* canon_MULTIPASS_MP480_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- /* Mono */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",/*untested*/
- "300x300dpi_mono",
- "300x300dpi_draftmono",
- /* Color */
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",/*untested*/
- "300x300dpi_std2",
- "300x300dpi_draft2",
- NULL
- };
-
-static const char* canon_MULTIPASS_MP480_modeuses_PPpro[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP480_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP480_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- /* Mono */
- "600x600dpi_highmono3",
- "600x600dpi_mono3",
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP480_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP480_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP480_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP480_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL},
- { "PhotoPlusGloss2", canon_MULTIPASS_MP480_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotoPro2", canon_MULTIPASS_MP480_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_MULTIPASS_MP480_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MP480_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MP480_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MP480_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MP480_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MP480_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_MP480_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MP480_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MP480_modeuses_PPother, INKSET_COLOR_SUPPORT },
- };
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP480);
-
-/* ----------------------------------- Canon MP490 ----------------------------------- */
-static const char* canon_MULTIPASS_MP490_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",
- "300x300dpi",
- "300x300dpi_draft",/*untested*/
- /* Mono */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",
- "300x300dpi_mono",
- "300x300dpi_draftmono",/*untested*/
- /* Color */
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",
- "300x300dpi_std3",
- "300x300dpi_draft3",/*untested*/
- NULL
- };
-
-static const char* canon_MULTIPASS_MP490_modeuses_PPpro[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP490_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP490_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- /* Mono */
- "600x600dpi_highmono2",
- "600x600dpi_mono2",
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP490_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP490_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",/*untested*/
- "600x600dpi_photodraft",/*untested*/
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP490_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP490_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL},
- { "PhotoPro2", canon_MULTIPASS_MP490_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotoPlusGloss2", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "ProPhotoHagakiP", canon_MULTIPASS_MP490_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "CanonPhotoHagakiK", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "HagakiA", canon_MULTIPASS_MP490_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "Hagaki", canon_MULTIPASS_MP490_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_MP490_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MP490_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MP490_modeuses_PPother, INKSET_COLOR_SUPPORT },
- };
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP490);
-
-/* ----------------------------------- Canon MP493 ----------------------------------- */
-static const char* canon_MULTIPASS_MP493_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- /* Mono */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",/*untested*/
- "300x300dpi_mono",
- "300x300dpi_draftmono",
- /* Color */
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",/*untested*/
- "300x300dpi_std2",
- "300x300dpi_draft2",
- NULL
- };
-
-static const char* canon_MULTIPASS_MP493_modeuses_PPpro[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP493_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP493_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- /* Mono */
- "600x600dpi_highmono3",
- "600x600dpi_mono3",
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP493_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP493_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP493_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP493_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL},
- { "PhotoPlusGloss2", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotoPro2", canon_MULTIPASS_MP493_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "HagakiA", canon_MULTIPASS_MP493_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "InkJetHagaki", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "CanonPhotoHagakiK", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "ProPhotoHagakiP", canon_MULTIPASS_MP493_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MP493_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_MP493_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MP493_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MP493_modeuses_PPother, INKSET_COLOR_SUPPORT },
- };
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP493);
-
-/* ----------------------------------- Canon MP520 ----------------------------------- */
-static const char* canon_MULTIPASS_MP520_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MP520_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP520_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP520_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP520_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_draft3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP520_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP520_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP520_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP520_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP520_modeuses_plain, 0 },
- { "GlossyPro", canon_MULTIPASS_MP520_modeuses_PPpro, 0 },
- { "PhotoPlusGloss2", canon_MULTIPASS_MP520_modeuses_PPplus, 0 },
- { "PhotopaperPlus", canon_MULTIPASS_MP520_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP520_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP520_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP520_modeuses_PPplusDS, 0 },
- { "Coated", canon_MULTIPASS_MP520_modeuses_PPplusDS, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP520_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP520_modeuses_Hagaki, 0 },
- { "TShirt", canon_MULTIPASS_MP520_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP520_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP520_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP520);
-
-/* ----------------------------------- Canon MP530 ----------------------------------- */
-static const char* canon_MULTIPASS_MP530_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* most photo modes not yet supported */
-static const char* canon_MULTIPASS_MP530_modeuses_PPpro[] = {
- "600x600dpi_photodraft",/*temporary stand-in*/
- NULL
-};
-
-/* only draft available */
-static const char* canon_MULTIPASS_MP530_modeuses_PPplus[] = {
- "600x600dpi_photodraft",
- NULL
-};
-
-/*most photo modes not yet supported */
-static const char* canon_MULTIPASS_MP530_modeuses_PPplusDS[] = {
- "600x600dpi_photodraft",/*temporary stand-in*/
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MP530_modeuses_inkjetHagaki[] = {
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP530_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP530_modeuses_disc[] = {
- "600x600dpi_photodraft",/*temporary stand-in*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP530_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP530_modeuses_PPother[] = {
- "600x600dpi_photodraft",/*temporary stand-in*/
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP530_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP530_modeuses_plain, 0 },
- { "GlossyPro", canon_MULTIPASS_MP530_modeuses_PPpro, 0 },/*not supported yet*/
- { "PhotopaperPlus", canon_MULTIPASS_MP530_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP530_modeuses_PPplusDS, 0 },/*not supported yet*/
- { "GlossyPaper", canon_MULTIPASS_MP530_modeuses_PPplusDS, 0 },/*not supported yet*/
- { "PhotopaperMatte", canon_MULTIPASS_MP530_modeuses_PPplusDS, 0 },/*not supported yet*/
- { "Coated", canon_MULTIPASS_MP530_modeuses_PPplusDS, 0 },/*not supported yet*/
- { "InkJetHagaki", canon_MULTIPASS_MP530_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP530_modeuses_Hagaki, 0 },
- { "CD", canon_MULTIPASS_MP530_modeuses_plain, 0 },/*NOTE:temporary replacement*/
- { "DiscCompat", canon_MULTIPASS_MP530_modeuses_disc, 0 },/*not supported yet*/
- { "DiscOthers", canon_MULTIPASS_MP530_modeuses_disc, 0 },/*not supported yet*/
- { "TShirt", canon_MULTIPASS_MP530_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP530_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP530_modeuses_PPother, 0 },/*not supported yet*/
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP530);
-
-/* ----------------------------------- Canon MP540 ----------------------------------- */
-static const char* canon_MULTIPASS_MP540_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MP540_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP540_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP540_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP540_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP540_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP540_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP540_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP540_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP540_modeuses_plain, 0 },
- { "PhotoPlusGloss2", canon_MULTIPASS_MP540_modeuses_PPplusG2, 0 },
- { "PhotoPro2", canon_MULTIPASS_MP540_modeuses_PPpro, 0 },
- { "PhotoProPlat", canon_MULTIPASS_MP540_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP540_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP540_modeuses_PPplusG2, 0 },
- { "PhotoProSemiGloss", canon_MULTIPASS_MP540_modeuses_PPplusG2, 0 },
- { "Coated", canon_MULTIPASS_MP540_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP540_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP540_modeuses_Hagaki, 0 },
- { "TShirt", canon_MULTIPASS_MP540_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP540_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP540_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP540);
-
-/* ----------------------------------- Canon MP550 ----------------------------------- */
-static const char* canon_MULTIPASS_MP550_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- NULL
- };
-
-/*highest mode not supported yet*/
-static const char* canon_MULTIPASS_MP550_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP550_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP550_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP550_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP550_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP550_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP550_modeuses_PPother[] = {
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP550_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP550_modeuses_plain, 0 },
- { "PhotoPlusGloss2", canon_MULTIPASS_MP550_modeuses_PPplusG2, 0 },
- { "PhotoPro2", canon_MULTIPASS_MP550_modeuses_PPpro, 0 },
- { "PhotoProPlat", canon_MULTIPASS_MP550_modeuses_PPplusG2, 0 },
- { "PhotoProSemiGloss",canon_MULTIPASS_MP550_modeuses_PPplusG2, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP550_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP550_modeuses_PPmatte, 0 },
- { "Coated", canon_MULTIPASS_MP550_modeuses_PPmatte, 0 },
- { "HagakiA", canon_MULTIPASS_MP550_modeuses_Hagaki, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP550_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_MULTIPASS_MP550_modeuses_PPplusG2, 0 },
- { "ProPhotoHagakiP", canon_MULTIPASS_MP550_modeuses_PPplusG2, 0 },
- { "Hagaki", canon_MULTIPASS_MP550_modeuses_Hagaki, 0 },
- { "TShirt", canon_MULTIPASS_MP550_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP550_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP550_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP550);
-
-/* ----------------------------------- Canon MP560 ----------------------------------- */
-static const char* canon_MULTIPASS_MP560_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high",/* duplex */
- "600x600dpi",
- "300x300dpi",
- NULL
- };
-
-/*highest mode not supported yet*/
-static const char* canon_MULTIPASS_MP560_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP560_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP560_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP560_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP560_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP560_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP560_modeuses_PPother[] = {
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP560_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP560_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MP560_modeuses_PPplusG2, 0 },
- { "PhotoPro2", canon_MULTIPASS_MP560_modeuses_PPpro, 0 },
- { "PhotoProPlat", canon_MULTIPASS_MP560_modeuses_PPplusG2, 0 },
- { "PhotoProSemiGloss",canon_MULTIPASS_MP560_modeuses_PPplusG2, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP560_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP560_modeuses_PPmatte, 0 },
- { "Coated", canon_MULTIPASS_MP560_modeuses_PPmatte, 0 },
- { "HagakiA", canon_MULTIPASS_MP560_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MP560_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_MULTIPASS_MP560_modeuses_PPplusG2, 0 },
- { "ProPhotoHagakiP", canon_MULTIPASS_MP560_modeuses_PPplusG2, 0 },
- { "Hagaki", canon_MULTIPASS_MP560_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "TShirt", canon_MULTIPASS_MP560_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP560_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP560_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP560);
-
-/* ----------------------------------- Canon MP600 ----------------------------------- */
-static const char* canon_MULTIPASS_MP600_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/*unsupported*/
-static const char* canon_MULTIPASS_MP600_modeuses_PPpro[] = {
- "600x600dpi_photodraft",/*stand-in*/
- NULL
-};
-
-/*most modes unsupported*/
-static const char* canon_MULTIPASS_MP600_modeuses_PPplus[] = {
- "600x600dpi_photodraft",
- NULL
-};
-
-/*unsupported*/
-static const char* canon_MULTIPASS_MP600_modeuses_PPplusDS[] = {
- "600x600dpi_photodraft",/*stand-in*/
- NULL
-};
-
-/*unsupported*/
-static const char* canon_MULTIPASS_MP600_modeuses_PPmatte[] = {
- "600x600dpi_photodraft",/*stand-in*/
- NULL
-};
-
-/*highest mode unsupported*/
-static const char* canon_MULTIPASS_MP600_modeuses_inkjetHagaki[] = {
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP600_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-/*unsupported*/
-static const char* canon_MULTIPASS_MP600_modeuses_disc[] = {
- "600x600dpi_photodraft",/*stand-in*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP600_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-/*unsupported*/
-static const char* canon_MULTIPASS_MP600_modeuses_PPother[] = {
- "600x600dpi_photodraft",/*stand-in*/
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP600_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP600_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_MULTIPASS_MP600_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_MULTIPASS_MP600_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP600_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP600_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP600_modeuses_PPplusDS, 0 },
- { "Coated", canon_MULTIPASS_MP600_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP600_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP600_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "CD", canon_MULTIPASS_MP600_modeuses_plain, 0 },/*temporary for plain modes*/
- { "DiscCompat", canon_MULTIPASS_MP600_modeuses_disc, 0 },
- { "DiscOthers", canon_MULTIPASS_MP600_modeuses_disc, 0 },
- { "TShirt", canon_MULTIPASS_MP600_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP600_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP600_modeuses_PPother, 0 },
- };
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP600);
-
-/* ----------------------------------- Canon MP610 ----------------------------------- */
-static const char* canon_MULTIPASS_MP610_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* missing highest resolution mode as not yet implemented */
-static const char* canon_MULTIPASS_MP610_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP610_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP610_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP610_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP610_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP610_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP610_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP610_modeuses_disc[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP610_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP610_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP610_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP610_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_MULTIPASS_MP610_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_MULTIPASS_MP610_modeuses_PPplus, 0 },
- { "PhotoPlusGloss2", canon_MULTIPASS_MP610_modeuses_PPplusG2, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP610_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP610_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP610_modeuses_PPplusDS, 0 },
- { "Coated", canon_MULTIPASS_MP610_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP610_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP610_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_MULTIPASS_MP610_modeuses_disc, 0 },
- { "DiscOthers", canon_MULTIPASS_MP610_modeuses_disc, 0 },
- { "TShirt", canon_MULTIPASS_MP610_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP610_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP610_modeuses_PPother, 0 },
- };
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP610);
-
-/* ----------------------------------- Canon MP620 ----------------------------------- */
-static const char* canon_MULTIPASS_MP620_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MP620_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP620_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP620_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP620_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP620_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP620_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP620_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP620_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP620_modeuses_plain, 0 },
- { "PhotoPlusGloss2", canon_MULTIPASS_MP620_modeuses_PPplusG2, 0 },
- { "PhotoPro2", canon_MULTIPASS_MP620_modeuses_PPpro, 0 },
- { "PhotoProPlat", canon_MULTIPASS_MP620_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP620_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP620_modeuses_PPplusG2, 0 },
- { "PhotoProSemiGloss", canon_MULTIPASS_MP620_modeuses_PPplusG2, 0 },
- { "Coated", canon_MULTIPASS_MP620_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP620_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP620_modeuses_Hagaki, 0 },
- { "TShirt", canon_MULTIPASS_MP620_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP620_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP620_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP620);
-
-/* ----------------------------------- Canon MP630 ----------------------------------- */
-static const char* canon_MULTIPASS_MP630_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high",/* duplex */
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",/*untested*/
- NULL
- };
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MP630_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP630_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP630_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP630_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP630_modeuses_disc[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP630_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP630_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP630_modeuses_PPother[] = {
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MP630_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP630_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MP630_modeuses_PPplusG2, 0 },
- { "PhotoPro2", canon_MULTIPASS_MP630_modeuses_PPpro, 0 },
- { "PhotoProPlat", canon_MULTIPASS_MP630_modeuses_PPplusG2, 0 },
- { "PhotoProSemiGloss", canon_MULTIPASS_MP630_modeuses_PPplusG2, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP630_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP630_modeuses_PPmatte, 0 },
- { "Coated", canon_MULTIPASS_MP630_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP630_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP630_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_MULTIPASS_MP630_modeuses_disc, 0 },
- { "DiscOthers", canon_MULTIPASS_MP630_modeuses_disc, 0 },
- { "TShirt", canon_MULTIPASS_MP630_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP630_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP630_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP630);
-
-/* ----------------------------------- Canon MP640 ----------------------------------- */
-static const char* canon_MULTIPASS_MP640_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high",/* duplex */
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",/*untested*/
- NULL
- };
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MP640_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP640_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP640_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP640_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP640_modeuses_disc[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP640_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP640_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP640_modeuses_PPother[] = {
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MP640_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP640_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MP640_modeuses_PPplusG2, 0 },
- { "PhotoPro2", canon_MULTIPASS_MP640_modeuses_PPpro, 0 },
- { "PhotoProPlat", canon_MULTIPASS_MP640_modeuses_PPplusG2, 0 },
- { "PhotoProSemiGloss", canon_MULTIPASS_MP640_modeuses_PPplusG2, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP640_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP640_modeuses_PPmatte, 0 },
- { "Coated", canon_MULTIPASS_MP640_modeuses_PPmatte, 0 },
- { "HagakiA", canon_MULTIPASS_MP640_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MP640_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_MULTIPASS_MP640_modeuses_PPplusG2, 0 },
- { "ProPhotoHagakiP", canon_MULTIPASS_MP640_modeuses_PPpro, 0 },
- { "Hagaki", canon_MULTIPASS_MP640_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_MULTIPASS_MP640_modeuses_disc, 0 },
- { "DiscOthers", canon_MULTIPASS_MP640_modeuses_disc, 0 },
- { "TShirt", canon_MULTIPASS_MP640_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP640_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP640_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP640);
-
-/* ----------------------------------- Canon MP700 ----------------------------------- */
-static const char* canon_MULTIPASS_MP700_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",/*untested*/
- "600x600dpi_draft",
- "300x300dpi_high",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MP700_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP700_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP700_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP700_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",/*untested*/
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP700_modeuses_Hagaki[] = {
- "600x600dpi_high3",/*untested*/
- "600x600dpi_high2",
- "600x600dpi_std2",/*untested*/
- "600x600dpi_draft2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP700_modeuses_disc[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP700_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP700_modeuses_Transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-/*untested*/
-static const char* canon_MULTIPASS_MP700_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MP700_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP700_modeuses_plain, 0 },
- { "GlossyPro", canon_MULTIPASS_MP700_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_MULTIPASS_MP700_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP700_modeuses_PPplus, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP700_modeuses_PPpro, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP700_modeuses_PPplus, 0 },
- { "Coated", canon_MULTIPASS_MP700_modeuses_coated, 0 },
- { "GlossyFilm", canon_MULTIPASS_MP700_modeuses_PPplus, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP700_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP700_modeuses_Hagaki, 0 },
- { "DiscCompat", canon_MULTIPASS_MP700_modeuses_disc, 0 },
- { "DiscOthers", canon_MULTIPASS_MP700_modeuses_disc, 0 },
- { "TShirt", canon_MULTIPASS_MP700_modeuses_TShirt, 0 },
- { "Transparency", canon_MULTIPASS_MP700_modeuses_Transparency, 0 },
- { "Envelope", canon_MULTIPASS_MP700_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP700_modeuses_PPother, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP700);
-
-/* ----------------------------------- Canon MP710 ----------------------------------- */
-static const char* canon_MULTIPASS_MP710_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",/*untested*/
- "600x600dpi_draft",
- "300x300dpi_high",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MP710_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP710_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP710_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP710_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",/*untested*/
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP710_modeuses_Hagaki[] = {
- "600x600dpi_high3",/*untested*/
- "600x600dpi_high2",
- "600x600dpi_std2",/*untested*/
- "600x600dpi_draft2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP710_modeuses_disc[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP710_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP710_modeuses_Transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-/*untested*/
-static const char* canon_MULTIPASS_MP710_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MP710_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP710_modeuses_plain, 0 },
- { "GlossyPro", canon_MULTIPASS_MP710_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_MULTIPASS_MP710_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP710_modeuses_PPplus, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP710_modeuses_PPpro, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP710_modeuses_PPplus, 0 },
- { "Coated", canon_MULTIPASS_MP710_modeuses_coated, 0 },
- { "GlossyFilm", canon_MULTIPASS_MP710_modeuses_PPplus, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP710_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP710_modeuses_Hagaki, 0 },
- { "DiscCompat", canon_MULTIPASS_MP710_modeuses_disc, 0 },
- { "DiscOthers", canon_MULTIPASS_MP710_modeuses_disc, 0 },
- { "TShirt", canon_MULTIPASS_MP710_modeuses_TShirt, 0 },
- { "Transparency", canon_MULTIPASS_MP710_modeuses_Transparency, 0 },
- { "Envelope", canon_MULTIPASS_MP710_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP710_modeuses_PPother, 0 },/*untested*/
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP710);
-
-/* ----------------------------------- Canon MP750 ----------------------------------- */
-static const char* canon_MULTIPASS_MP750_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MP750_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP750_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP750_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP750_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP750_modeuses_disc[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP750_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP750_modeuses_Transparency[] = {
- "600x600dpi_ohphigh",
- "600x600dpi_ohp",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP750_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MP750_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP750_modeuses_plain, 0 },
- { "GlossyPro", canon_MULTIPASS_MP750_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_MULTIPASS_MP750_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP750_modeuses_PPplus, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP750_modeuses_PPpro, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP750_modeuses_PPplus, 0 },
- { "Coated", canon_MULTIPASS_MP750_modeuses_PPplus, 0 },
- { "GlossyFilm", canon_MULTIPASS_MP750_modeuses_PPplus, 0 },/*untested*/
- { "InkJetHagaki", canon_MULTIPASS_MP750_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP750_modeuses_Hagaki, 0 },
- { "DiscCompat", canon_MULTIPASS_MP750_modeuses_disc, 0 },
- { "DiscOthers", canon_MULTIPASS_MP750_modeuses_disc, 0 },
- { "TShirt", canon_MULTIPASS_MP750_modeuses_TShirt, 0 },
- { "Transparency", canon_MULTIPASS_MP750_modeuses_Transparency, 0 },
- { "Envelope", canon_MULTIPASS_MP750_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP750_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP750);
-
-/* ----------------------------------- Canon MP800 ----------------------------------- */
-static const char* canon_MULTIPASS_MP800_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/*most photo modes not yet supported */
-static const char* canon_MULTIPASS_MP800_modeuses_PPpro[] = {
- "600x600dpi_photo",/*temporary stand-in*/
- "600x600dpi_photodraft",/*temporary stand-in*/
- NULL
-};
-
-/* only draft available */
-static const char* canon_MULTIPASS_MP800_modeuses_PPplus[] = {
- "600x600dpi_photo",/*temporary stand-in*/
- "600x600dpi_photodraft",
- NULL
-};
-
-/*most photo modes not yet supported */
-static const char* canon_MULTIPASS_MP800_modeuses_PPplusDS[] = {
- "600x600dpi_photo",/*temporary stand-in*/
- "600x600dpi_photodraft",/*temporary stand-in*/
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MP800_modeuses_inkjetHagaki[] = {
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP800_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP800_modeuses_disc[] = {
- "600x600dpi_photo",/*temporary stand-in*/
- "600x600dpi_photodraft",/*temporary stand-in*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP800_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP800_modeuses_PPother[] = {
- "600x600dpi_photo",/*temporary stand-in*/
- "600x600dpi_photodraft",/*temporary stand-in*/
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP800_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP800_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_MULTIPASS_MP800_modeuses_PPpro, 0 },/*not supported yet*/
- { "PhotopaperPlus", canon_MULTIPASS_MP800_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP800_modeuses_PPplusDS, 0 },/*not supported yet*/
- { "GlossyPaper", canon_MULTIPASS_MP800_modeuses_PPplusDS, 0 },/*not supported yet*/
- { "PhotopaperMatte", canon_MULTIPASS_MP800_modeuses_PPplusDS, 0 },/*not supported yet*/
- { "Coated", canon_MULTIPASS_MP800_modeuses_PPplusDS, 0 },/*not supported yet*/
- { "InkJetHagaki", canon_MULTIPASS_MP800_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP800_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "CD", canon_MULTIPASS_MP800_modeuses_plain, 0 },/*NOTE:temporary replacement*/
- { "DiscCompat", canon_MULTIPASS_MP800_modeuses_disc, 0 },/*not supported yet*/
- { "DiscOthers", canon_MULTIPASS_MP800_modeuses_disc, 0 },/*not supported yet*/
- { "TShirt", canon_MULTIPASS_MP800_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP800_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP800_modeuses_PPother, 0 },/*not supported yet*/
- };
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP800);
-
-/* ----------------------------------- Canon MP810 ----------------------------------- */
-static const char* canon_MULTIPASS_MP810_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MP810_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP810_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP810_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP810_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP810_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP810_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP810_modeuses_disc[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP810_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP810_modeuses_PPother[] = {
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP810_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP810_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_MULTIPASS_MP810_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_MULTIPASS_MP810_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP810_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP810_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP810_modeuses_PPmatte, 0 },
- { "Coated", canon_MULTIPASS_MP810_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP810_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP810_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "CD", canon_MULTIPASS_MP810_modeuses_plain, },/*NOTE:option*/
- { "DiscCompat", canon_MULTIPASS_MP810_modeuses_disc, 0 },
- { "DiscOthers", canon_MULTIPASS_MP810_modeuses_disc, 0 },
- { "TShirt", canon_MULTIPASS_MP810_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP810_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP810_modeuses_PPother, 0 },
- };
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP810);
-
-/* ----------------------------------- Canon MP830 ----------------------------------- */
-static const char* canon_MULTIPASS_MP830_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/*most photo modes not yet supported */
-static const char* canon_MULTIPASS_MP830_modeuses_PPpro[] = {
- "600x600dpi_photodraft",/*temporary stand-in*/
- NULL
-};
-
-/* only draft available */
-static const char* canon_MULTIPASS_MP830_modeuses_PPplus[] = {
- "600x600dpi_photodraft",
- NULL
-};
-
-/*most photo modes not yet supported */
-static const char* canon_MULTIPASS_MP830_modeuses_PPplusDS[] = {
- "600x600dpi_photodraft",/*temporary stand-in*/
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MP830_modeuses_inkjetHagaki[] = {
- "600x600dpi_photo2",
- "600x600dpi_photodraft2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP830_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP830_modeuses_disc[] = {
- "600x600dpi_photodraft",/*temporary stand-in*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP830_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP830_modeuses_PPother[] = {
- "600x600dpi_photodraft",/*temporary stand-in*/
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP830_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP830_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_MULTIPASS_MP830_modeuses_PPpro, 0 },/*not supported yet*/
- { "PhotopaperPlus", canon_MULTIPASS_MP830_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP830_modeuses_PPplusDS, 0 },/*not supported yet*/
- { "GlossyPaper", canon_MULTIPASS_MP830_modeuses_PPplusDS, 0 },/*not supported yet*/
- { "PhotopaperMatte", canon_MULTIPASS_MP830_modeuses_PPplusDS, 0 },/*not supported yet*/
- { "Coated", canon_MULTIPASS_MP830_modeuses_PPplusDS, 0 },/*not supported yet*/
- { "InkJetHagaki", canon_MULTIPASS_MP830_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP830_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "CD", canon_MULTIPASS_MP830_modeuses_plain, 0 },/*NOTE:temporary replacement*/
- { "DiscCompat", canon_MULTIPASS_MP830_modeuses_disc, 0 },/*not supported yet*/
- { "DiscOthers", canon_MULTIPASS_MP830_modeuses_disc, 0 },/*not supported yet*/
- { "TShirt", canon_MULTIPASS_MP830_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP830_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP830_modeuses_PPother, 0 },/*not supported yet*/
- };
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP830);
-
-/* ----------------------------------- Canon MP900 ----------------------------------- */
-static const char* canon_MULTIPASS_MP900_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",
- "600x600dpi_draft2",
- /* Mono */
- "600x600dpi_draftmono",
- "600x600dpi_draftmono2",
- NULL
- };
-
-static const char* canon_MULTIPASS_MP900_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photo2",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP900_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP900_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP900_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP900_modeuses_coated[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- "600x600dpi_photo2",
- NULL
-};
-
-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_draft4",
- "600x600dpi_draftmono4",/* Mono */
- NULL
-};
-
-static const char* canon_MULTIPASS_MP900_modeuses_disc[] = {
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP900_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP900_modeuses_Transparency[] = {
- "600x600dpi_std3",
- "600x600dpi_draft3",
- NULL
-};
-
-/*untested*/
-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 },
- { "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 },
- { "Envelope", canon_MULTIPASS_MP900_modeuses_Hagaki, 0 },
- { "Transparency", canon_MULTIPASS_MP900_modeuses_Transparency, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP900_modeuses_PPother, 0 },/*untested*/
- };
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP900);
-
-/* ----------------------------------- Canon MP950 ----------------------------------- */
-static const char* canon_MULTIPASS_MP950_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/*highest mode not yet supported */
-static const char* canon_MULTIPASS_MP950_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- /* Mono not yet supported */
- NULL
-};
-
-static const char* canon_MULTIPASS_MP950_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- /* Mono not yet supported */
- NULL
-};
-
-static const char* canon_MULTIPASS_MP950_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- "600x600dpi_photodraft",/*untested*/
- /* No mono modes for this media */
- NULL
-};
-
-static const char* canon_MULTIPASS_MP950_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- /* No mono modes for this media */
- NULL
-};
-
-static const char* canon_MULTIPASS_MP950_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP950_modeuses_FA[] = {
- "600x600dpi_photohigh4",
- /* Mono not yet supported */
- NULL
-};
-
-static const char* canon_MULTIPASS_MP950_modeuses_disc[] = {
- "600x600dpi_photohigh5",
- "600x600dpi_photo5",
- "600x600dpi_photodraft5",
- NULL
- /* No mono modes for this media */
-};
-
-static const char* canon_MULTIPASS_MP950_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP950_modeuses_Transparency[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- /* No mono modes for this media */
- NULL
-};
-
-static const char* canon_MULTIPASS_MP950_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",/*untested*/
- "600x600dpi_photodraft",/*untested*/
- /* No mono modes for this media */
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MP950_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP950_modeuses_plain, DUPLEX_SUPPORT },
- { "GlossyPro", canon_MULTIPASS_MP950_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_MULTIPASS_MP950_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP950_modeuses_PPplus, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP950_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP950_modeuses_PPmatte, 0 },
- { "Coated", canon_MULTIPASS_MP950_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP950_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP950_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_MULTIPASS_MP950_modeuses_disc, 0 },
- { "DiscOthers", canon_MULTIPASS_MP950_modeuses_disc, 0 },
- { "TShirt", canon_MULTIPASS_MP950_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP950_modeuses_Hagaki, 0 },
- { "FineArtPhotoRag", canon_MULTIPASS_MP950_modeuses_FA, 0 },
- { "FineArtOther", canon_MULTIPASS_MP950_modeuses_FA, 0 },
- { "Transparency", canon_MULTIPASS_MP950_modeuses_Transparency, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP950_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP950);
-
-/* ----------------------------------- Canon MP960 ----------------------------------- */
-static const char* canon_MULTIPASS_MP960_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high",/*duplex*/
- "600x600dpi",
- "600x600dpi_draft",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/*highest mode not yet supported */
-static const char* canon_MULTIPASS_MP960_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- /* Mono not yet supported */
- NULL
-};
-
-static const char* canon_MULTIPASS_MP960_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- /* Mono not yet supported */
- NULL
-};
-
-static const char* canon_MULTIPASS_MP960_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- /* No mono modes for this media */
- NULL
-};
-
-static const char* canon_MULTIPASS_MP960_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- /* No mono modes for this media */
- NULL
-};
-
-static const char* canon_MULTIPASS_MP960_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- /* No mono modes for this media */
- NULL
-};
-
-static const char* canon_MULTIPASS_MP960_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP960_modeuses_FA[] = {
- "600x600dpi_photohigh5",
- /* Mono not yet supported */
- NULL
-};
-
-static const char* canon_MULTIPASS_MP960_modeuses_disc[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
- NULL
- /* No mono modes for this media */
-};
-
-static const char* canon_MULTIPASS_MP960_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-/* Note: this media is not supported in Windows driver: taken from MP950 */
-static const char* canon_MULTIPASS_MP960_modeuses_Transparency[] = {
- "600x600dpi_high4",
- "600x600dpi_std4",
- /* No mono modes for this media */
- NULL
-};
-
-static const char* canon_MULTIPASS_MP960_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- /* No mono modes for this media */
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP960_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP960_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "GlossyPro", canon_MULTIPASS_MP960_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_MULTIPASS_MP960_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP960_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP960_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP960_modeuses_PPmatte, 0 },
- { "Coated", canon_MULTIPASS_MP960_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP960_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP960_modeuses_Hagaki, DUPLEX_SUPPORT }, /* not sure */
- { "DiscCompat", canon_MULTIPASS_MP960_modeuses_disc, 0 },
- { "DiscOthers", canon_MULTIPASS_MP960_modeuses_disc, 0 },
- { "TShirt", canon_MULTIPASS_MP960_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP960_modeuses_Hagaki, 0 },
- { "FineArtPhotoRag", canon_MULTIPASS_MP960_modeuses_FA, 0 },
- { "FineArtOther", canon_MULTIPASS_MP960_modeuses_FA, 0 },
- { "Transparency", canon_MULTIPASS_MP960_modeuses_Transparency, 0 },/*untested*/
- { "PhotopaperOther", canon_MULTIPASS_MP960_modeuses_PPother, 0 },
- };
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP960);
-
-/* ----------------------------------- Canon MP970 ----------------------------------- */
-/* TODO: mono modes for photo media*/
-
-static const char* canon_MULTIPASS_MP970_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high",/*duplex*/
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/*highest mode not yet supported */
-static const char* canon_MULTIPASS_MP970_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP970_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP970_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP970_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP970_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP970_modeuses_FA[] = {
- "600x600dpi_photohigh",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP970_modeuses_disc[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP970_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP970_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP970_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP970_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "GlossyPro", canon_MULTIPASS_MP970_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_MULTIPASS_MP970_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP970_modeuses_PPplus, 0 },
- { "PhotoPlusGloss2", canon_MULTIPASS_MP970_modeuses_PPplus, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP970_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP970_modeuses_PPmatte, 0 },
- { "Coated", canon_MULTIPASS_MP970_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP970_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP970_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_MULTIPASS_MP970_modeuses_disc, 0 },
- { "DiscOthers", canon_MULTIPASS_MP970_modeuses_disc, 0 },
- { "TShirt", canon_MULTIPASS_MP970_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP970_modeuses_Hagaki, 0 },
- { "FineArtPhotoRag", canon_MULTIPASS_MP970_modeuses_FA, 0 },
- { "FineArtOther", canon_MULTIPASS_MP970_modeuses_FA, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP970_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP970);
-
-/* ----------------------------------- Canon MP980 ----------------------------------- */
-/* TODO: mono modes for photo media*/
-
-static const char* canon_MULTIPASS_MP980_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high",/*duplex*/
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/*photo modes not yet supported */
-static const char* canon_MULTIPASS_MP980_modeuses_PPpro[] = {
- "600x600dpi_photo",/*stand-in*/
- NULL
-};
-
-/*photo modes not yet supported */
-static const char* canon_MULTIPASS_MP980_modeuses_PPplus[] = {
- "600x600dpi_photo",/*stand-in*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP980_modeuses_PPmatte[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP980_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP980_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-/*photo modes not yet supported */
-static const char* canon_MULTIPASS_MP980_modeuses_FA[] = {
- "600x600dpi_photo",/*stand-in*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP980_modeuses_disc[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP980_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP980_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP980_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP980_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MP980_modeuses_PPplus, 0 },/*unsupported*/
- { "PhotoPro2", canon_MULTIPASS_MP980_modeuses_PPpro, 0 },/*unsupported*/
- { "PhotoProPlat", canon_MULTIPASS_MP980_modeuses_PPplus, 0 },/*unsupported*/
- { "PhotoProSemiGloss",canon_MULTIPASS_MP980_modeuses_PPplus, 0 },/*unsupported*/
- { "GlossyPaper", canon_MULTIPASS_MP980_modeuses_PPplus, 0 },/*unsupported*/
- { "PhotopaperMatte", canon_MULTIPASS_MP980_modeuses_PPmatte, 0 },
- { "Coated", canon_MULTIPASS_MP980_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP980_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MP980_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_MULTIPASS_MP980_modeuses_disc, 0 },
- { "DiscOthers", canon_MULTIPASS_MP980_modeuses_disc, 0 },
- { "TShirt", canon_MULTIPASS_MP980_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP980_modeuses_Hagaki, 0 },
- { "FineArtPhotoRag", canon_MULTIPASS_MP980_modeuses_FA, 0 },/*unsupported*/
- { "FineArtOther", canon_MULTIPASS_MP980_modeuses_FA, 0 },/*unsupported*/
- { "PhotopaperOther", canon_MULTIPASS_MP980_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP980);
-
-/* ----------------------------------- Canon MP990 ----------------------------------- */
-/* Most photo modes not supported */
-static const char* canon_MULTIPASS_MP990_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high",/*duplex*/
- "600x600dpi",
- "300x300dpi",
- NULL
- };
-
-/* unsupported */
-static const char* canon_MULTIPASS_MP990_modeuses_PPpro[] = {
- "600x600dpi_photo",/*stand-in*/
- NULL
-};
-
-/* unsupported */
-static const char* canon_MULTIPASS_MP990_modeuses_PPproPlat[] = {
- "600x600dpi_photo",/*stand-in*/
- NULL
-};
-
-/* unsupported */
-static const char* canon_MULTIPASS_MP990_modeuses_PPplus[] = {
- "600x600dpi_photo",/*stand-in*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP990_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP990_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP990_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-/*unsupported*/
-static const char* canon_MULTIPASS_MP990_modeuses_FA[] = {
- "600x600dpi_photo",/*stand-in*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MP990_modeuses_disc[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP990_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MP990_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MP990_modeuses[] = {
- { "Plain", canon_MULTIPASS_MP990_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MP990_modeuses_PPplus, 0 },
- { "PhotoPro2", canon_MULTIPASS_MP990_modeuses_PPpro, 0 },
- { "PhotoProPlat", canon_MULTIPASS_MP990_modeuses_PPproPlat, 0 },
- { "PhotoProSemiGloss",canon_MULTIPASS_MP990_modeuses_PPplus, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP990_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP990_modeuses_PPmatte, 0 },
- { "Coated", canon_MULTIPASS_MP990_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP990_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_MULTIPASS_MP990_modeuses_PPplus, 0 },
- { "ProPhotoHagakiP", canon_MULTIPASS_MP990_modeuses_PPproPlat, 0 },
- { "HagakiA", canon_MULTIPASS_MP990_modeuses_Hagaki, DUPLEX_SUPPORT },/* not sure */
- { "Hagaki", canon_MULTIPASS_MP990_modeuses_Hagaki, DUPLEX_SUPPORT },/* not sure */
- { "DiscCompat", canon_MULTIPASS_MP990_modeuses_disc, 0 },
- { "DiscOthers", canon_MULTIPASS_MP990_modeuses_disc, 0 },
- { "TShirt", canon_MULTIPASS_MP990_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MP990_modeuses_Hagaki, 0 },
- { "FineArtPhotoRag", canon_MULTIPASS_MP990_modeuses_FA, 0 },
- { "FineArtOther", canon_MULTIPASS_MP990_modeuses_FA, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP990_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MP990);
-
-/* ----------------------------------- Canon MX300 ----------------------------------- */
-static const char* canon_MULTIPASS_MX300_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- /* Black */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",/*untested*/
- "300x300dpi_mono",
- "300x300dpi_draftmono",
- /* Color */
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",/*untested*/
- "300x300dpi_std2",
- "300x300dpi_draft2",
- NULL
- };
-
-static const char* canon_MULTIPASS_MX300_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX300_modeuses_PPpro[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX300_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX300_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX300_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",/*untested*/
- /* Black */
- "600x600dpi_highmono3",
- "600x600dpi_stdmono3",
- "600x600dpi_draftmono3",/*untested*/
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- "600x600dpi_draft4",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MX300_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX300_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MX300_modeuses[] = {
- { "Plain", canon_MULTIPASS_MX300_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MX300_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "GlossyPro", canon_MULTIPASS_MX300_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotopaperPlus", canon_MULTIPASS_MX300_modeuses_PPplus, INKSET_COLOR_SUPPORT },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MX300_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MX300_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MX300_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MX300_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MX300_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MX300_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_MX300_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MX300_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MX300_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MX300);
-
-/* ----------------------------------- Canon MX330 ----------------------------------- */
-static const char* canon_MULTIPASS_MX330_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- /* Black */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",/*untested*/
- "300x300dpi_mono",
- "300x300dpi_draftmono",
- /* Color */
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",/*untested*/
- "300x300dpi_std2",
- "300x300dpi_draft2",
- NULL
- };
-
-static const char* canon_MULTIPASS_MX330_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX330_modeuses_PPpro[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX330_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",/*untested*/
- /* Black */
- "600x600dpi_highmono3",
- "600x600dpi_stdmono3",
- "600x600dpi_draftmono3",/*untested*/
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- "600x600dpi_draft4",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MX330_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX330_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MX330_modeuses[] = {
- { "Plain", canon_MULTIPASS_MX330_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MX330_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoPro2", canon_MULTIPASS_MX330_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_MULTIPASS_MX330_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MX330_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MX330_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss",canon_MULTIPASS_MX330_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MX330_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MX330_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MX330_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_MX330_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MX330_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MX330_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MX330);
-
-/* ----------------------------------- Canon MX340 ----------------------------------- */
-static const char* canon_MULTIPASS_MX340_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",/*untested*/
- /* Black */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",/*untested*/
- "300x300dpi_mono",
- "300x300dpi_draftmono",/*untested*/
- /* Color */
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",/*untested*/
- "300x300dpi_std2",
- "300x300dpi_draft2",/*untested*/
- NULL
- };
-
-static const char* canon_MULTIPASS_MX340_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX340_modeuses_PPpro[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX340_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",/*untested*/
- /* Black */
- "600x600dpi_highmono3",
- "600x600dpi_stdmono3",
- "600x600dpi_draftmono3",/*untested*/
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- "600x600dpi_draft4",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MX340_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX340_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MX340_modeuses[] = {
- { "Plain", canon_MULTIPASS_MX340_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoPro2", canon_MULTIPASS_MX340_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss",canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "HagakiA", canon_MULTIPASS_MX340_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "InkJetHagaki", canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "CanonPhotoHagakiK",canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MX340_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_MX340_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MX340_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MX340_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MX340);
-
-/* ----------------------------------- Canon MX360 ----------------------------------- */
-static const char* canon_MULTIPASS_MX360_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",/*untested*/
- /* Black */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",/*untested*/
- "300x300dpi_mono",
- "300x300dpi_draftmono",/*untested*/
- /* Color */
- "600x600dpi_high3",
- "600x600dpi_std3",
- "600x600dpi_draft3",/*untested*/
- "300x300dpi_std3",
- "300x300dpi_draft3",/*untested*/
- NULL
- };
-
-static const char* canon_MULTIPASS_MX360_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX360_modeuses_PPproPlat[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX360_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",/*untested*/
- /* Black */
- "600x600dpi_highmono2",
- "600x600dpi_stdmono2",
- "600x600dpi_draftmono2",/*untested*/
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- "600x600dpi_draft4",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MX360_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX360_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MX360_modeuses[] = {
- { "Plain", canon_MULTIPASS_MX360_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MX360_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_MULTIPASS_MX360_modeuses_PPproPlat, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss", canon_MULTIPASS_MX360_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MX360_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MX360_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MX360_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "HagakiA", canon_MULTIPASS_MX360_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "InkJetHagaki", canon_MULTIPASS_MX360_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "CanonPhotoHagakiK", canon_MULTIPASS_MX360_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MX360_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_MX360_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MX360_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MX360_modeuses_PPother, INKSET_COLOR_SUPPORT },
- };
-
-DECLARE_MODEUSES(canon_MULTIPASS_MX360);
-
-/* ----------------------------------- Canon MX370 ----------------------------------- */
-static const char* canon_MULTIPASS_MX370_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX370_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX370_modeuses_PPproPlat[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX370_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX370_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX370_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MX370_modeuses[] = {
- { "Plain", canon_MULTIPASS_MX370_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MX370_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_MULTIPASS_MX370_modeuses_PPproPlat, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss",canon_MULTIPASS_MX370_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MX370_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MX370_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MX370_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "HagakiA", canon_MULTIPASS_MX370_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "InkJetHagaki", canon_MULTIPASS_MX370_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "CanonPhotoHagakiK",canon_MULTIPASS_MX370_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MX370_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_MX370_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MX370_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MX370_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MX370);
-
-/* ----------------------------------- Canon MX420 ----------------------------------- */
-static const char* canon_MULTIPASS_MX420_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- /* Black */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",/*untested*/
- "300x300dpi_mono",
- "300x300dpi_draftmono",
- /* Color */
- "600x600dpi_high2",
- "600x600dpi_std2",
- "600x600dpi_draft2",/*untested*/
- "300x300dpi_std2",
- "300x300dpi_draft2",
- NULL
- };
-
-static const char* canon_MULTIPASS_MX420_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MX420_modeuses_PPproPlat[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",/*untested*/
- NULL
-};
-
-static const char* canon_MULTIPASS_MX420_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- /* Black */
- "600x600dpi_highmono3",
- "600x600dpi_stdmono3",
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX420_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX420_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",/*untested*/
- "600x600dpi_photodraft",/*untested*/
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MX420_modeuses[] = {
- { "Plain", canon_MULTIPASS_MX420_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MX420_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_MULTIPASS_MX420_modeuses_PPproPlat, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss", canon_MULTIPASS_MX420_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MX420_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MX420_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MX420_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "HagakiA", canon_MULTIPASS_MX420_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "InkJetHagaki", canon_MULTIPASS_MX420_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "CanonPhotoHagakiK", canon_MULTIPASS_MX420_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MX420_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_MX420_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MX420_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MX420_modeuses_PPother, INKSET_COLOR_SUPPORT },
- };
-
-DECLARE_MODEUSES(canon_MULTIPASS_MX420);
-
-/* ----------------------------------- Canon MX510 ----------------------------------- */
-static const char* canon_MULTIPASS_MX510_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high3",/* duplex */
- "600x600dpi",
- "300x300dpi",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX510_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX510_modeuses_PPproPlat[] = {
- "1200x1200dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX510_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX510_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX510_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MX510_modeuses[] = {
- { "Plain", canon_MULTIPASS_MX510_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MX510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_MULTIPASS_MX510_modeuses_PPproPlat, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss",canon_MULTIPASS_MX510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_MX510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_MX510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_MX510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "HagakiA", canon_MULTIPASS_MX510_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MX510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "CanonPhotoHagakiK",canon_MULTIPASS_MX510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_MX510_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT },
- { "TShirt", canon_MULTIPASS_MX510_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_MX510_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_MX510_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MX510);
-
-/* ----------------------------------- Canon MX700 ----------------------------------- */
-static const char* canon_MULTIPASS_MX700_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MX700_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX700_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX700_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX700_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_draft3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX700_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX700_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX700_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MX700_modeuses[] = {
- { "Plain", canon_MULTIPASS_MX700_modeuses_plain, 0 },
- { "GlossyPro", canon_MULTIPASS_MX700_modeuses_PPpro, 0 },
- { "PhotoPlusGloss2", canon_MULTIPASS_MX700_modeuses_PPplus, 0 },
- { "PhotopaperPlus", canon_MULTIPASS_MX700_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MX700_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_MULTIPASS_MX700_modeuses_PPplus, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MX700_modeuses_PPplusDS, 0 },
- { "Coated", canon_MULTIPASS_MX700_modeuses_PPplusDS, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MX700_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MX700_modeuses_Hagaki, 0 },
- { "TShirt", canon_MULTIPASS_MX700_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MX700_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MX700_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MX700);
-
-/* ----------------------------------- Canon MX710 ----------------------------------- */
-static const char* canon_MULTIPASS_MX710_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "600x600dpi_std2", /* duplex */
- "300x300dpi",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX710_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* highest mode unsupported */
-static const char* canon_MULTIPASS_MX710_modeuses_PPproPlat[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX710_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX710_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX710_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX710_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX710_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MX710_modeuses[] = {
- { "Plain", canon_MULTIPASS_MX710_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MX710_modeuses_PPplusG2, 0 },
- { "PhotoProPlat", canon_MULTIPASS_MX710_modeuses_PPproPlat, 0 },
- { "PhotoProSemiGloss",canon_MULTIPASS_MX710_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MX710_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_MULTIPASS_MX710_modeuses_PPplusG2, 0 },
- { "Coated", canon_MULTIPASS_MX710_modeuses_PPmatte, 0 },
- { "HagakiA", canon_MULTIPASS_MX710_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MX710_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_MULTIPASS_MX710_modeuses_PPplusG2, 0 },
- { "Hagaki", canon_MULTIPASS_MX710_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "TShirt", canon_MULTIPASS_MX710_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MX710_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MX710_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MX710);
-
-/* ----------------------------------- Canon MX850 ----------------------------------- */
-static const char* canon_MULTIPASS_MX850_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
- NULL
- };
-
-static const char* canon_MULTIPASS_MX850_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- "600x600dpi_photodraft",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX850_modeuses_PPplusDS[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MX850_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX850_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX850_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX850_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX850_modeuses_disc[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX850_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX850_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
- };
-
-static const canon_modeuse_t canon_MULTIPASS_MX850_modeuses[] = {
- { "Plain", canon_MULTIPASS_MX850_modeuses_plain, DUPLEX_SUPPORT },
- { "PhotoPlusGloss2", canon_MULTIPASS_MX850_modeuses_PPplus, 0 },
- { "GlossyPro", canon_MULTIPASS_MX850_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_MULTIPASS_MX850_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MX850_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_MULTIPASS_MX850_modeuses_PPplusDS, 0 },
- { "PhotoProSemiGloss",canon_MULTIPASS_MX850_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MX850_modeuses_PPmatte, 0 },
- { "Coated", canon_MULTIPASS_MX850_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MX850_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MX850_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_MULTIPASS_MX850_modeuses_disc, 0 },
- { "DiscOthers", canon_MULTIPASS_MX850_modeuses_disc, 0 },
- { "TShirt", canon_MULTIPASS_MX850_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MX850_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MX850_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MX850);
-
-/* ----------------------------------- Canon MX860 ----------------------------------- */
-static const char* canon_MULTIPASS_MX860_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX860_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MX860_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX860_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX860_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX860_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX860_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX860_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MX860_modeuses[] = {
- { "Plain", canon_MULTIPASS_MX860_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MX860_modeuses_PPplusG2, 0 },
- { "PhotoPro2", canon_MULTIPASS_MX860_modeuses_PPpro, 0 },
- { "PhotoProPlat", canon_MULTIPASS_MX860_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MX860_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_MULTIPASS_MX860_modeuses_PPplusG2, 0 },
- { "PhotoProSemiGloss",canon_MULTIPASS_MX860_modeuses_PPplusG2, 0 },
- { "Coated", canon_MULTIPASS_MX860_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MX860_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_MULTIPASS_MX860_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "TShirt", canon_MULTIPASS_MX860_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MX860_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MX860_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MX860);
-
-/* ----------------------------------- Canon MX870 ----------------------------------- */
-static const char* canon_MULTIPASS_MX870_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX870_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MX870_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX870_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX870_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX870_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX870_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX870_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MX870_modeuses[] = {
- { "Plain", canon_MULTIPASS_MX870_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MX870_modeuses_PPplusG2, 0 },
- { "PhotoPro2", canon_MULTIPASS_MX870_modeuses_PPpro, 0 },
- { "PhotoProPlat", canon_MULTIPASS_MX870_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MX870_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_MULTIPASS_MX870_modeuses_PPplusG2, 0 },
- { "PhotoProSemiGloss",canon_MULTIPASS_MX870_modeuses_PPplusG2, 0 },
- { "Coated", canon_MULTIPASS_MX870_modeuses_PPmatte, 0 },
- { "HagakiA", canon_MULTIPASS_MX870_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MX870_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_MULTIPASS_MX870_modeuses_PPplusG2, 0 },
- { "Hagaki", canon_MULTIPASS_MX870_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "TShirt", canon_MULTIPASS_MX870_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MX870_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MX870_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MX870);
-
-/* ----------------------------------- Canon MX880 ----------------------------------- */
-static const char* canon_MULTIPASS_MX880_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX880_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MX880_modeuses_PPproPlat[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX880_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX880_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX880_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX880_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX880_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MX880_modeuses[] = {
- { "Plain", canon_MULTIPASS_MX880_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_MX880_modeuses_PPplusG2, 0 },
- { "PhotoProPlat", canon_MULTIPASS_MX880_modeuses_PPproPlat, 0 },
- { "PhotoProSemiGloss",canon_MULTIPASS_MX880_modeuses_PPplusG2, 0 },
- { "GlossyPaper", canon_MULTIPASS_MX880_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MX880_modeuses_PPmatte, 0 },
- { "Coated", canon_MULTIPASS_MX880_modeuses_PPmatte, 0 },
- { "HagakiA", canon_MULTIPASS_MX880_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_MULTIPASS_MX880_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_MULTIPASS_MX880_modeuses_PPplusG2, 0 },
- { "Hagaki", canon_MULTIPASS_MX880_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "TShirt", canon_MULTIPASS_MX880_modeuses_TShirt, 0 },
- { "Envelope", canon_MULTIPASS_MX880_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MX880_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MX880);
-
-/* ----------------------------------- Canon MX7600 ----------------------------------- */
-static const char* canon_MULTIPASS_MX7600_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX7600_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* highest mode not yet supported */
-static const char* canon_MULTIPASS_MX7600_modeuses_PPsemiGloss[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX7600_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_MULTIPASS_MX7600_modeuses_FA[] = {
- "600x600dpi_photohigh",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_MX7600_modeuses[] = {
- { "Plain", canon_MULTIPASS_MX7600_modeuses_plain, DUPLEX_SUPPORT },
- { "PhotoPlusGloss2", canon_MULTIPASS_MX7600_modeuses_PPplusG2, 0 },
- { "PhotopaperPlus", canon_MULTIPASS_MX7600_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MX7600_modeuses_PPplusG2, 0 },
- { "PhotoProSemiGloss",canon_MULTIPASS_MX7600_modeuses_PPsemiGloss, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MX7600_modeuses_PPplusG2, 0 },
- { "FineArtPhotoRag", canon_MULTIPASS_MX7600_modeuses_FA, 0 },
- { "FineArtOther", canon_MULTIPASS_MX7600_modeuses_FA, 0 },
- { "Hagaki", canon_MULTIPASS_MX7600_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "Envelope", canon_MULTIPASS_MX7600_modeuses_Hagaki, 0 },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_MX7600);
-
-/* ----------------------------------- Canon E500 ----------------------------------- */
-static const char* canon_MULTIPASS_E500_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* color-only */
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",
- NULL
-};
-
-static const char* canon_MULTIPASS_E500_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_E500_modeuses_PPproPlat[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_MULTIPASS_E500_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_MULTIPASS_E500_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_MULTIPASS_E500_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
-};
-
-static const canon_modeuse_t canon_MULTIPASS_E500_modeuses[] = {
- { "Plain", canon_MULTIPASS_E500_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotoPlusGloss2", canon_MULTIPASS_E500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_MULTIPASS_E500_modeuses_PPproPlat, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss",canon_MULTIPASS_E500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_MULTIPASS_E500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_MULTIPASS_E500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Coated", canon_MULTIPASS_E500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "HagakiA", canon_MULTIPASS_E500_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "InkJetHagaki", canon_MULTIPASS_E500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "CanonPhotoHagakiK",canon_MULTIPASS_E500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_MULTIPASS_E500_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_MULTIPASS_E500_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_MULTIPASS_E500_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_MULTIPASS_E500_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_MULTIPASS_E500);
-
-/* ----------------------------------- Canon MG2100 ----------------------------------- */
-static const char* canon_PIXMA_MG2100_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- /* Mono */
- "600x600dpi_monohigh",
- "600x600dpi_mono",
- "300x300dpi_mono",
- /* Color */
- "600x600dpi_high2",
- "600x600dpi_std2",
- "300x300dpi_std2",
- NULL
- };
-
-static const char* canon_PIXMA_MG2100_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_MG2100_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_MG2100_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- /* Mono */
- "600x600dpi_highmono3",
- "600x600dpi_mono3",
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- NULL
-};
-
-static const char* canon_PIXMA_MG2100_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_MG2100_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_MG2100_modeuses[] = {
- { "Plain", canon_PIXMA_MG2100_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotoPlusGloss2", canon_PIXMA_MG2100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_PIXMA_MG2100_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss",canon_PIXMA_MG2100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_PIXMA_MG2100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_PIXMA_MG2100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Coated", canon_PIXMA_MG2100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "HagakiA", canon_PIXMA_MG2100_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "InkJetHagaki", canon_PIXMA_MG2100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "CanonPhotoHagakiK",canon_PIXMA_MG2100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_PIXMA_MG2100_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "TShirt", canon_PIXMA_MG2100_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_PIXMA_MG2100_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_PIXMA_MG2100_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_MG2100);
-
-/* ----------------------------------- Canon MG3100 ----------------------------------- */
-static const char* canon_PIXMA_MG3100_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high5",/* duplex */
- "600x600dpi",
- "300x300dpi",
- /* Mono */
- "600x600dpi_monohigh",
- "600x600dpi_mono",
- "300x300dpi_mono",
- /* Color */
- "600x600dpi_high2",
- "600x600dpi_std2",
- "300x300dpi_std2",
- NULL
- };
-
-static const char* canon_PIXMA_MG3100_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_MG3100_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_MG3100_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- /* Mono */
- "600x600dpi_highmono3",
- "600x600dpi_mono3",
- /* Color */
- "600x600dpi_high4",
- "600x600dpi_std4",
- NULL
-};
-
-static const char* canon_PIXMA_MG3100_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_MG3100_modeuses_PPother[] = {
- "600x600dpi_photohigh",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_MG3100_modeuses[] = {
- { "Plain", canon_PIXMA_MG3100_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_PIXMA_MG3100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotoProPlat", canon_PIXMA_MG3100_modeuses_PPpro, INKSET_COLOR_SUPPORT },
- { "PhotoProSemiGloss",canon_PIXMA_MG3100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "PhotopaperMatte", canon_PIXMA_MG3100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "GlossyPaper", canon_PIXMA_MG3100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Coated", canon_PIXMA_MG3100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "HagakiA", canon_PIXMA_MG3100_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_PIXMA_MG3100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "CanonPhotoHagakiK",canon_PIXMA_MG3100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
- { "Hagaki", canon_PIXMA_MG3100_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT },
- { "TShirt", canon_PIXMA_MG3100_modeuses_TShirt, INKSET_COLOR_SUPPORT },
- { "Envelope", canon_PIXMA_MG3100_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
- { "PhotopaperOther", canon_PIXMA_MG3100_modeuses_PPother, INKSET_COLOR_SUPPORT },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_MG3100);
-
-/* ----------------------------------- Canon MG5100 ----------------------------------- */
-static const char* canon_PIXMA_MG5100_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "300x300dpi",
- NULL
- };
-
-static const char* canon_PIXMA_MG5100_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* highest mode still unsupported */
-static const char* canon_PIXMA_MG5100_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_MG5100_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_MG5100_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_PIXMA_MG5100_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_PIXMA_MG5100_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_MG5100_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_MG5100_modeuses[] = {
- { "Plain", canon_PIXMA_MG5100_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_PIXMA_MG5100_modeuses_PPplusG2, 0 },
- { "PhotoProPlat", canon_PIXMA_MG5100_modeuses_PPpro, 0 },
- { "PhotoProSemiGloss",canon_PIXMA_MG5100_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_PIXMA_MG5100_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_MG5100_modeuses_PPplusG2, 0 },
- { "Coated", canon_PIXMA_MG5100_modeuses_PPmatte, 0 },
- { "HagakiA", canon_PIXMA_MG5100_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_PIXMA_MG5100_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_PIXMA_MG5100_modeuses_PPplusG2, 0 },
- { "Hagaki", canon_PIXMA_MG5100_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "TShirt", canon_PIXMA_MG5100_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_MG5100_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_MG5100_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_MG5100);
-
-/* ----------------------------------- Canon MG5200 ----------------------------------- */
-static const char* canon_PIXMA_MG5200_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "600x600dpi_draft",/*untested*/
- "300x300dpi",
- "300x300dpi_draft",/*untested*/
- NULL
- };
-
-static const char* canon_PIXMA_MG5200_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* highest mode still unsupported */
-static const char* canon_PIXMA_MG5200_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_MG5200_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_MG5200_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_PIXMA_MG5200_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_PIXMA_MG5200_modeuses_disc[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const char* canon_PIXMA_MG5200_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_MG5200_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_MG5200_modeuses[] = {
- { "Plain", canon_PIXMA_MG5200_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_PIXMA_MG5200_modeuses_PPplusG2, 0 },
- { "PhotoProPlat", canon_PIXMA_MG5200_modeuses_PPpro, 0 },
- { "PhotoProSemiGloss",canon_PIXMA_MG5200_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_PIXMA_MG5200_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_MG5200_modeuses_PPplusG2, 0 },
- { "Coated", canon_PIXMA_MG5200_modeuses_PPmatte, 0 },
- { "HagakiA", canon_PIXMA_MG5200_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_PIXMA_MG5200_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_PIXMA_MG5200_modeuses_PPplusG2, 0 },
- { "Hagaki", canon_PIXMA_MG5200_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_PIXMA_MG5200_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_MG5200_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_MG5200_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_MG5200_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_MG5200_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_MG5200);
-
-/* ----------------------------------- Canon MG5300 ----------------------------------- */
-static const char* canon_PIXMA_MG5300_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "600x600dpi_std2",/*duplex*/
- "300x300dpi",
- NULL
- };
-
-static const char* canon_PIXMA_MG5300_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-/* highest mode still unsupported */
-static const char* canon_PIXMA_MG5300_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_MG5300_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- NULL
-};
-
-static const char* canon_PIXMA_MG5300_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_MG5300_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const char* canon_PIXMA_MG5300_modeuses_disc[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_PIXMA_MG5300_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-static const char* canon_PIXMA_MG5300_modeuses_PPother[] = {
- "600x600dpi_photo",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_MG5300_modeuses[] = {
- { "Plain", canon_PIXMA_MG5300_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_PIXMA_MG5300_modeuses_PPplusG2, 0 },
- { "PhotoProPlat", canon_PIXMA_MG5300_modeuses_PPpro, 0 },
- { "PhotoProSemiGloss",canon_PIXMA_MG5300_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_PIXMA_MG5300_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_MG5300_modeuses_PPplusG2, 0 },
- { "Coated", canon_PIXMA_MG5300_modeuses_PPmatte, 0 },
- { "HagakiA", canon_PIXMA_MG5300_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_PIXMA_MG5300_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_PIXMA_MG5300_modeuses_PPplusG2, 0 },
- { "Hagaki", canon_PIXMA_MG5300_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_PIXMA_MG5300_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_MG5300_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_MG5300_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_MG5300_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_MG5300_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_MG5300);
-
-/* ----------------------------------- Canon MG6100 ----------------------------------- */
-/* most photo modes use gray ink which is unsupported */
-/* TODO: mono modes for photo media */
-static const char* canon_PIXMA_MG6100_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "300x300dpi",
- NULL
- };
-
-/* unsupported*/
-static const char* canon_PIXMA_MG6100_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photo",/*stand-in*/
- "600x600dpi_photo2",/*stand-in*/
- NULL
-};
-
-/* unsupported*/
-static const char* canon_PIXMA_MG6100_modeuses_PPpro[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photo",/*stand-in*/
- "600x600dpi_photo2",/*stand-in*/
- NULL
-};
-
-static const char* canon_PIXMA_MG6100_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_MG6100_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
- NULL
-};
-
-static const char* canon_PIXMA_MG6100_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const char* canon_PIXMA_MG6100_modeuses_disc[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_PIXMA_MG6100_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-/* unsupported*/
-static const char* canon_PIXMA_MG6100_modeuses_photorag[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photo",/*stand-in*/
- "600x600dpi_photo2",/*stand-in*/
- NULL
-};
-
-static const char* canon_PIXMA_MG6100_modeuses_PPother[] = {
- "600x600dpi_photo2",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_MG6100_modeuses[] = {
- { "Plain", canon_PIXMA_MG6100_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_PIXMA_MG6100_modeuses_PPplusG2, 0 },/*unsupported*/
- { "PhotoProPlat", canon_PIXMA_MG6100_modeuses_PPpro, 0 },/*unsupported*/
- { "PhotoProSemiGloss",canon_PIXMA_MG6100_modeuses_PPplusG2, 0 },/*unsupported*/
- { "PhotopaperMatte", canon_PIXMA_MG6100_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_MG6100_modeuses_PPplusG2, 0 },/*unsupported*/
- { "Coated", canon_PIXMA_MG6100_modeuses_PPmatte, 0 },
- { "HagakiA", canon_PIXMA_MG6100_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_PIXMA_MG6100_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_PIXMA_MG6100_modeuses_PPplusG2, 0 },/*unsupported*/
- { "Hagaki", canon_PIXMA_MG6100_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_PIXMA_MG6100_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_MG6100_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_MG6100_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_MG6100_modeuses_Hagaki, 0 },
- { "FineArtPhotoRag", canon_PIXMA_MG6100_modeuses_photorag, 0 },/*unsupported*/
- { "FineArtOther", canon_PIXMA_MG6100_modeuses_photorag, 0 },/*unsupported*/
- { "PhotopaperOther", canon_PIXMA_MG6100_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_MG6100);
-
-/* ----------------------------------- Canon MG6200 ----------------------------------- */
-/* most photo modes use gray ink which is unsupported */
-/* TODO: mono modes for photo media */
-static const char* canon_PIXMA_MG6200_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "600x600dpi_std2",/* duplex */
- "300x300dpi",
- NULL
- };
-
-/* unsupported*/
-static const char* canon_PIXMA_MG6200_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photo",/*stand-in*/
- "600x600dpi_photo2",/*stand-in*/
- NULL
-};
-
-/* unsupported*/
-static const char* canon_PIXMA_MG6200_modeuses_PPpro[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photo",/*stand-in*/
- "600x600dpi_photo2",/*stand-in*/
- NULL
-};
-
-static const char* canon_PIXMA_MG6200_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_MG6200_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_MG6200_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const char* canon_PIXMA_MG6200_modeuses_disc[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_PIXMA_MG6200_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-/* unsupported*/
-static const char* canon_PIXMA_MG6200_modeuses_photorag[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photo",/*stand-in*/
- "600x600dpi_photo2",/*stand-in*/
- NULL
-};
-
-static const char* canon_PIXMA_MG6200_modeuses_PPother[] = {
- "600x600dpi_photo2",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_MG6200_modeuses[] = {
- { "Plain", canon_PIXMA_MG6200_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_PIXMA_MG6200_modeuses_PPplusG2, 0 },/*unsupported*/
- { "PhotoProPlat", canon_PIXMA_MG6200_modeuses_PPpro, 0 },/*unsupported*/
- { "PhotoProSemiGloss",canon_PIXMA_MG6200_modeuses_PPplusG2, 0 },/*unsupported*/
- { "PhotopaperMatte", canon_PIXMA_MG6200_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_MG6200_modeuses_PPplusG2, 0 },/*unsupported*/
- { "Coated", canon_PIXMA_MG6200_modeuses_PPmatte, 0 },
- { "HagakiA", canon_PIXMA_MG6200_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_PIXMA_MG6200_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_PIXMA_MG6200_modeuses_PPplusG2, 0 },/*unsupported*/
- { "Hagaki", canon_PIXMA_MG6200_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_PIXMA_MG6200_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_MG6200_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_MG6200_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_MG6200_modeuses_Hagaki, 0 },
- { "FineArtPhotoRag", canon_PIXMA_MG6200_modeuses_photorag, 0 },/*unsupported*/
- { "FineArtOther", canon_PIXMA_MG6200_modeuses_photorag, 0 },/*unsupported*/
- { "PhotopaperOther", canon_PIXMA_MG6200_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_MG6200);
-
-/* ----------------------------------- Canon MG8100 ----------------------------------- */
-/* most photo modes use gray ink which is unsupported */
-/* TODO: mono modes for photo media */
-static const char* canon_PIXMA_MG8100_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "600x600dpi_std2",/* duplex */
- "300x300dpi",
- NULL
-};
-
-/* unsupported*/
-static const char* canon_PIXMA_MG8100_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photo",/*stand-in*/
- "600x600dpi_photo2",/*stand-in*/
- NULL
-};
-
-/* unsupported*/
-static const char* canon_PIXMA_MG8100_modeuses_PPpro[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photo",/*stand-in*/
- "600x600dpi_photo2",/*stand-in*/
- NULL
-};
-
-static const char* canon_PIXMA_MG8100_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_MG8100_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_MG8100_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const char* canon_PIXMA_MG8100_modeuses_disc[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_PIXMA_MG8100_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-/* unsupported*/
-static const char* canon_PIXMA_MG8100_modeuses_photorag[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photo",/*stand-in*/
- "600x600dpi_photo2",/*stand-in*/
- NULL
-};
-
-static const char* canon_PIXMA_MG8100_modeuses_PPother[] = {
- "600x600dpi_photo2",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_MG8100_modeuses[] = {
- { "Plain", canon_PIXMA_MG8100_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_PIXMA_MG8100_modeuses_PPplusG2, 0 },/*unsupported*/
- { "PhotoProPlat", canon_PIXMA_MG8100_modeuses_PPpro, 0 },/*unsupported*/
- { "PhotoProSemiGloss",canon_PIXMA_MG8100_modeuses_PPplusG2, 0 },/*unsupported*/
- { "PhotopaperMatte", canon_PIXMA_MG8100_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_MG8100_modeuses_PPplusG2, 0 },/*unsupported*/
- { "Coated", canon_PIXMA_MG8100_modeuses_PPmatte, 0 },
- { "HagakiA", canon_PIXMA_MG8100_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_PIXMA_MG8100_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_PIXMA_MG8100_modeuses_PPplusG2, 0 },/*unsupported*/
- { "Hagaki", canon_PIXMA_MG8100_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_PIXMA_MG8100_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_MG8100_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_MG8100_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_MG8100_modeuses_Hagaki, 0 },
- { "FineArtPhotoRag", canon_PIXMA_MG8100_modeuses_photorag, 0 },/*unsupported*/
- { "FineArtOther", canon_PIXMA_MG8100_modeuses_photorag, 0 },/*unsupported*/
- { "PhotopaperOther", canon_PIXMA_MG8100_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_MG8100);
-
-/* ----------------------------------- Canon MG8200 ----------------------------------- */
-/* most photo modes use gray ink which is unsupported */
-/* TODO: mono modes for photo media */
-static const char* canon_PIXMA_MG8200_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
- "600x600dpi_std2",/* duplex */
- "300x300dpi",
- NULL
-};
-
-/* unsupported*/
-static const char* canon_PIXMA_MG8200_modeuses_PPplusG2[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photo",/*stand-in*/
- "600x600dpi_photo2",/*stand-in*/
- NULL
-};
-
-/* unsupported*/
-static const char* canon_PIXMA_MG8200_modeuses_PPpro[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photo",/*stand-in*/
- "600x600dpi_photo2",/*stand-in*/
- NULL
-};
-
-static const char* canon_PIXMA_MG8200_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- NULL
-};
-
-static const char* canon_PIXMA_MG8200_modeuses_Hagaki[] = {
- "600x600dpi_high2",
- "600x600dpi_std2",
- NULL
-};
-
-static const char* canon_PIXMA_MG8200_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- NULL
-};
-
-static const char* canon_PIXMA_MG8200_modeuses_disc[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- NULL
-};
-
-static const char* canon_PIXMA_MG8200_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
- NULL
-};
-
-/* unsupported*/
-static const char* canon_PIXMA_MG8200_modeuses_photorag[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photo",/*stand-in*/
- "600x600dpi_photo2",/*stand-in*/
- NULL
-};
-
-static const char* canon_PIXMA_MG8200_modeuses_PPother[] = {
- "600x600dpi_photo2",
- NULL
-};
-
-static const canon_modeuse_t canon_PIXMA_MG8200_modeuses[] = {
- { "Plain", canon_PIXMA_MG8200_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "PhotoPlusGloss2", canon_PIXMA_MG8200_modeuses_PPplusG2, 0 },/*unsupported*/
- { "PhotoProPlat", canon_PIXMA_MG8200_modeuses_PPpro, 0 },/*unsupported*/
- { "PhotoProSemiGloss",canon_PIXMA_MG8200_modeuses_PPplusG2, 0 },/*unsupported*/
- { "PhotopaperMatte", canon_PIXMA_MG8200_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_MG8200_modeuses_PPplusG2, 0 },/*unsupported*/
- { "Coated", canon_PIXMA_MG8200_modeuses_PPmatte, 0 },
- { "HagakiA", canon_PIXMA_MG8200_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "InkJetHagaki", canon_PIXMA_MG8200_modeuses_inkjetHagaki, 0 },
- { "CanonPhotoHagakiK",canon_PIXMA_MG8200_modeuses_PPplusG2, 0 },/*unsupported*/
- { "Hagaki", canon_PIXMA_MG8200_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "DiscCompat", canon_PIXMA_MG8200_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_MG8200_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_MG8200_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_MG8200_modeuses_Hagaki, 0 },
- { "FineArtPhotoRag", canon_PIXMA_MG8200_modeuses_photorag, 0 },/*unsupported*/
- { "FineArtOther", canon_PIXMA_MG8200_modeuses_photorag, 0 },/*unsupported*/
- { "PhotopaperOther", canon_PIXMA_MG8200_modeuses_PPother, 0 },
-};
-
-DECLARE_MODEUSES(canon_PIXMA_MG8200);
-
-/* ----------------------------------- Canon Pro9000 ----------------------------------- */
-
-static const char* canon_PIXMA_Pro9000_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi",
- "600x600dpi_std2",
- "600x600dpi_draft",
- "600x600dpi_draft2",
- /* Mono */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",
- "600x600dpi_draftmono2",
- NULL
- };
-
-/* highest mode not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9000_modeuses_PPplusG2[] = {
- "600x600dpi_photo",
- /* Mono */
- "600x600dpi_photomonohigh",
- "600x600dpi_photomono",
- NULL
-};
-
-/* highest mode not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9000_modeuses_PPplus[] = {
- "600x600dpi_photo",
- "600x600dpi_photodraft2",
- /* Mono */
- "600x600dpi_photomonohigh",
- "600x600dpi_photomono",
- "600x600dpi_photomonodraft",
- NULL
-};
-
-static const char* canon_PIXMA_Pro9000_modeuses_PPgloss[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photodraft",
- /* Mono */
- "600x600dpi_photomonohigh",
- "600x600dpi_photomonodraft",
- NULL
-};
-
-/* highest mode not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9000_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- /* Mono */
- "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",
- /* Mono */
- "600x600dpi_photomonohigh",
- "600x600dpi_photomonomed",
- NULL
-};
-
-static const char* canon_PIXMA_Pro9000_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- /* Mono */
- "600x600dpi_photomonohigh",
- "600x600dpi_photomono",
- NULL
-};
-
-static const char* canon_PIXMA_Pro9000_modeuses_inkjetHagaki[] = {
- "600x600dpi_photomed2",
- "600x600dpi_photomed",
- /* Mono */
- "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_draft3",/* bw=2 for mono */
- NULL
-};
-
-static const char* canon_PIXMA_Pro9000_modeuses_disc[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo2",
- /* Mono */
- "600x600dpi_photomonohigh",
- "600x600dpi_photomono",
- NULL
-};
-
-static const char* canon_PIXMA_Pro9000_modeuses_board[] = {
- "600x600dpi_photohigh5",
- /* Mono */
- "600x600dpi_photomono",
- NULL
- };
-
-static const char* canon_PIXMA_Pro9000_modeuses_photorag[] = {
- "600x600dpi_photohigh5",
- "600x600dpi_photo",
- /* Mono */
- "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_PPother[] = {
- "600x600dpi_photo",
- /* Mono */
- "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 },
- { "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 },
- { "Envelope", canon_PIXMA_Pro9000_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_Pro9000_modeuses_PPother, 0 },
- };
-
-DECLARE_MODEUSES(canon_PIXMA_Pro9000);
-
-/* ----------------------------------- Canon Pro9000mk2 ----------------------------------- */
-
-static const char* canon_PIXMA_Pro9000mk2_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",
- "600x600dpi_draft2",
- /* Mono */
- "600x600dpi_highmono",
- "600x600dpi_mono",
- "600x600dpi_draftmono",
- "600x600dpi_draftmono2",
- NULL
- };
-
-/* highest mode not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9000mk2_modeuses_PPplusG2[] = {
- "600x600dpi_photo",
- /* Mono */
- "600x600dpi_photomonohigh",
- "600x600dpi_photomono",
- NULL
-};
-
-static const char* canon_PIXMA_Pro9000mk2_modeuses_PPgloss[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photodraft",
- /* Mono */
- "600x600dpi_photomonohigh",
- "600x600dpi_photomonodraft",
- NULL
-};
-
-/* highest mode not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9000mk2_modeuses_PPpro2[] = {
- "600x600dpi_photomed",
- "600x600dpi_photo",
- /* Mono */
- "600x600dpi_photomonohigh",
- "600x600dpi_photomonomed",/*untested: quality setting uncertain*/
- "600x600dpi_photomono",
- NULL
-};
-
-/* highest mode not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9000mk2_modeuses_PPproPlat[] = {
- "600x600dpi_photomed",
- /* Mono */
- "600x600dpi_photomonohigh",
- "600x600dpi_photomonomed",
- NULL
-};
-
-static const char* canon_PIXMA_Pro9000mk2_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
- /* Mono */
- "600x600dpi_photomonohigh",
- "600x600dpi_photomono",
- NULL
-};
-
-static const char* canon_PIXMA_Pro9000mk2_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
- /* Mono */
- "600x600dpi_photomonohigh",
- "600x600dpi_photomono",
- NULL
-};
-
-static const char* canon_PIXMA_Pro9000mk2_modeuses_Hagaki[] = {
- "600x600dpi_high2",/* bw=2 for mono */
- "600x600dpi_std2",/* bw=2 for mono */
- "600x600dpi_draft2",/* bw=2 for mono */
- /* Mono */
- "600x600dpi_high3",
- NULL
-};
-
-static const char* canon_PIXMA_Pro9000mk2_modeuses_disc[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- /* Mono */
- "600x600dpi_photomonohigh",
- "600x600dpi_photomono",
- NULL
-};
-
-static const char* canon_PIXMA_Pro9000mk2_modeuses_board[] = {
- "600x600dpi_photohigh5",
- /* Mono */
- "600x600dpi_photomonohigh",
- NULL
- };
-
-static const char* canon_PIXMA_Pro9000mk2_modeuses_photorag[] = {
- "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_PPother[] = {
- "600x600dpi_photo",
- /* Mono */
- "600x600dpi_photomono",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_Pro9000mk2_modeuses[] = {
- { "Plain", canon_PIXMA_Pro9000mk2_modeuses_plain, 0 },
- { "PhotoPlusGloss2", canon_PIXMA_Pro9000mk2_modeuses_PPplusG2, 0 },
- { "GlossyPaper", canon_PIXMA_Pro9000mk2_modeuses_PPgloss, 0 },
- { "PhotoProSemiGloss", canon_PIXMA_Pro9000mk2_modeuses_PPplusG2, 0 },
- { "PhotoPro2", canon_PIXMA_Pro9000mk2_modeuses_PPpro2, 0 },
- { "PhotoProPlat", canon_PIXMA_Pro9000mk2_modeuses_PPproPlat, 0 },
- { "PhotopaperMatte", canon_PIXMA_Pro9000mk2_modeuses_PPmatte, 0 },
- { "Coated", canon_PIXMA_Pro9000mk2_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_Pro9000mk2_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_Pro9000mk2_modeuses_Hagaki, 0 },
- { "DiscCompat", canon_PIXMA_Pro9000mk2_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_Pro9000mk2_modeuses_disc, 0 },
- { "Boardpaper", canon_PIXMA_Pro9000mk2_modeuses_board, 0 },
- { "Canvas", canon_PIXMA_Pro9000mk2_modeuses_board, 0 },
- { "FineArtPhotoRag", canon_PIXMA_Pro9000mk2_modeuses_photorag, 0 },
- { "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 },
- { "Envelope", canon_PIXMA_Pro9000mk2_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_Pro9000mk2_modeuses_PPother, 0 },
- };
-
-DECLARE_MODEUSES(canon_PIXMA_Pro9000mk2);
-
-/* ----------------------------------- Canon Pro9500 ----------------------------------- */
-
-static const char* canon_PIXMA_Pro9500_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",
- /* Mono */
- "600x600dpi_highmono2",
- "600x600dpi_highmono",/*untested*/
- "600x600dpi_mono",
- "600x600dpi_draftmono",
- "600x600dpi_draftmono2",/*untested*/
- NULL
- };
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500_modeuses_PPplusG2[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
-};
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500_modeuses_PPgloss[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
-};
-
-/* highest mode not yet supported (R,G inks) */
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500_modeuses_PPpro2[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
-};
-
-/* highest mode not yet supported (R,G inks) */
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500_modeuses_PPproPlat[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
-};
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500_modeuses_PPmatte[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
-};
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500_modeuses_inkjetHagaki[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
-};
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500_modeuses_Hagaki[] = {
- /* Mono */
- "600x600dpi_highmono2",
- "600x600dpi_highmono",
- "600x600dpi_mono",/*untested*/
- "600x600dpi_draftmono",/*untested*/
- "600x600dpi_draftmono2",/*untested*/
- NULL
-};
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500_modeuses_disc[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
-};
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500_modeuses_board[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
- };
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500_modeuses_photorag[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
- };
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500_modeuses_TShirt[] = {
- "600x600dpi_photomono",/* bw=2 for mono */
- NULL
-};
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500_modeuses_PPother[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_Pro9500_modeuses[] = {
- { "Plain", canon_PIXMA_Pro9500_modeuses_plain, 0 },
- { "PhotoPlusGloss2", canon_PIXMA_Pro9500_modeuses_PPplusG2, 0 },
- { "GlossyPaper", canon_PIXMA_Pro9500_modeuses_PPgloss, 0 },
- { "PhotoProSemiGloss", canon_PIXMA_Pro9500_modeuses_PPplusG2, 0 },
- { "PhotoPro2", canon_PIXMA_Pro9500_modeuses_PPpro2, 0 },
- { "PhotoProPlat", canon_PIXMA_Pro9500_modeuses_PPproPlat, 0 },
- { "PhotopaperMatte", canon_PIXMA_Pro9500_modeuses_PPmatte, 0 },
- { "Coated", canon_PIXMA_Pro9500_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_Pro9500_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_Pro9500_modeuses_Hagaki, 0 },
- { "DiscCompat", canon_PIXMA_Pro9500_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_Pro9500_modeuses_disc, 0 },
- { "Boardpaper", canon_PIXMA_Pro9500_modeuses_board, 0 },
- { "Canvas", canon_PIXMA_Pro9500_modeuses_board, 0 },
- { "FineArtPhotoRag", canon_PIXMA_Pro9500_modeuses_photorag, 0 },
- { "FineArtOther", canon_PIXMA_Pro9500_modeuses_board, 0 },
- { "FineArtPremiumMatte",canon_PIXMA_Pro9500_modeuses_board, 0 },
- { "FineArtMuseumEtching",canon_PIXMA_Pro9500_modeuses_photorag, 0 },
- { "TShirt", canon_PIXMA_Pro9500_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_Pro9500_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_Pro9500_modeuses_PPother, 0 },
- };
-
-DECLARE_MODEUSES(canon_PIXMA_Pro9500);
-
-/* ----------------------------------- Canon Pro9500mk2 ----------------------------------- */
-
-static const char* canon_PIXMA_Pro9500mk2_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "600x600dpi_draft",
- /* Mono */
- "600x600dpi_highmono2",
- "600x600dpi_highmono",/*untested*/
- "600x600dpi_mono",
- "600x600dpi_draftmono",
- "600x600dpi_draftmono2",/*untested*/
- NULL
- };
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500mk2_modeuses_PPplusG2[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
-};
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500mk2_modeuses_PPgloss[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
-};
-
-/* highest mode not yet supported (R,G inks) */
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500mk2_modeuses_PPproPlat[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
-};
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500mk2_modeuses_PPmatte[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
-};
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500mk2_modeuses_inkjetHagaki[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
-};
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500mk2_modeuses_Hagaki[] = {
- /* Mono */
- "600x600dpi_highmono2",
- "600x600dpi_highmono",
- "600x600dpi_mono",/*untested*/
- "600x600dpi_draftmono",/*untested*/
- "600x600dpi_draftmono2",/*untested*/
- NULL
-};
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500mk2_modeuses_disc[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
-};
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500mk2_modeuses_board[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
- };
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500mk2_modeuses_photorag[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
- };
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500mk2_modeuses_TShirt[] = {
- "600x600dpi_photomono",/* bw=2 for mono */
- NULL
-};
-
-/* modes not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9500mk2_modeuses_PPother[] = {
- /* Mono */
- "600x600dpi_photomono",
- NULL
- };
-
-static const canon_modeuse_t canon_PIXMA_Pro9500mk2_modeuses[] = {
- { "Plain", canon_PIXMA_Pro9500mk2_modeuses_plain, 0 },
- { "PhotoPlusGloss2", canon_PIXMA_Pro9500mk2_modeuses_PPplusG2, 0 },
- { "PhotoProPlat", canon_PIXMA_Pro9500mk2_modeuses_PPproPlat, 0 },
- { "GlossyPaper", canon_PIXMA_Pro9500mk2_modeuses_PPgloss, 0 },
- { "PhotoProSemiGloss", canon_PIXMA_Pro9500mk2_modeuses_PPplusG2, 0 },
- { "PhotopaperMatte", canon_PIXMA_Pro9500mk2_modeuses_PPmatte, 0 },
- { "Coated", canon_PIXMA_Pro9500mk2_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_Pro9500mk2_modeuses_inkjetHagaki, 0 },
- { "Hagaki", canon_PIXMA_Pro9500mk2_modeuses_Hagaki, 0 },
- { "DiscCompat", canon_PIXMA_Pro9500mk2_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_Pro9500mk2_modeuses_disc, 0 },
- { "Boardpaper", canon_PIXMA_Pro9500mk2_modeuses_board, 0 },
- { "Canvas", canon_PIXMA_Pro9500mk2_modeuses_board, 0 },
- { "FineArtPhotoRag", canon_PIXMA_Pro9500mk2_modeuses_photorag, 0 },
- { "FineArtOther", canon_PIXMA_Pro9500mk2_modeuses_board, 0 },
- { "FineArtPremiumMatte",canon_PIXMA_Pro9500mk2_modeuses_board, 0 },
- { "FineArtMuseumEtching",canon_PIXMA_Pro9500mk2_modeuses_photorag, 0 },
- { "TShirt", canon_PIXMA_Pro9500mk2_modeuses_TShirt, 0 },
- { "Envelope", canon_PIXMA_Pro9500mk2_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_Pro9500mk2_modeuses_PPother, 0 },
- };
-
-DECLARE_MODEUSES(canon_PIXMA_Pro9500mk2);
-
-#endif
+/* + * Print plug-in CANON BJL driver for the GIMP. + * + * Copyright 1997-2000 Michael Sweet (mike@easysw.com), + * Robert Krawitz (rlk@alum.mit.edu) and + * Andy Thaller (thaller@ph.tum.de) + * Copyright (c) 2006 - 2007 Sascha Sommer (saschasommer@freenet.de) + * + * 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. + */ + +/* This file contains the usage matrix matching media with modes +*/ + +#ifndef GUTENPRINT_INTERNAL_CANON_MEDIA_MODE_H +#define GUTENPRINT_INTERNAL_CANON_MEDIA_MODE_H + +/* create matrix of which media are used with which mode */ + +typedef struct { + const char *name; /* unstranslated media name */ + const char** mode_name_list; /* untranslated mode names */ + const unsigned int use_flags; + /* flags to indicate support in the media */ +#define INKSET_BLACK_SUPPORT 0x1 +#define INKSET_COLOR_SUPPORT 0x2 + /*#define INKSET_BOTH_SUPPORT 0x4*/ +#define INKSET_PHOTO_SUPPORT 0x8 + /* duplex support for media --- this is currently not implemented: so duplex can be specified for all media types */ +#define DUPLEX_SUPPORT 0x10 + /* flags to indicate existence of special replacement modes to search for */ +#define INKSET_BLACK_MODEREPL 0x100 +#define INKSET_COLOR_MODEREPL 0x200 + /*#define INKSET_BOTH_MODEREPL 0x400*/ +#define INKSET_PHOTO_MODEREPL 0x800 +#define DUPLEX_MODEREPL 0x1000 + +} canon_modeuse_t; + +typedef struct { + const char *name; + const short count; + const canon_modeuse_t *modeuses; +} canon_modeuselist_t; + +#define DECLARE_MODEUSES(name) \ + static const canon_modeuselist_t name##_modeuselist = { \ + #name, \ + sizeof(name##_modeuses) / sizeof(canon_modeuse_t), \ + name##_modeuses \ +} + +/* Ordering of data: + BJC + DS + mini + S + i --- *i is Japanese model, with Hagaki/inkjetHagaki support. + i* is US model without such support. Not sure about European models. + iP + iX + MP + MX + MG + Pro +*/ + +/* ----------------------------------- Canon BJC 30 ----------------------------------- */ +/* TODO: mode-media correlation */ +static const char* canon_BJC_30_modeuses_plain[] = { + "720x360dpi", + "360x360dpi", + "180x180dpi", + NULL +}; + +static const canon_modeuse_t canon_BJC_30_modeuses[] = { + { "Plain", canon_BJC_30_modeuses_plain, 0 }, + { "Transparency", canon_BJC_30_modeuses_plain, 0 }, + { "BackPrint", canon_BJC_30_modeuses_plain, 0 }, + { "Fabric", canon_BJC_30_modeuses_plain, 0 }, + { "Envelope", canon_BJC_30_modeuses_plain, 0 }, + { "Coated", canon_BJC_30_modeuses_plain, 0 }, + { "TShirt", canon_BJC_30_modeuses_plain, 0 }, + { "GlossyFilm", canon_BJC_30_modeuses_plain, 0 }, + { "GlossyPaper", canon_BJC_30_modeuses_plain, 0 }, + { "GlossyCard", canon_BJC_30_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_30_modeuses_plain, 0 }, + { "Other", canon_BJC_30_modeuses_plain, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_30); + +/* ----------------------------------- Canon BJC 85 ----------------------------------- */ +/* TODO: mode-media correlation */ +static const char* canon_BJC_85_modeuses_plain[] = { + "720x360dpi", + "360x360dmt", + "360x360dpi", + NULL +}; + +static const canon_modeuse_t canon_BJC_85_modeuses[] = { + { "Plain", canon_BJC_85_modeuses_plain, 0 }, + { "Transparency", canon_BJC_85_modeuses_plain, 0 }, + { "BackPrint", canon_BJC_85_modeuses_plain, 0 }, + { "Fabric", canon_BJC_85_modeuses_plain, 0 }, + { "Envelope", canon_BJC_85_modeuses_plain, 0 }, + { "Coated", canon_BJC_85_modeuses_plain, 0 }, + { "TShirt", canon_BJC_85_modeuses_plain, 0 }, + { "GlossyFilm", canon_BJC_85_modeuses_plain, 0 }, + { "GlossyPaper", canon_BJC_85_modeuses_plain, 0 }, + { "GlossyCard", canon_BJC_85_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_85_modeuses_plain, 0 }, + { "Other", canon_BJC_85_modeuses_plain, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_85); + +/* ----------------------------------- Canon BJC 210 ----------------------------------- */ +/* TODO: mode-media correlation */ +static const char* canon_BJC_210_modeuses_plain[] = { + "720x360dpi", + "360x360dpi", + "180x180dpi", + "90x90dpi", + NULL +}; + +static const canon_modeuse_t canon_BJC_210_modeuses[] = { + { "Plain", canon_BJC_210_modeuses_plain, 0 }, + { "Transparency", canon_BJC_210_modeuses_plain, 0 }, + { "BackPrint", canon_BJC_210_modeuses_plain, 0 }, + { "Fabric", canon_BJC_210_modeuses_plain, 0 }, + { "Envelope", canon_BJC_210_modeuses_plain, 0 }, + { "Coated", canon_BJC_210_modeuses_plain, 0 }, + { "TShirt", canon_BJC_210_modeuses_plain, 0 }, + { "GlossyFilm", canon_BJC_210_modeuses_plain, 0 }, + { "GlossyPaper", canon_BJC_210_modeuses_plain, 0 }, + { "GlossyCard", canon_BJC_210_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_210_modeuses_plain, 0 }, + { "Other", canon_BJC_210_modeuses_plain, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_210); + +/* ----------------------------------- Canon BJC 240 ----------------------------------- */ +/* TODO: mode-media correlation */ +static const char* canon_BJC_240_modeuses_plain[] = { + "720x360dpi", + "360x360dmt", + "360x360dpi", + "180x180dpi", + "90x90dpi", + NULL +}; + +static const canon_modeuse_t canon_BJC_240_modeuses[] = { + { "Plain", canon_BJC_240_modeuses_plain, 0 }, + { "Transparency", canon_BJC_240_modeuses_plain, 0 }, + { "BackPrint", canon_BJC_240_modeuses_plain, 0 }, + { "Fabric", canon_BJC_240_modeuses_plain, 0 }, + { "Envelope", canon_BJC_240_modeuses_plain, 0 }, + { "Coated", canon_BJC_240_modeuses_plain, 0 }, + { "TShirt", canon_BJC_240_modeuses_plain, 0 }, + { "GlossyFilm", canon_BJC_240_modeuses_plain, 0 }, + { "GlossyPaper", canon_BJC_240_modeuses_plain, 0 }, + { "GlossyCard", canon_BJC_240_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_240_modeuses_plain, 0 }, + { "Other", canon_BJC_240_modeuses_plain, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_240); + +/* ----------------------------------- Canon BJC 2000 ----------------------------------- */ +/* TODO: mode-media correlation */ +static const char* canon_BJC_2000_modeuses_plain[] = { + "360x360dpi", + "180x180dpi", + NULL +}; + +static const canon_modeuse_t canon_BJC_2000_modeuses[] = { + { "Plain", canon_BJC_2000_modeuses_plain, 0 }, + { "Transparency", canon_BJC_2000_modeuses_plain, 0 }, + { "BackPrint", canon_BJC_2000_modeuses_plain, 0 }, + { "Fabric", canon_BJC_2000_modeuses_plain, 0 }, + { "Envelope", canon_BJC_2000_modeuses_plain, 0 }, + { "Coated", canon_BJC_2000_modeuses_plain, 0 }, + { "TShirt", canon_BJC_2000_modeuses_plain, 0 }, + { "GlossyFilm", canon_BJC_2000_modeuses_plain, 0 }, + { "GlossyPaper", canon_BJC_2000_modeuses_plain, 0 }, + { "GlossyCard", canon_BJC_2000_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_2000_modeuses_plain, 0 }, + { "Other", canon_BJC_2000_modeuses_plain, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_2000); + +/* ----------------------------------- Canon BJC 3000 ----------------------------------- */ + +static const char* canon_BJC_3000_modeuses_plain[] = { + "1440x720dpi",/*untested*/ + "720x720dpi", + "360x360dpi", + "360x360dmt", + "360x360dpi_draft", + "180x180dpi", + /* Photo */ + "360x360dpi_photo", + NULL +}; + +static const char* canon_BJC_3000_modeuses_PPgloss[] = { + "1440x720dpi", + "720x720dpi", + "360x360dpi", + "360x360dmt", + /* Photo */ + "360x360dpi_photo", + NULL +}; + +static const char* canon_BJC_3000_modeuses_coated[] = { + "1440x720dpi", + "720x720dpi", + "360x360dpi", + "360x360dmt", + "360x360dpi_draft", + /* Photo */ + "360x360dpi_photo", + NULL +}; + +static const char* canon_BJC_3000_modeuses_glossFilm[] = { + "720x720dpi", + "360x360dpi", + "360x360dmt", + NULL +}; + +static const char* canon_BJC_3000_modeuses_Tshirt[] = { + "360x360dpi", + "360x360dmt", + NULL +}; + +static const char* canon_BJC_3000_modeuses_Transparency[] = { + "360x360dpi", + "360x360dmt", + "360x360dpi_draft", + NULL +}; + +static const char* canon_BJC_3000_modeuses_Envelope[] = { + "720x720dpi", + "360x360dpi", + "360x360dmt", + "360x360dpi_draft", + NULL +}; + +static const canon_modeuse_t canon_BJC_3000_modeuses[] = { + { "Plain", canon_BJC_3000_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL }, + { "Transparency", canon_BJC_3000_modeuses_Transparency, INKSET_BLACK_SUPPORT }, + { "BackPrint", canon_BJC_3000_modeuses_Tshirt, 0 }, + { "Fabric", canon_BJC_3000_modeuses_Tshirt, 0 },/*untested*/ + { "Envelope", canon_BJC_3000_modeuses_Envelope, INKSET_BLACK_SUPPORT }, + { "Coated", canon_BJC_3000_modeuses_coated, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL }, + { "TShirt", canon_BJC_3000_modeuses_Tshirt, 0 }, + { "GlossyFilm", canon_BJC_3000_modeuses_glossFilm, 0 }, + { "GlossyPaper", canon_BJC_3000_modeuses_PPgloss, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL }, + { "GlossyCard", canon_BJC_3000_modeuses_PPgloss, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL }, + { "GlossyPro", canon_BJC_3000_modeuses_PPgloss, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },/*untested*/ + { "Other", canon_BJC_3000_modeuses_PPgloss, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_3000); + +/* ----------------------------------- Canon BJC 4300 ----------------------------------- */ + +static const char* canon_BJC_4300_modeuses_plain[] = { + "360x360dpi_high", + "360x360dpi", + "360x360dmt", + "720x360dpi", + "360x360dpi_draft", + "180x180dpi", + /* Photo */ + "360x360dpi_photo", + NULL +}; + +static const char* canon_BJC_4300_modeuses_PPgloss[] = { + "360x360dpi_high", + "360x360dpi", + "360x360dmt", + "720x360dpi",/*mono*/ + /* Photo */ + "360x360dpi_photo", + NULL +}; + +static const char* canon_BJC_4300_modeuses_coated[] = { + "360x360dpi_high", + "360x360dpi", + "360x360dmt", + "720x360dpi", + "360x360dpi_draft", + /* Photo */ + "360x360dpi_photo", + NULL +}; + +static const char* canon_BJC_4300_modeuses_glossFilm[] = { + "360x360dpi_high", + "360x360dpi", + "360x360dmt", + "720x360dpi",/*mono*/ + NULL +}; + +static const canon_modeuse_t canon_BJC_4300_modeuses[] = { + { "Plain", canon_BJC_4300_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL }, + { "Transparency", canon_BJC_4300_modeuses_glossFilm, INKSET_BLACK_SUPPORT }, + { "BackPrint", canon_BJC_4300_modeuses_glossFilm, INKSET_BLACK_SUPPORT }, + { "Fabric", canon_BJC_4300_modeuses_glossFilm, INKSET_BLACK_SUPPORT }, + { "Envelope", canon_BJC_4300_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL }, + { "Coated", canon_BJC_4300_modeuses_coated, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL }, + { "TShirt", canon_BJC_4300_modeuses_glossFilm, INKSET_BLACK_SUPPORT }, + { "GlossyFilm", canon_BJC_4300_modeuses_glossFilm, INKSET_BLACK_SUPPORT }, + { "GlossyPaper", canon_BJC_4300_modeuses_PPgloss, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL }, + { "GlossyCard", canon_BJC_4300_modeuses_PPgloss, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL }, + { "GlossyPro", canon_BJC_4300_modeuses_PPgloss, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },/*untested*/ + { "Other", canon_BJC_4300_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL }, +}; + +DECLARE_MODEUSES(canon_BJC_4300); + +/* ----------------------------------- Canon BJC 4400 ----------------------------------- */ +/* TODO: mode-media correlation */ +static const char* canon_BJC_4400_modeuses_plain[] = { + "720x360dpi", + "360x360dpi", + NULL +}; + +static const canon_modeuse_t canon_BJC_4400_modeuses[] = { + { "Plain", canon_BJC_4400_modeuses_plain, 0 }, + { "Transparency", canon_BJC_4400_modeuses_plain, 0 }, + { "BackPrint", canon_BJC_4400_modeuses_plain, 0 }, + { "Fabric", canon_BJC_4400_modeuses_plain, 0 }, + { "Envelope", canon_BJC_4400_modeuses_plain, 0 }, + { "Coated", canon_BJC_4400_modeuses_plain, 0 }, + { "TShirt", canon_BJC_4400_modeuses_plain, 0 }, + { "GlossyFilm", canon_BJC_4400_modeuses_plain, 0 }, + { "GlossyPaper", canon_BJC_4400_modeuses_plain, 0 }, + { "GlossyCard", canon_BJC_4400_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_4400_modeuses_plain, 0 }, + { "Other", canon_BJC_4400_modeuses_plain, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_4400); + +/* ----------------------------------- Canon BJC 4550 ----------------------------------- */ + +static const char* canon_BJC_4550_modeuses_plain[] = { + "720x360dpi_high", + "360x360dpi_high", + "720x360dpi", + "360x360dpi", + "180x180dpi", + /* Photo */ + "360x360dpi_photo", + NULL +}; + +static const char* canon_BJC_4550_modeuses_glossFilm[] = { + "720x360dpi_high", + "360x360dpi_high", + "360x360dpi",/*untested*/ + "180x180dpi", + NULL +}; + +static const canon_modeuse_t canon_BJC_4550_modeuses[] = { + { "Plain", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL }, + { "Transparency", canon_BJC_4550_modeuses_glossFilm, INKSET_BLACK_SUPPORT }, + { "BackPrint", canon_BJC_4550_modeuses_glossFilm, INKSET_BLACK_SUPPORT }, + { "Fabric", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT }, + { "Envelope", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL }, + { "Coated", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL }, + { "TShirt", canon_BJC_4550_modeuses_glossFilm, INKSET_BLACK_SUPPORT }, + { "GlossyFilm", canon_BJC_4550_modeuses_glossFilm, INKSET_BLACK_SUPPORT }, + { "GlossyPaper", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL }, + { "GlossyCard", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },/*untested*/ + { "GlossyPro", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL },/*untested*/ + { "Other", canon_BJC_4550_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_PHOTO_SUPPORT | INKSET_PHOTO_MODEREPL }, +}; + +DECLARE_MODEUSES(canon_BJC_4550); + +/* ----------------------------------- Canon BJC 5500 ----------------------------------- */ +/* TODO: mode-media correlation */ +static const char* canon_BJC_5500_modeuses_plain[] = { + "360x360dpi", + "180x180dpi", + NULL +}; + +static const canon_modeuse_t canon_BJC_5500_modeuses[] = { + { "Plain", canon_BJC_5500_modeuses_plain, 0 }, + { "Transparency", canon_BJC_5500_modeuses_plain, 0 }, + { "BackPrint", canon_BJC_5500_modeuses_plain, 0 }, + { "Fabric", canon_BJC_5500_modeuses_plain, 0 }, + { "Envelope", canon_BJC_5500_modeuses_plain, 0 }, + { "Coated", canon_BJC_5500_modeuses_plain, 0 }, + { "TShirt", canon_BJC_5500_modeuses_plain, 0 }, + { "GlossyFilm", canon_BJC_5500_modeuses_plain, 0 }, + { "GlossyPaper", canon_BJC_5500_modeuses_plain, 0 }, + { "GlossyCard", canon_BJC_5500_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_5500_modeuses_plain, 0 }, + { "Other", canon_BJC_5500_modeuses_plain, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_5500); + +/* ----------------------------------- Canon BJC 6000 ----------------------------------- */ +/* TODO: mode-media correlation */ +static const char* canon_BJC_6000_modeuses_plain[] = { + "1440x720dpi", + "720x720dpi", + "360x360dmt", + "360x360dpi", + NULL +}; + +static const canon_modeuse_t canon_BJC_6000_modeuses[] = { + { "Plain", canon_BJC_6000_modeuses_plain, 0 }, + { "Transparency", canon_BJC_6000_modeuses_plain, 0 }, + { "BackPrint", canon_BJC_6000_modeuses_plain, 0 }, + { "Fabric", canon_BJC_6000_modeuses_plain, 0 }, + { "Envelope", canon_BJC_6000_modeuses_plain, 0 }, + { "Coated", canon_BJC_6000_modeuses_plain, 0 }, + { "TShirt", canon_BJC_6000_modeuses_plain, 0 }, + { "GlossyFilm", canon_BJC_6000_modeuses_plain, 0 }, + { "GlossyPaper", canon_BJC_6000_modeuses_plain, 0 }, + { "GlossyCard", canon_BJC_6000_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_6000_modeuses_plain, 0 }, + { "Other", canon_BJC_6000_modeuses_plain, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_6000); + +/* ----------------------------------- Canon BJC 7000 ----------------------------------- */ +/* TODO: mode-media correlation */ +static const char* canon_BJC_7000_modeuses_plain[] = { + "1200x1200dpi", + "600x600dpi", + "300x300dpi", + NULL +}; + +static const canon_modeuse_t canon_BJC_7000_modeuses[] = { + { "Plain", canon_BJC_7000_modeuses_plain, 0 }, + { "Transparency", canon_BJC_7000_modeuses_plain, 0 }, + { "BackPrint", canon_BJC_7000_modeuses_plain, 0 }, + { "Fabric", canon_BJC_7000_modeuses_plain, 0 }, + { "Envelope", canon_BJC_7000_modeuses_plain, 0 }, + { "Coated", canon_BJC_7000_modeuses_plain, 0 }, + { "TShirt", canon_BJC_7000_modeuses_plain, 0 }, + { "GlossyFilm", canon_BJC_7000_modeuses_plain, 0 }, + { "GlossyPaper", canon_BJC_7000_modeuses_plain, 0 }, + { "GlossyCard", canon_BJC_7000_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_7000_modeuses_plain, 0 }, + { "Other", canon_BJC_7000_modeuses_plain, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_7000); + +/* ----------------------------------- Canon BJC 7100 ----------------------------------- */ +/* TODO: mode-media correlation */ +static const char* canon_BJC_7100_modeuses_plain[] = { + "1200x1200dpi", + "600x600dpi", + "300x300dpi", + NULL +}; + +static const canon_modeuse_t canon_BJC_7100_modeuses[] = { + { "Plain", canon_BJC_7100_modeuses_plain, 0 }, + { "Transparency", canon_BJC_7100_modeuses_plain, 0 }, + { "BackPrint", canon_BJC_7100_modeuses_plain, 0 }, + { "Fabric", canon_BJC_7100_modeuses_plain, 0 }, + { "Envelope", canon_BJC_7100_modeuses_plain, 0 }, + { "Coated", canon_BJC_7100_modeuses_plain, 0 }, + { "TShirt", canon_BJC_7100_modeuses_plain, 0 }, + { "GlossyFilm", canon_BJC_7100_modeuses_plain, 0 }, + { "GlossyPaper", canon_BJC_7100_modeuses_plain, 0 }, + { "GlossyCard", canon_BJC_7100_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_7100_modeuses_plain, 0 }, + { "Other", canon_BJC_7100_modeuses_plain, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_7100); + +/* ----------------------------------- Canon BJC 8200 ----------------------------------- */ +/* TODO: mode-media correlation */ +static const char* canon_BJC_8200_modeuses_plain[] = { + "1200x1200dpi", + "600x600dpi", + "300x300dpi", + NULL +}; + +static const canon_modeuse_t canon_BJC_8200_modeuses[] = { + { "Plain", canon_BJC_8200_modeuses_plain, 0 }, + { "Transparency", canon_BJC_8200_modeuses_plain, 0 }, + { "BackPrint", canon_BJC_8200_modeuses_plain, 0 }, + { "Fabric", canon_BJC_8200_modeuses_plain, 0 }, + { "Envelope", canon_BJC_8200_modeuses_plain, 0 }, + { "Coated", canon_BJC_8200_modeuses_plain, 0 }, + { "TShirt", canon_BJC_8200_modeuses_plain, 0 }, + { "GlossyFilm", canon_BJC_8200_modeuses_plain, 0 }, + { "GlossyPaper", canon_BJC_8200_modeuses_plain, 0 }, + { "GlossyCard", canon_BJC_8200_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_8200_modeuses_plain, 0 }, + { "Other", canon_BJC_8200_modeuses_plain, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_8200); + +/* ----------------------------------- Canon BJC 8500 ----------------------------------- */ +/* TODO: mode-media correlation */ +static const char* canon_BJC_8500_modeuses_plain[] = { + "600x600dpi", + "300x300dpi", + NULL +}; + +static const canon_modeuse_t canon_BJC_8500_modeuses[] = { + { "Plain", canon_BJC_8500_modeuses_plain, 0 }, + { "Transparency", canon_BJC_8500_modeuses_plain, 0 }, + { "BackPrint", canon_BJC_8500_modeuses_plain, 0 }, + { "Fabric", canon_BJC_8500_modeuses_plain, 0 }, + { "Envelope", canon_BJC_8500_modeuses_plain, 0 }, + { "Coated", canon_BJC_8500_modeuses_plain, 0 }, + { "TShirt", canon_BJC_8500_modeuses_plain, 0 }, + { "GlossyFilm", canon_BJC_8500_modeuses_plain, 0 }, + { "GlossyPaper", canon_BJC_8500_modeuses_plain, 0 }, + { "GlossyCard", canon_BJC_8500_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_8500_modeuses_plain, 0 }, + { "Other", canon_BJC_8500_modeuses_plain, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_8500); + +/* ----------------------------------- Canon DS700 ----------------------------------- */ +static const char* canon_SELPHY_DS700_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_SELPHY_DS700_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_SELPHY_DS700_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_SELPHY_DS700_modeuses_PPgloss[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo", + NULL +}; + +static const char* canon_SELPHY_DS700_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_SELPHY_DS700_modeuses_Hagaki[] = { + "600x600dpi_photo3", + "600x600dpi_photodraft2", + NULL +}; + +static const canon_modeuse_t canon_SELPHY_DS700_modeuses[] = { + { "GlossyPro", canon_SELPHY_DS700_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_SELPHY_DS700_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_SELPHY_DS700_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_SELPHY_DS700_modeuses_PPgloss, 0 }, + { "InkJetHagaki", canon_SELPHY_DS700_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_SELPHY_DS700_modeuses_Hagaki, 0 }, +}; + +DECLARE_MODEUSES(canon_SELPHY_DS700); + +/* ----------------------------------- Canon DS810 ----------------------------------- */ +static const char* canon_SELPHY_DS810_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_SELPHY_DS810_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_SELPHY_DS810_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_SELPHY_DS810_modeuses_PPgloss[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo", + NULL +}; + +static const char* canon_SELPHY_DS810_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_SELPHY_DS810_modeuses_Hagaki[] = { + "600x600dpi_photo3", + "600x600dpi_photodraft2", + NULL +}; + +static const canon_modeuse_t canon_SELPHY_DS810_modeuses[] = { + { "GlossyPro", canon_SELPHY_DS810_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_SELPHY_DS810_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_SELPHY_DS810_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_SELPHY_DS810_modeuses_PPgloss, 0 }, + { "InkJetHagaki", canon_SELPHY_DS810_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_SELPHY_DS810_modeuses_Hagaki, 0 }, +}; + +DECLARE_MODEUSES(canon_SELPHY_DS810); + +/* ----------------------------------- Canon mini220 ----------------------------------- */ +static const char* canon_PIXMA_mini220_modeuses_PPpro[] = { + "1200x1200dpi_photohigh", + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_mini220_modeuses_PPplus[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_mini220_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_mini220_modeuses_PPgloss[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_mini220_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_mini220_modeuses_Hagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo2", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_mini220_modeuses[] = { + { "GlossyPro", canon_PIXMA_mini220_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_mini220_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_PIXMA_mini220_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_mini220_modeuses_PPgloss, 0 }, + { "InkJetHagaki", canon_PIXMA_mini220_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_mini220_modeuses_Hagaki, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_mini220); + +/* ----------------------------------- Canon mini320 ----------------------------------- */ +/*most nodes not supported*/ +static const char* canon_PIXMA_mini320_modeuses_PPpro[] = { + "1200x1200dpi_photohigh", + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +/*most nodes not supported*/ +static const char* canon_PIXMA_mini320_modeuses_PPplus[] = { + "600x600dpi_photo", + NULL +}; + +/*unsupported*/ +static const char* canon_PIXMA_mini320_modeuses_PPmatte[] = { + "600x600dpi_photo",/*stand-in*/ + NULL +}; + +/*most nodes not supported*/ +static const char* canon_PIXMA_mini320_modeuses_PPgloss[] = { + "600x600dpi_photo", + NULL +}; + +/*unsupported*/ +static const char* canon_PIXMA_mini320_modeuses_inkjetHagaki[] = { + "600x600dpi_photo",/*stand-in*/ + NULL +}; + +/*unsupported*/ +static const char* canon_PIXMA_mini320_modeuses_Hagaki[] = { + "600x600dpi_photo",/*stand-in*/ + NULL +}; + +static const canon_modeuse_t canon_PIXMA_mini320_modeuses[] = { + { "GlossyPro", canon_PIXMA_mini320_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_mini320_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_mini320_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_PIXMA_mini320_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_mini320_modeuses_PPgloss, 0 }, + { "PhotoPlusGloss2", canon_PIXMA_mini320_modeuses_PPplus, 0 }, + { "InkJetHagaki", canon_PIXMA_mini320_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_mini320_modeuses_Hagaki, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_mini320); + +/* ----------------------------------- Canon S200 ----------------------------------- */ +/* TODO: mode-media correlation */ +static const char* canon_BJC_S200_modeuses_plain[] = { + "1440x1440dpi", + "1440x720dpi", + "720x720dpi", + "360x360dpi", + NULL + }; + +static const canon_modeuse_t canon_BJC_S200_modeuses[] = { + { "Plain", canon_BJC_S200_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_S200_modeuses_plain, 0 }, + { "PhotopaperPlus", canon_BJC_S200_modeuses_plain, 0 },/*untested*/ + { "PhotopaperPlusDouble",canon_BJC_S200_modeuses_plain, 0 },/*untested*/ + { "PhotopaperMatte", canon_BJC_S200_modeuses_plain, 0 },/*untested*/ + { "GlossyPaper", canon_BJC_S200_modeuses_plain, 0 }, + { "Coated", canon_BJC_S200_modeuses_plain, 0 }, + { "InkJetHagaki", canon_BJC_S200_modeuses_plain, 0 },/*untested*/ + { "Hagaki", canon_BJC_S200_modeuses_plain, 0 },/*untested*/ + { "GlossyFilm", canon_BJC_S200_modeuses_plain, 0 }, + { "TShirt", canon_BJC_S200_modeuses_plain, 0 }, + { "Transparency", canon_BJC_S200_modeuses_plain, 0 }, + { "Envelope", canon_BJC_S200_modeuses_plain, 0 }, + { "PhotopaperOther", canon_BJC_S200_modeuses_plain, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_S200); + +/* ----------------------------------- Canon BJC S300 ----------------------------------- */ +static const char* canon_BJC_S300_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_std2", + "600x600dpi",/*untested*/ + "300x300dpi", + NULL + }; + +static const char* canon_BJC_S300_modeuses_PPpro[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_S300_modeuses_PPgloss[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_S300_modeuses_coated[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_S300_modeuses_Envelope[] = { + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3", + NULL +}; + +static const char* canon_BJC_S300_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_S300_modeuses_Transparency[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const canon_modeuse_t canon_BJC_S300_modeuses[] = { + { "Plain", canon_BJC_S300_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_S300_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_S300_modeuses_PPgloss, 0 },/*untested*/ + { "PhotopaperPlusDouble", canon_BJC_S300_modeuses_PPgloss, 0 },/*untested*/ + { "PhotopaperMatte", canon_BJC_S300_modeuses_PPgloss, 0 },/*untested*/ + { "GlossyPaper", canon_BJC_S300_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_S300_modeuses_coated, 0 }, + { "InkJetHagaki", canon_BJC_S300_modeuses_PPgloss, 0 },/*untested*/ + { "Hagaki", canon_BJC_S300_modeuses_Envelope, 0 },/*untested*/ + { "GlossyFilm", canon_BJC_S300_modeuses_coated, 0 }, + { "GlossyCard", canon_BJC_S300_modeuses_PPgloss, 0 }, + { "Transparency", canon_BJC_S300_modeuses_Transparency, 0 }, + { "TShirt", canon_BJC_S300_modeuses_TShirt, 0 }, + { "Envelope", canon_BJC_S300_modeuses_Envelope, 0 }, + { "PhotopaperOther", canon_BJC_S300_modeuses_PPgloss, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_S300); + +/* ----------------------------------- Canon BJC S330 ----------------------------------- */ +static const char* canon_BJC_S330_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_std2", + "600x600dpi",/*untested*/ + "300x300dpi", + NULL + }; + +static const char* canon_BJC_S330_modeuses_PPpro[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_S330_modeuses_PPmatte[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_S330_modeuses_PPgloss[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_S330_modeuses_Envelope[] = { + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3", + NULL +}; + +static const char* canon_BJC_S330_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_S330_modeuses_Transparency[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const canon_modeuse_t canon_BJC_S330_modeuses[] = { + { "Plain", canon_BJC_S330_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_S330_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_S330_modeuses_PPpro, 0 }, + { "PhotopaperPlusDouble", canon_BJC_S330_modeuses_PPpro, 0 },/*untested*/ + { "PhotopaperMatte", canon_BJC_S330_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_BJC_S330_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_S330_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_BJC_S330_modeuses_PPpro, 0 },/*untested*/ + { "Hagaki", canon_BJC_S330_modeuses_Envelope, 0 },/*untested*/ + { "GlossyFilm", canon_BJC_S330_modeuses_PPmatte, 0 }, + { "Transparency", canon_BJC_S330_modeuses_Transparency, 0 }, + { "TShirt", canon_BJC_S330_modeuses_TShirt, 0 }, + { "Envelope", canon_BJC_S330_modeuses_Envelope, 0 }, + { "PhotopaperOther", canon_BJC_S330_modeuses_PPpro, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_S330); + +/* ----------------------------------- Canon BJC S500 ----------------------------------- */ +static const char* canon_BJC_S500_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft", + "300x300dpi",/*untested*/ + "300x300dpi_draft", + NULL + }; + +static const char* canon_BJC_S500_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_S500_modeuses_coated[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_BJC_S500_modeuses_PPgloss[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_S500_modeuses_Envelope[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_BJC_S500_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_S500_modeuses_Transparency[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const canon_modeuse_t canon_BJC_S500_modeuses[] = { + { "Plain", canon_BJC_S500_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_S500_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_S500_modeuses_PPpro, 0 },/*untested*/ + { "PhotopaperPlusDouble", canon_BJC_S500_modeuses_PPpro, 0 },/*untested*/ + { "PhotopaperMatte", canon_BJC_S500_modeuses_coated, 0 },/*untested*/ + { "GlossyPaper", canon_BJC_S500_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_S500_modeuses_coated, 0 }, + { "InkJetHagaki", canon_BJC_S500_modeuses_PPpro, 0 },/*untested*/ + { "Hagaki", canon_BJC_S500_modeuses_Envelope, 0 },/*untested*/ + { "GlossyFilm", canon_BJC_S500_modeuses_PPpro, 0 }, + { "GlossyCard", canon_BJC_S500_modeuses_PPgloss, 0 }, + { "Transparency", canon_BJC_S500_modeuses_Transparency, 0 }, + { "TShirt", canon_BJC_S500_modeuses_TShirt, 0 }, + { "Envelope", canon_BJC_S500_modeuses_Envelope, 0 }, + { "PhotopaperOther", canon_BJC_S500_modeuses_PPpro, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_S500); + +/* ----------------------------------- Canon BJC S520 ----------------------------------- */ +static const char* canon_BJC_S520_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_highmono",/* mono */ + "600x600dpi",/*untested*/ + "600x600dpi_draft", + "300x300dpi",/*untested*/ + "300x300dpi_draft", + NULL + }; + +static const char* canon_BJC_S520_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_S520_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_S520_modeuses_PPgloss[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_S520_modeuses_coated[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_BJC_S520_modeuses_Envelope[] = { + "600x600dpi_high3", + "600x600dpi_highmono3",/* mono */ + "600x600dpi_std3", + NULL +}; + +static const char* canon_BJC_S520_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_S520_modeuses_Transparency[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const canon_modeuse_t canon_BJC_S520_modeuses[] = { + { "Plain", canon_BJC_S520_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_S520_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_S520_modeuses_PPpro, 0 }, + { "PhotopaperPlusDouble", canon_BJC_S520_modeuses_PPpro, 0 },/*untested*/ + { "PhotopaperMatte", canon_BJC_S520_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_BJC_S520_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_S520_modeuses_coated, 0 }, + { "InkJetHagaki", canon_BJC_S520_modeuses_PPpro, 0 },/*untested*/ + { "Hagaki", canon_BJC_S520_modeuses_Envelope, 0 },/*untested*/ + { "GlossyFilm", canon_BJC_S520_modeuses_PPpro, 0 }, + { "Transparency", canon_BJC_S520_modeuses_Transparency, 0 }, + { "TShirt", canon_BJC_S520_modeuses_TShirt, 0 }, + { "Envelope", canon_BJC_S520_modeuses_Envelope, 0 }, + { "PhotopaperOther", canon_BJC_S520_modeuses_PPpro, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_S520); + +/* ----------------------------------- Canon BJC S600 ----------------------------------- */ +static const char* canon_BJC_S600_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +static const char* canon_BJC_S600_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_S600_modeuses_coated[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_BJC_S600_modeuses_PPgloss[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_S600_modeuses_inkjetHagaki[] = { + "600x600dpi_photo3", + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_BJC_S600_modeuses_Envelope[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_BJC_S600_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_S600_modeuses_Transparency[] = { + "600x600dpi_photohigh5", + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const canon_modeuse_t canon_BJC_S600_modeuses[] = { + { "Plain", canon_BJC_S600_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_S600_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_S600_modeuses_PPpro, 0 },/*untested*/ + { "PhotopaperPlusDouble", canon_BJC_S600_modeuses_PPpro, 0 },/*untested*/ + { "PhotopaperMatte", canon_BJC_S600_modeuses_PPgloss, 0 },/*untested*/ + { "GlossyPaper", canon_BJC_S600_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_S600_modeuses_coated, 0 }, + { "InkJetHagaki", canon_BJC_S600_modeuses_inkjetHagaki, 0 },/*untested*/ + { "Hagaki", canon_BJC_S600_modeuses_Envelope, 0 },/*untested*/ + { "GlossyFilm", canon_BJC_S600_modeuses_PPpro, 0 }, + { "GlossyCard", canon_BJC_S600_modeuses_PPgloss, 0 }, + { "Transparency", canon_BJC_S600_modeuses_Transparency, 0 }, + { "TShirt", canon_BJC_S600_modeuses_TShirt, 0 }, + { "Envelope", canon_BJC_S600_modeuses_Envelope, 0 }, + { "PhotopaperOther", canon_BJC_S600_modeuses_PPpro, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_S600); + +/* ----------------------------------- Canon BJC S750 ----------------------------------- */ +static const char* canon_BJC_S750_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft", + "300x300dpi",/*untested*/ + "300x300dpi_draft", + NULL + }; + +static const char* canon_BJC_S750_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_S750_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_S750_modeuses_PPgloss[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_S750_modeuses_coated[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_BJC_S750_modeuses_Envelope[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_BJC_S750_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_S750_modeuses_Transparency[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const canon_modeuse_t canon_BJC_S750_modeuses[] = { + { "Plain", canon_BJC_S750_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_S750_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_S750_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_BJC_S750_modeuses_PPplus, 0 },/*untested*/ + { "PhotopaperMatte", canon_BJC_S750_modeuses_PPplus, 0 }, + { "GlossyPaper", canon_BJC_S750_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_S750_modeuses_coated, 0 }, + { "InkJetHagaki", canon_BJC_S750_modeuses_PPplus, 0 },/*untested*/ + { "Hagaki", canon_BJC_S750_modeuses_Envelope, 0 },/*untested*/ + { "GlossyFilm", canon_BJC_S750_modeuses_PPpro, 0 }, + { "Transparency", canon_BJC_S750_modeuses_Transparency, 0 }, + { "TShirt", canon_BJC_S750_modeuses_TShirt, 0 }, + { "Envelope", canon_BJC_S750_modeuses_Envelope, 0 }, + { "PhotopaperOther", canon_BJC_S750_modeuses_PPpro, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_S750); + +/* ----------------------------------- Canon BJC S800 ----------------------------------- */ +static const char* canon_BJC_S800_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft", + /* Mono */ + "600x600dpi_highmono2", + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono", + NULL + }; + +static const char* canon_BJC_S800_modeuses_PPpro[] = { + "600x600dpi_photohigh4", + "600x600dpi_photohigh", + NULL +}; + +static const char* canon_BJC_S800_modeuses_PPplus[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo",/*untested*/ + NULL +}; + +static const char* canon_BJC_S800_modeuses_PPgloss[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_S800_modeuses_glossFilm[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo",/*untested*/ + NULL +}; + +static const char* canon_BJC_S800_modeuses_PPother[] = { + "600x600dpi_photohigh4", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + /* Mono */ + "600x600dpi_photomonohigh2", + "600x600dpi_photomonohigh", + "600x600dpi_photomono", + "600x600dpi_photomonodraft", + NULL +}; + +static const char* canon_BJC_S800_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_S800_modeuses_Transparency[] = { + "600x600dpi_std2", + "600x600dpi_draft2", + NULL +}; + +static const canon_modeuse_t canon_BJC_S800_modeuses[] = { + { "Plain", canon_BJC_S800_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_S800_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_S800_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_BJC_S800_modeuses_PPplus, 0 },/*untested*/ + { "PhotopaperMatte", canon_BJC_S800_modeuses_PPgloss, 0 }, + { "GlossyPaper", canon_BJC_S800_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_S800_modeuses_PPgloss, 0 }, + { "InkJetHagaki", canon_BJC_S800_modeuses_PPgloss, 0 },/*untested*/ + { "Hagaki", canon_BJC_S800_modeuses_plain, 0 },/*untested*/ + { "GlossyFilm", canon_BJC_S800_modeuses_glossFilm, 0 }, + { "GlossyCard", canon_BJC_S800_modeuses_PPgloss, 0 }, + { "Transparency", canon_BJC_S800_modeuses_Transparency, 0 }, + { "TShirt", canon_BJC_S800_modeuses_TShirt, 0 }, + { "Envelope", canon_BJC_S800_modeuses_plain, 0 }, + { "PhotopaperOther", canon_BJC_S800_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_S800); + +/* ----------------------------------- Canon BJC S820 ----------------------------------- */ +static const char* canon_BJC_S820_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high",/*untested*/ + "600x600dpi", + "600x600dpi_draft", + /* Mono */ + "600x600dpi_highmono2",/*untested*/ + "600x600dpi_highmono",/*untested*/ + "600x600dpi_mono",/*untested*/ + "600x600dpi_draftmono", + NULL + }; + +static const char* canon_BJC_S820_modeuses_PPpro[] = { + "600x600dpi_photohigh4", + "600x600dpi_photohigh", + NULL +}; + +static const char* canon_BJC_S820_modeuses_PPplus[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo",/*untested*/ + NULL +}; + +static const char* canon_BJC_S820_modeuses_PPgloss[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_S820_modeuses_glossFilm[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo",/*untested*/ + NULL +}; + +static const char* canon_BJC_S820_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_S820_modeuses_Transparency[] = { + "600x600dpi_std2", + "600x600dpi_draft2", + NULL +}; + +static const canon_modeuse_t canon_BJC_S820_modeuses[] = { + { "Plain", canon_BJC_S820_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_S820_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_S820_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_BJC_S820_modeuses_PPplus, 0 },/*untested*/ + { "PhotopaperMatte", canon_BJC_S820_modeuses_PPgloss, 0 }, + { "GlossyPaper", canon_BJC_S820_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_S820_modeuses_PPgloss, 0 }, + { "InkJetHagaki", canon_BJC_S820_modeuses_PPgloss, 0 },/*untested*/ + { "Hagaki", canon_BJC_S820_modeuses_plain, 0 },/*untested*/ + { "GlossyFilm", canon_BJC_S820_modeuses_glossFilm, 0 }, + { "GlossyCard", canon_BJC_S820_modeuses_PPgloss, 0 }, + { "Transparency", canon_BJC_S820_modeuses_Transparency, 0 }, + { "TShirt", canon_BJC_S820_modeuses_TShirt, 0 }, + { "Envelope", canon_BJC_S820_modeuses_plain, 0 }, + { "PhotopaperOther", canon_BJC_S820_modeuses_plain, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_S820); + +/* ----------------------------------- Canon BJC S900 ----------------------------------- */ +static const char* canon_BJC_S900_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft", + /* Mono */ + "600x600dpi_highmono2",/*untested*/ + "600x600dpi_highmono",/*untested*/ + "600x600dpi_mono",/*untested*/ + "600x600dpi_draftmono", + NULL + }; + +static const char* canon_BJC_S900_modeuses_PPpro[] = { + "600x600dpi_photohigh5", + "600x600dpi_photohigh", + NULL +}; + +static const char* canon_BJC_S900_modeuses_PPplus[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo2",/*untested*/ + NULL +}; + +static const char* canon_BJC_S900_modeuses_PPgloss[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_S900_modeuses_coated[] = { + "600x600dpi_photohigh4", + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_S900_modeuses_glossFilm[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo",/*untested*/ + NULL +}; + +static const char* canon_BJC_S900_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_S900_modeuses_Transparency[] = { + "600x600dpi_std2", + "600x600dpi_draft2", + NULL +}; + +static const canon_modeuse_t canon_BJC_S900_modeuses[] = { + { "Plain", canon_BJC_S900_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_S900_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_S900_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_BJC_S900_modeuses_PPplus, 0 },/*untested*/ + { "PhotopaperMatte", canon_BJC_S900_modeuses_PPgloss, 0 }, + { "GlossyPaper", canon_BJC_S900_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_S900_modeuses_coated, 0 }, + { "InkJetHagaki", canon_BJC_S900_modeuses_PPgloss, 0 },/*untested*/ + { "Hagaki", canon_BJC_S900_modeuses_plain, 0 },/*untested*/ + { "GlossyFilm", canon_BJC_S900_modeuses_glossFilm, 0 }, + { "GlossyCard", canon_BJC_S900_modeuses_PPgloss, 0 }, + { "Transparency", canon_BJC_S900_modeuses_Transparency, 0 }, + { "TShirt", canon_BJC_S900_modeuses_TShirt, 0 }, + { "Envelope", canon_BJC_S900_modeuses_plain, 0 }, + { "PhotopaperOther", canon_BJC_S900_modeuses_plain, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_S900); + +/* ----------------------------------- Canon i50 ----------------------------------- */ +static const char* canon_BJC_i50_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +static const char* canon_BJC_i50_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_i50_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_i50_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i50_modeuses_PPgloss[] = { + "600x600dpi_photohigh", + "600x600dpi_photomed", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_i50_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3",/*color*/ + "600x600dpi_std4",/*mono*/ + "600x600dpi_draft3", + NULL +}; + +static const char* canon_BJC_i50_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_i50_modeuses_Transparency[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_BJC_i50_modeuses_PPother[] = { + "600x600dpi_photo2", + NULL + }; + +static const canon_modeuse_t canon_BJC_i50_modeuses[] = { + { "Plain", canon_BJC_i50_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_i50_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_i50_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble",canon_BJC_i50_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_BJC_i50_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_BJC_i50_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_i50_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_BJC_i50_modeuses_PPplus, 0 }, + { "Hagaki", canon_BJC_i50_modeuses_Hagaki, 0 }, + { "TShirt", canon_BJC_i50_modeuses_TShirt, 0 }, + { "Transparency", canon_BJC_i50_modeuses_Transparency, 0 }, + { "Envelope", canon_BJC_i50_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_BJC_i50_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_i50); + +/* ----------------------------------- Canon i80 ----------------------------------- */ +static const char* canon_BJC_i80_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/*mono*/ + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL +}; + +static const char* canon_BJC_i80_modeuses_PPpro[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i80_modeuses_PPplus[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_BJC_i80_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i80_modeuses_PPgloss[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i80_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_BJC_i80_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_high4",/*mono*/ + "600x600dpi_std3", + "600x600dpi_draft3", + NULL +}; + +static const char* canon_BJC_i80_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_i80_modeuses_Transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + "600x600dpi_ohpdraft", + NULL +}; + +static const char* canon_BJC_i80_modeuses_PPother[] = { + "600x600dpi_photo2", + NULL +}; + +static const canon_modeuse_t canon_BJC_i80_modeuses[] = { + { "Plain", canon_BJC_i80_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_i80_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_i80_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble",canon_BJC_i80_modeuses_PPmatte, 0 }, + { "PhotopaperMatte", canon_BJC_i80_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_BJC_i80_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_i80_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_BJC_i80_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_BJC_i80_modeuses_Hagaki, 0 }, + { "TShirt", canon_BJC_i80_modeuses_TShirt, 0 }, + { "Transparency", canon_BJC_i80_modeuses_Transparency, 0 }, + { "Envelope", canon_BJC_i80_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_BJC_i80_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_i80); + +/* ----------------------------------- Canon i450 ----------------------------------- */ +static const char* canon_BJC_i450_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_highmono",/* mono mode */ + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +static const char* canon_BJC_i450_modeuses_PPpro[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i450_modeuses_PPplus[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_BJC_i450_modeuses_PPplusDS[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i450_modeuses_PPgloss[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i450_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_BJC_i450_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_highmono2",/* mono */ + "600x600dpi_std2", + "600x600dpi_draft2", + NULL +}; + +static const char* canon_BJC_i450_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_i450_modeuses_Transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const char* canon_BJC_i450_modeuses_PPother[] = { + "600x600dpi_photohigh2",/*untested*/ + "600x600dpi_photo2",/*untested*/ + NULL + }; + +static const canon_modeuse_t canon_BJC_i450_modeuses[] = { + { "Plain", canon_BJC_i450_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_i450_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_i450_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble",canon_BJC_i450_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_BJC_i450_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_BJC_i450_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_i450_modeuses_PPplusDS, 0 }, + { "InkJetHagaki", canon_BJC_i450_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_BJC_i450_modeuses_Hagaki, 0 }, + { "TShirt", canon_BJC_i450_modeuses_TShirt, 0 }, + { "Transparency", canon_BJC_i450_modeuses_Transparency, 0 }, + { "Envelope", canon_BJC_i450_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_BJC_i450_modeuses_PPother, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_i450); + +/* ----------------------------------- Canon i455 ----------------------------------- */ +static const char* canon_BJC_i455_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_highmono",/* mono mode */ + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +static const char* canon_BJC_i455_modeuses_PPpro[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i455_modeuses_PPplus[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_BJC_i455_modeuses_PPplusDS[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i455_modeuses_PPgloss[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i455_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_BJC_i455_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_highmono2",/* mono */ + "600x600dpi_std2", + "600x600dpi_draft2", + NULL +}; + +static const char* canon_BJC_i455_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_i455_modeuses_Transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const char* canon_BJC_i455_modeuses_PPother[] = { + "600x600dpi_photohigh2",/*untested*/ + "600x600dpi_photo2",/*untested*/ + NULL + }; + +static const canon_modeuse_t canon_BJC_i455_modeuses[] = { + { "Plain", canon_BJC_i455_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_i455_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_i455_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble",canon_BJC_i455_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_BJC_i455_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_BJC_i455_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_i455_modeuses_PPplusDS, 0 }, + { "InkJetHagaki", canon_BJC_i455_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_BJC_i455_modeuses_Hagaki, 0 }, + { "TShirt", canon_BJC_i455_modeuses_TShirt, 0 }, + { "Transparency", canon_BJC_i455_modeuses_Transparency, 0 }, + { "Envelope", canon_BJC_i455_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_BJC_i455_modeuses_PPother, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_i455); + +/* ----------------------------------- Canon i550 ----------------------------------- */ +static const char* canon_BJC_i550_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_highmono",/* mono mode */ + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +static const char* canon_BJC_i550_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_i550_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i550_modeuses_PPgloss[] = { + "600x600dpi_photohigh3", + "600x600dpi_photomed", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i550_modeuses_coated[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_BJC_i550_modeuses_inkjetHagaki[] = { + "600x600dpi_photo3", + "600x600dpi_photo", + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_BJC_i550_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_highmono3",/* mono */ + "600x600dpi_std3", + "600x600dpi_draft3", + NULL +}; + +static const char* canon_BJC_i550_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_i550_modeuses_Transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +/*untested*/ +static const char* canon_BJC_i550_modeuses_PPother[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL + }; + +static const canon_modeuse_t canon_BJC_i550_modeuses[] = { + { "Plain", canon_BJC_i550_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_i550_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_i550_modeuses_PPpro, 0 }, + { "PhotopaperPlusDouble",canon_BJC_i550_modeuses_PPpro, 0 }, + { "PhotopaperMatte", canon_BJC_i550_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_BJC_i550_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_i550_modeuses_coated, 0 }, + { "InkJetHagaki", canon_BJC_i550_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_BJC_i550_modeuses_Hagaki, 0 }, + { "GlossyFilm", canon_BJC_i550_modeuses_PPpro, 0 }, + { "TShirt", canon_BJC_i550_modeuses_TShirt, 0 }, + { "Transparency", canon_BJC_i550_modeuses_Transparency, 0 }, + { "Envelope", canon_BJC_i550_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_BJC_i550_modeuses_PPother, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_i550); + +/* ----------------------------------- Canon i560 ----------------------------------- */ +static const char* canon_BJC_i560_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi_high",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not supported yet */ +static const char* canon_BJC_i560_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i560_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_BJC_i560_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i560_modeuses_coated[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft2",/*untested*/ + NULL +}; + +static const char* canon_BJC_i560_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_BJC_i560_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_BJC_i560_modeuses_disc[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + "600x600dpi_photodraft4", + NULL +}; + +static const char* canon_BJC_i560_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_i560_modeuses_Transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const char* canon_BJC_i560_modeuses_PPother[] = { + "600x600dpi_photo",/*untested*/ + NULL + }; + +static const canon_modeuse_t canon_BJC_i560_modeuses[] = { + { "Plain", canon_BJC_i560_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_i560_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_i560_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble",canon_BJC_i560_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_BJC_i560_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_BJC_i560_modeuses_PPplusDS, 0 }, + { "Coated", canon_BJC_i560_modeuses_coated, 0 }, + { "InkJetHagaki", canon_BJC_i560_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_BJC_i560_modeuses_Hagaki, 0 }, + { "DiscCompat", canon_BJC_i560_modeuses_disc, 0 }, + { "DiscOthers", canon_BJC_i560_modeuses_disc, 0 }, + { "TShirt", canon_BJC_i560_modeuses_TShirt, 0 }, + { "Transparency", canon_BJC_i560_modeuses_Transparency, 0 }, + { "Envelope", canon_BJC_i560_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_BJC_i560_modeuses_PPother, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_i560); + +/* ----------------------------------- Canon i850 ----------------------------------- */ +static const char* canon_BJC_i850_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi_high",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highset mode not supported yet */ +static const char* canon_BJC_i850_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i850_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highset mode not supported yet */ +static const char* canon_BJC_i850_modeuses_PPgloss[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i850_modeuses_coated[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_BJC_i850_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_i850_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_BJC_i850_modeuses_disc[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_BJC_i850_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_i850_modeuses_Transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +/*untested*/ +static const char* canon_BJC_i850_modeuses_PPother[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL + }; + +static const canon_modeuse_t canon_BJC_i850_modeuses[] = { + { "Plain", canon_BJC_i850_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_i850_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_i850_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble",canon_BJC_i850_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_BJC_i850_modeuses_PPplus, 0 }, + { "GlossyPaper", canon_BJC_i850_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_i850_modeuses_coated, 0 }, + { "InkJetHagaki", canon_BJC_i850_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_BJC_i850_modeuses_Hagaki, 0 }, + { "DiscCompat", canon_BJC_i850_modeuses_disc, 0 }, + { "DiscOthers", canon_BJC_i850_modeuses_disc, 0 }, + { "GlossyFilm", canon_BJC_i850_modeuses_PPplus, 0 }, + { "TShirt", canon_BJC_i850_modeuses_TShirt, 0 }, + { "Transparency", canon_BJC_i850_modeuses_Transparency, 0 }, + { "Envelope", canon_BJC_i850_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_BJC_i850_modeuses_PPother, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_i850); + +/* ----------------------------------- Canon i860 ----------------------------------- */ +static const char* canon_BJC_i860_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL +}; + +/* highest mode not supported yet */ +static const char* canon_BJC_i860_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_BJC_i860_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_BJC_i860_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i860_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_BJC_i860_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_BJC_i860_modeuses_disc[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_BJC_i860_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_i860_modeuses_Transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const char* canon_BJC_i860_modeuses_PPother[] = { + "600x600dpi_photo",/*untested*/ + NULL +}; + +static const canon_modeuse_t canon_BJC_i860_modeuses[] = { + { "Plain", canon_BJC_i860_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_BJC_i860_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_i860_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble",canon_BJC_i860_modeuses_PPmatte, 0 },/*untested*/ + { "PhotopaperMatte", canon_BJC_i860_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_BJC_i860_modeuses_PPmatte, 0 }, + { "Coated", canon_BJC_i860_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_BJC_i860_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_BJC_i860_modeuses_Hagaki, DUPLEX_SUPPORT }, /* not sure */ + { "DiscCompat", canon_BJC_i860_modeuses_disc, 0 }, + { "DiscOthers", canon_BJC_i860_modeuses_disc, 0 }, + { "TShirt", canon_BJC_i860_modeuses_TShirt, 0 }, + { "Transparency", canon_BJC_i860_modeuses_Transparency, 0 }, + { "Envelope", canon_BJC_i860_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_BJC_i860_modeuses_PPother, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_i860); + +/* ----------------------------------- Canon i900 ----------------------------------- */ +static const char* canon_BJC_i900_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL +}; + +static const char* canon_BJC_i900_modeuses_PPpro[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i900_modeuses_PPplus[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i900_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i900_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_BJC_i900_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3", + NULL +}; + +static const char* canon_BJC_i900_modeuses_disc[] = { + "600x600dpi_photohigh5", + "600x600dpi_photo5", + "600x600dpi_photodraft5", + NULL +}; + +static const char* canon_BJC_i900_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_i900_modeuses_Transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const char* canon_BJC_i900_modeuses_PPother[] = { + "600x600dpi_photo",/*untested*/ + NULL +}; + +static const canon_modeuse_t canon_BJC_i900_modeuses[] = { + { "Plain", canon_BJC_i900_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_i900_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_i900_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble",canon_BJC_i900_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_BJC_i900_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_BJC_i900_modeuses_PPplus, 0 }, + { "Coated", canon_BJC_i900_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_BJC_i900_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_BJC_i900_modeuses_Hagaki, 0 }, + { "DiscCompat", canon_BJC_i900_modeuses_disc, 0 }, + { "DiscOthers", canon_BJC_i900_modeuses_disc, 0 }, + { "TShirt", canon_BJC_i900_modeuses_TShirt, 0 }, + { "Transparency", canon_BJC_i900_modeuses_Transparency, 0 }, + { "Envelope", canon_BJC_i900_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_BJC_i900_modeuses_PPother, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_i900); + +/* ----------------------------------- Canon i950 ----------------------------------- */ +static const char* canon_BJC_i950_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high"/*untested*/, + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "600x600dpi_draft2", + "600x600dpi_draftmono",/* mono --- untested*/ + "600x600dpi_draftmono2",/* mono */ + NULL + }; + +static const char* canon_BJC_i950_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_BJC_i950_modeuses_PPplus[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2",/*untested*/ + NULL +}; + +static const char* canon_BJC_i950_modeuses_PPgloss[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_i950_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_i950_modeuses_coated[] = { + "600x600dpi_photohigh", + "600x600dpi_photo3", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i950_modeuses_GlossyFilm[] = { + "600x600dpi_photohigh", + NULL +}; + +static const char* canon_BJC_i950_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + "600x600dpi_photodraft4", + NULL +}; + +static const char* canon_BJC_i950_modeuses_disc[] = { + "600x600dpi_photo5", + "600x600dpi_photodraft5", + NULL +}; + +static const char* canon_BJC_i950_modeuses_Hagaki[] = { + "600x600dpi_high4", + "600x600dpi_high5",/*untested*/ + "600x600dpi_std4",/*untested*/ + "600x600dpi_std5", + "600x600dpi_draftmono4",/* mono---untested*/ + "600x600dpi_draftmono5",/* mono */ + NULL +}; + +static const char* canon_BJC_i950_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_i950_modeuses_Transparency[] = { + "600x600dpi_std3", + "600x600dpi_draft3", + "600x600dpi_draft4", + NULL +}; + +static const char* canon_BJC_i950_modeuses_PPother[] = { + "600x600dpi_photo2",/*untested*/ + NULL + }; + +static const canon_modeuse_t canon_BJC_i950_modeuses[] = { + { "Plain", canon_BJC_i950_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_i950_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_i950_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble",canon_BJC_i950_modeuses_PPgloss, 0 }, + { "PhotopaperMatte", canon_BJC_i950_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_BJC_i950_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_i950_modeuses_coated, 0 }, + { "InkJetHagaki", canon_BJC_i950_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_BJC_i950_modeuses_Hagaki, 0 }, + { "DiscCompat", canon_BJC_i950_modeuses_disc, 0 }, + { "DiscOthers", canon_BJC_i950_modeuses_disc, 0 }, + { "GlossyFilm", canon_BJC_i950_modeuses_GlossyFilm, 0 }, + { "TShirt", canon_BJC_i950_modeuses_TShirt, 0 }, + { "Transparency", canon_BJC_i950_modeuses_Transparency, 0 }, + { "Envelope", canon_BJC_i950_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_BJC_i950_modeuses_PPother, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_i950); + +/* ----------------------------------- Canon i960 ----------------------------------- */ +static const char* canon_BJC_i960_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high3",/* duplex */ + "600x600dpi_high", + "600x600dpi",/*untested*/ + "600x600dpi_draft", + "600x600dpi_draft2", + "600x600dpi_draftmono",/* mono */ + "600x600dpi_draftmono2",/* mono */ + NULL + }; + +static const char* canon_BJC_i960_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i960_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo5",/*untested*/ + NULL +}; + + +static const char* canon_BJC_i960_modeuses_PPgloss[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_i960_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_i960_modeuses_coated[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + "600x600dpi_photo5", + NULL +}; + +static const char* canon_BJC_i960_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_BJC_i960_modeuses_disc[] = { + "600x600dpi_photo4", + "600x600dpi_photodraft4", + NULL +}; + +static const char* canon_BJC_i960_modeuses_Hagaki[] = { + "600x600dpi_high4", + "600x600dpi_high5", + "600x600dpi_std4",/*untested*/ + "600x600dpi_std5", + "600x600dpi_draft5", + "600x600dpi_draftmono4", + "600x600dpi_draftmono5", + NULL +}; + +static const char* canon_BJC_i960_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_i960_modeuses_Transparency[] = { + "600x600dpi_std3", + "600x600dpi_draft3", + "600x600dpi_draft4",/*untested*/ + NULL +}; + +static const char* canon_BJC_i960_modeuses_PPother[] = { + "600x600dpi_photo2",/*untested*/ + NULL + }; + +static const canon_modeuse_t canon_BJC_i960_modeuses[] = { + { "Plain", canon_BJC_i960_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "GlossyPro", canon_BJC_i960_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_i960_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble",canon_BJC_i960_modeuses_PPgloss, 0 }, + { "PhotopaperMatte", canon_BJC_i960_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_BJC_i960_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_i960_modeuses_coated, 0 }, + { "InkJetHagaki", canon_BJC_i960_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_BJC_i960_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_BJC_i960_modeuses_disc, 0 }, + { "DiscOthers", canon_BJC_i960_modeuses_disc, 0 }, + { "TShirt", canon_BJC_i960_modeuses_TShirt, 0 }, + { "Transparency", canon_BJC_i960_modeuses_Transparency, 0 }, + { "Envelope", canon_BJC_i960_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_BJC_i960_modeuses_PPother, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_i960); + +/* ----------------------------------- Canon i990 ----------------------------------- */ +static const char* canon_BJC_i990_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high3", /*duplex*/ + "600x600dpi", + "600x600dpi_draft", + "600x600dpi_draft2", + "600x600dpi_draftmono",/*mono*/ + "600x600dpi_draftmono2",/*mono*/ + NULL + }; + +/* most photo modes use R ink and therefore unsupported */ +/* unsupported */ +static const char* canon_BJC_i990_modeuses_PPpro[] = { + "600x600dpi_photohigh",/*stand-in*/ + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_BJC_i990_modeuses_PPplus[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photodraft", + NULL +}; + +/* unsupported */ +static const char* canon_BJC_i990_modeuses_PPmatte[] = { + "600x600dpi_photohigh",/*stand-in*/ + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_BJC_i990_modeuses_PPgloss[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_BJC_i990_modeuses_coated[] = { + "600x600dpi_photohigh", + "600x600dpi_photomed", + "600x600dpi_photo", + NULL +}; + +/* high mode not yet supported */ +static const char* canon_BJC_i990_modeuses_inkjetHagaki[] = { + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_i990_modeuses_disc[] = { + "600x600dpi_photo3", + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_BJC_i990_modeuses_Hagaki[] = { + "600x600dpi_high4", + "600x600dpi_std4", + "600x600dpi_draft5", + "600x600dpi_draft4", + "600x600dpi_draftmono4",/*mono*/ + "600x600dpi_draftmono5",/*mono*/ + NULL +}; + +static const char* canon_BJC_i990_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_i990_modeuses_Transparency[] = { + "600x600dpi_std3", + "600x600dpi_draft3", + NULL +}; + +/* untested */ +static const char* canon_BJC_i990_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_BJC_i990_modeuses[] = { + { "Plain", canon_BJC_i990_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "GlossyPro", canon_BJC_i990_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_i990_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble",canon_BJC_i990_modeuses_PPplus, 0 },/*untested*/ + { "PhotopaperMatte", canon_BJC_i990_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_BJC_i990_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_i990_modeuses_coated, 0 }, + { "InkJetHagaki", canon_BJC_i990_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_BJC_i990_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_BJC_i990_modeuses_disc, 0 }, + { "DiscOthers", canon_BJC_i990_modeuses_disc, 0 }, + { "TShirt", canon_BJC_i990_modeuses_TShirt, 0 }, + { "Transparency", canon_BJC_i990_modeuses_Transparency, 0 }, + { "Envelope", canon_BJC_i990_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_BJC_i990_modeuses_PPother, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_i990); + +/* ----------------------------------- Canon i6100 ----------------------------------- */ +static const char* canon_BJC_i6100_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high", + "600x600dpi", + "300x300dpi",/*untested*/ + "300x300dpi_draft", + NULL + }; + +static const char* canon_BJC_i6100_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_i6100_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i6100_modeuses_PPgloss[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i6100_modeuses_coated[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_BJC_i6100_modeuses_inkjetHagaki[] = { + "600x600dpi_photo3", + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_BJC_i6100_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_BJC_i6100_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_i6100_modeuses_Transparency[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_BJC_i6100_modeuses_PPother[] = { + "600x600dpi_photo2",/*untested*/ + "600x600dpi_photo",/*untested*/ + NULL + }; + +static const canon_modeuse_t canon_BJC_i6100_modeuses[] = { + { "Plain", canon_BJC_i6100_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_i6100_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_i6100_modeuses_PPpro, 0 }, + { "PhotopaperPlusDouble",canon_BJC_i6100_modeuses_PPpro, 0 }, + { "PhotopaperMatte", canon_BJC_i6100_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_BJC_i6100_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_i6100_modeuses_coated, 0 }, + { "InkJetHagaki", canon_BJC_i6100_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_BJC_i6100_modeuses_Hagaki, 0 }, + { "TShirt", canon_BJC_i6100_modeuses_TShirt, 0 }, + { "Transparency", canon_BJC_i6100_modeuses_Transparency, 0 }, + { "Envelope", canon_BJC_i6100_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_BJC_i6100_modeuses_PPother, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_i6100); + +/* ----------------------------------- Canon i9100 ----------------------------------- */ +static const char* canon_BJC_i9100_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "600x600dpi_mono",/*untested*/ + "600x600dpi_draftmono", + NULL + }; + +static const char* canon_BJC_i9100_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_i9100_modeuses_PPplus[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2",/*untested*/ + NULL +}; + +static const char* canon_BJC_i9100_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i9100_modeuses_coated[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_BJC_i9100_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + "600x600dpi_photodraft4", + NULL +}; + +static const char* canon_BJC_i9100_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3", + "600x600dpi_draftmono2", + NULL +}; + +static const char* canon_BJC_i9100_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_i9100_modeuses_Transparency[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3",/*untested*/ + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_BJC_i9100_modeuses_PPother[] = { + "600x600dpi_photo2",/*untested*/ + "600x600dpi_photo",/*untested*/ + NULL + }; + +static const canon_modeuse_t canon_BJC_i9100_modeuses[] = { + { "Plain", canon_BJC_i9100_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_i9100_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_i9100_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble",canon_BJC_i9100_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_BJC_i9100_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_BJC_i9100_modeuses_PPmatte, 0 }, + { "Coated", canon_BJC_i9100_modeuses_coated, 0 }, + { "InkJetHagaki", canon_BJC_i9100_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_BJC_i9100_modeuses_Hagaki, 0 }, + { "TShirt", canon_BJC_i9100_modeuses_TShirt, 0 }, + { "Transparency", canon_BJC_i9100_modeuses_Transparency, 0 }, + { "Envelope", canon_BJC_i9100_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_BJC_i9100_modeuses_PPother, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_BJC_i9100); + +/* ----------------------------------- Canon i9900 ----------------------------------- */ +static const char* canon_BJC_i9900_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi", + "600x600dpi_draft", + "600x600dpi_draft2", + "600x600dpi_draftmono",/*mono*/ + "600x600dpi_draftmono2",/*mono*/ + NULL + }; + +/* most photo modes use R,G inks and therefore unsupported */ +/* unsupported */ +static const char* canon_BJC_i9900_modeuses_PPpro[] = { + "600x600dpi_photohigh",/*stand-in*/ + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_BJC_i9900_modeuses_PPplus[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photodraft", + NULL +}; + +/* unsupported */ +static const char* canon_BJC_i9900_modeuses_PPmatte[] = { + "600x600dpi_photohigh",/*stand-in*/ + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_BJC_i9900_modeuses_PPgloss[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_BJC_i9900_modeuses_coated[] = { + "600x600dpi_photohigh", + "600x600dpi_photomed", + "600x600dpi_photo", + NULL +}; + +/* high mode not yet supported */ +static const char* canon_BJC_i9900_modeuses_inkjetHagaki[] = { + "600x600dpi_photo2", + NULL +}; + +static const char* canon_BJC_i9900_modeuses_disc[] = { + "600x600dpi_photo3", + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_BJC_i9900_modeuses_Hagaki[] = { + "600x600dpi_high4", + "600x600dpi_std4", + "600x600dpi_draft5", + "600x600dpi_draft4", + "600x600dpi_draftmono4",/*mono*/ + "600x600dpi_draftmono5",/*mono*/ + NULL +}; + +static const char* canon_BJC_i9900_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_BJC_i9900_modeuses_Transparency[] = { + "600x600dpi_std3", + "600x600dpi_draft3", + NULL +}; + +static const char* canon_BJC_i9900_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_BJC_i9900_modeuses[] = { + { "Plain", canon_BJC_i9900_modeuses_plain, 0 }, + { "GlossyPro", canon_BJC_i9900_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_BJC_i9900_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble",canon_BJC_i9900_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_BJC_i9900_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_BJC_i9900_modeuses_PPgloss, 0 }, + { "Coated", canon_BJC_i9900_modeuses_coated, 0 }, + { "InkJetHagaki", canon_BJC_i9900_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_BJC_i9900_modeuses_Hagaki, 0 }, + { "DiscCompat", canon_BJC_i9900_modeuses_disc, 0 }, + { "DiscOthers", canon_BJC_i9900_modeuses_disc, 0 }, + { "TShirt", canon_BJC_i9900_modeuses_TShirt, 0 }, + { "Transparency", canon_BJC_i9900_modeuses_Transparency, 0 }, + { "Envelope", canon_BJC_i9900_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_BJC_i9900_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_BJC_i9900); + +/* ----------------------------------- Canon iP90 ----------------------------------- */ +static const char* canon_PIXMA_iP90_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high", /* mono */ + "600x600dpi", + "600x600dpi_draft", + "300x300dpi", + "300x300dpi_draft", + NULL +}; + +static const char* canon_PIXMA_iP90_modeuses_PPpro[] = { + "600x600dpi_photohigh2", /* no ESC (S */ + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP90_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_iP90_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP90_modeuses_Hagaki[] = { + "600x600dpi_high4", + "600x600dpi_high3", /* mono */ + "600x600dpi_std2", + "600x600dpi_draft2", + NULL +}; + +static const char* canon_PIXMA_iP90_modeuses_TShirt[] = { + "600x600dpi_tshirt", /* no ESC (S */ + NULL +}; + +static const char* canon_PIXMA_iP90_modeuses_PPother[] = { + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_iP90_modeuses[] = { + { "Plain", canon_PIXMA_iP90_modeuses_plain, 0 },/*INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL*/ + { "GlossyPro", canon_PIXMA_iP90_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotopaperPlus", canon_PIXMA_iP90_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotopaperPlusDouble", canon_PIXMA_iP90_modeuses_PPplusDS, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_PIXMA_iP90_modeuses_PPplusDS, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_PIXMA_iP90_modeuses_PPplusDS, INKSET_COLOR_SUPPORT }, + { "Coated", canon_PIXMA_iP90_modeuses_PPplusDS, INKSET_COLOR_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_iP90_modeuses_PPplusDS, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_PIXMA_iP90_modeuses_Hagaki, 0 },/*INKSET_COLOR_SUPPORT*/ + { "TShirt", canon_PIXMA_iP90_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_PIXMA_iP90_modeuses_Hagaki, 0 },/* INKSET_COLOR_SUPPORT*/ + { "PhotopaperOther", canon_PIXMA_iP90_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP90); + +/* ----------------------------------- Canon iP100 ----------------------------------- */ +static const char* canon_PIXMA_iP100_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high", /* mono */ + "600x600dpi", + "600x600dpi_draft", + "300x300dpi", + "300x300dpi_draft", + NULL +}; + +static const char* canon_PIXMA_iP100_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP100_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP100_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP100_modeuses_Hagaki[] = { + "600x600dpi_high4", + "600x600dpi_high3", /* mono */ + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_iP100_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP100_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_iP100_modeuses[] = { + { "Plain", canon_PIXMA_iP100_modeuses_plain, 0 },/*INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL*/ + { "GlossyPro", canon_PIXMA_iP100_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotopaperPlus", canon_PIXMA_iP100_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotoPlusGloss2", canon_PIXMA_iP100_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotopaperPlusDouble", canon_PIXMA_iP100_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_PIXMA_iP100_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_PIXMA_iP100_modeuses_PPmatte, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_PIXMA_iP100_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "Coated", canon_PIXMA_iP100_modeuses_PPmatte, INKSET_COLOR_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_iP100_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_PIXMA_iP100_modeuses_Hagaki, 0 },/*INKSET_COLOR_SUPPORT*/ + { "TShirt", canon_PIXMA_iP100_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_PIXMA_iP100_modeuses_Hagaki, 0 },/*INKSET_COLOR_SUPPORT*/ + { "PhotopaperOther", canon_PIXMA_iP100_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP100); + +/* ----------------------------------- Canon iP2000 ----------------------------------- */ +static const char* canon_PIXMA_iP2000_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high",/* mono */ + "600x600dpi", + "600x600dpi_draft", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +static const char* canon_PIXMA_iP2000_modeuses_PPpro[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP2000_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_iP2000_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP2000_modeuses_PPgloss[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP2000_modeuses_Hagaki[] = { + "600x600dpi_high4", + "600x600dpi_high3",/* mono */ + "600x600dpi_std3", + "600x600dpi_draft3", + NULL +}; + +static const char* canon_PIXMA_iP2000_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP2000_modeuses_Transparency[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_iP2000_modeuses_PPother[] = { + "600x600dpi_photo2", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_iP2000_modeuses[] = { + { "Plain", canon_PIXMA_iP2000_modeuses_plain, 0 }, + { "GlossyPro", canon_PIXMA_iP2000_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iP2000_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble",canon_PIXMA_iP2000_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP2000_modeuses_PPplus, 0 }, + { "GlossyPaper", canon_PIXMA_iP2000_modeuses_PPgloss, 0 }, + { "Coated", canon_PIXMA_iP2000_modeuses_PPplusDS, 0 }, + { "InkJetHagaki", canon_PIXMA_iP2000_modeuses_PPplusDS, 0 },/*untested*/ + { "Hagaki", canon_PIXMA_iP2000_modeuses_Hagaki, 0 },/*untested*/ + { "TShirt", canon_PIXMA_iP2000_modeuses_TShirt, 0 }, + { "Transparency", canon_PIXMA_iP2000_modeuses_Transparency, 0 }, + { "Envelope", canon_PIXMA_iP2000_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP2000_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP2000); + +/* ----------------------------------- Canon iP2700 ----------------------------------- */ +static const char* canon_PIXMA_iP2700_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + /* Mono */ + "600x600dpi_highmono", + "600x600dpi_mono", + "300x300dpi_mono", + /* Color */ + "600x600dpi_high3", + "600x600dpi_std3", + "300x300dpi_std3", + NULL + }; + +static const char* canon_PIXMA_iP2700_modeuses_PPpro[] = { + "1200x1200dpi_high", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP2700_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP2700_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + /* Mono */ + "600x600dpi_highmono2", + "600x600dpi_mono2", + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + NULL +}; + +static const char* canon_PIXMA_iP2700_modeuses_TShirt[] = { + "600x600dpi_photohigh", + NULL +}; + +static const char* canon_PIXMA_iP2700_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_iP2700_modeuses[] = { + { "Plain", canon_PIXMA_iP2700_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoPro2", canon_PIXMA_iP2700_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_PIXMA_iP2700_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK",canon_PIXMA_iP2700_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_PIXMA_iP2700_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_PIXMA_iP2700_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_PIXMA_iP2700_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_PIXMA_iP2700_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP2700); + +/* ----------------------------------- Canon iP3000 ----------------------------------- */ +static const char* canon_PIXMA_iP3000_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi_high",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not supported yet */ +static const char* canon_PIXMA_iP3000_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP3000_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_iP3000_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* Note: iP3000 US driver does not have inkjetHagaki or Hagaki media */ +/* untested */ +static const char* canon_PIXMA_iP3000_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_iP3000_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_iP3000_modeuses_disc[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_PIXMA_iP3000_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP3000_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const char* canon_PIXMA_iP3000_modeuses_transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_iP3000_modeuses[] = { + { "Plain", canon_PIXMA_iP3000_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_PIXMA_iP3000_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iP3000_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_iP3000_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP3000_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_PIXMA_iP3000_modeuses_PPplusDS, 0 }, + { "Coated", canon_PIXMA_iP3000_modeuses_PPplusDS, 0 }, + { "InkJetHagaki", canon_PIXMA_iP3000_modeuses_inkjetHagaki, 0 },/*untested*/ + { "Hagaki", canon_PIXMA_iP3000_modeuses_Hagaki, DUPLEX_SUPPORT },/*untested*/ + { "DiscCompat", canon_PIXMA_iP3000_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_iP3000_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_iP3000_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP3000_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP3000_modeuses_PPother, 0 }, + { "Transparency", canon_PIXMA_iP3000_modeuses_transparency, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP3000); + +/* ----------------------------------- Canon iP3100 ----------------------------------- */ +static const char* canon_PIXMA_iP3100_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi_high",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not supported yet */ +static const char* canon_PIXMA_iP3100_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP3100_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_iP3100_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP3100_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_PIXMA_iP3100_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_iP3100_modeuses_disc[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_PIXMA_iP3100_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +/* Note: iP3100 US driver does not have this media */ +/*untested*/ +static const char* canon_PIXMA_iP3100_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const char* canon_PIXMA_iP3100_modeuses_transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_iP3100_modeuses[] = { + { "Plain", canon_PIXMA_iP3100_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_PIXMA_iP3100_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iP3100_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_iP3100_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP3100_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_PIXMA_iP3100_modeuses_PPplusDS, 0 }, + { "Coated", canon_PIXMA_iP3100_modeuses_PPplusDS, 0 }, + { "InkJetHagaki", canon_PIXMA_iP3100_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_iP3100_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_iP3100_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_iP3100_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_iP3100_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP3100_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP3100_modeuses_PPother, 0 },/*untested*/ + { "Transparency", canon_PIXMA_iP3100_modeuses_transparency, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP3100); + +/* ----------------------------------- Canon iP3300 ----------------------------------- */ +static const char* canon_PIXMA_iP3300_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not yet supported */ +static const char* canon_PIXMA_iP3300_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP3300_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP3300_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP3300_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_draft3", + NULL +}; + +static const char* canon_PIXMA_iP3300_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_PIXMA_iP3300_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP3300_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_iP3300_modeuses[] = { + { "Plain", canon_PIXMA_iP3300_modeuses_plain, 0 }, + { "GlossyPro", canon_PIXMA_iP3300_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iP3300_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_iP3300_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_PIXMA_iP3300_modeuses_PPplusDS, 0 },/*check*/ + { "PhotopaperMatte", canon_PIXMA_iP3300_modeuses_PPplusDS, 0 }, + { "Coated", canon_PIXMA_iP3300_modeuses_PPplusDS, 0 }, + { "InkJetHagaki", canon_PIXMA_iP3300_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_iP3300_modeuses_Hagaki, 0 }, + { "TShirt", canon_PIXMA_iP3300_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP3300_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP3300_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP3300); + +/* ----------------------------------- Canon iP3600 ----------------------------------- */ +static const char* canon_PIXMA_iP3600_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not yet supported */ +static const char* canon_PIXMA_iP3600_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP3600_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP3600_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP3600_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_iP3600_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_iP3600_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP3600_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_iP3600_modeuses[] = { + { "Plain", canon_PIXMA_iP3600_modeuses_plain, 0 }, + { "PhotoPlusGloss2", canon_PIXMA_iP3600_modeuses_PPplusG2, 0 }, + { "PhotoPro2", canon_PIXMA_iP3600_modeuses_PPpro, 0 }, + { "PhotoProPlat", canon_PIXMA_iP3600_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss", canon_PIXMA_iP3600_modeuses_PPplusG2, 0 }, + { "GlossyPaper", canon_PIXMA_iP3600_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP3600_modeuses_PPmatte, 0 }, + { "Coated", canon_PIXMA_iP3600_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_PIXMA_iP3600_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_iP3600_modeuses_Hagaki, 0 }, + { "TShirt", canon_PIXMA_iP3600_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP3600_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP3600_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP3600); + +/* ----------------------------------- Canon iP4000 ----------------------------------- */ +static const char* canon_PIXMA_iP4000_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi_high",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + "600x600dpi_high2",/*legacy*/ + "600x600dpi_std2",/*legacy*/ + "600x600dpi_draft2",/*legacy*/ + NULL + }; + +/* highest mode not supported yet */ +static const char* canon_PIXMA_iP4000_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP4000_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_iP4000_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* Note: iP4000 US driver does not have inkjetHagaki or Hagaki media */ +/* untested */ +static const char* canon_PIXMA_iP4000_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_iP4000_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_PIXMA_iP4000_modeuses_disc[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_PIXMA_iP4000_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP4000_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const char* canon_PIXMA_iP4000_modeuses_transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_iP4000_modeuses[] = { + { "Plain", canon_PIXMA_iP4000_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_PIXMA_iP4000_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iP4000_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_iP4000_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP4000_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_PIXMA_iP4000_modeuses_PPplusDS, 0 }, + { "Coated", canon_PIXMA_iP4000_modeuses_PPplusDS, 0 }, + { "InkJetHagaki", canon_PIXMA_iP4000_modeuses_inkjetHagaki, 0 },/*untested*/ + { "Hagaki", canon_PIXMA_iP4000_modeuses_Hagaki, DUPLEX_SUPPORT },/*untested*/ + { "CD", canon_PIXMA_iP4000_modeuses_plain, 0 },/*NOTE:temporary replacement*/ + { "DiscCompat", canon_PIXMA_iP4000_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_iP4000_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_iP4000_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP4000_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP4000_modeuses_PPother, 0 }, + { "Transparency", canon_PIXMA_iP4000_modeuses_transparency, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP4000); + +/* ----------------------------------- Canon iP4100 ----------------------------------- */ +static const char* canon_PIXMA_iP4100_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not supported yet */ +static const char* canon_PIXMA_iP4100_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP4100_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_iP4100_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP4100_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_iP4100_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_PIXMA_iP4100_modeuses_disc[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_PIXMA_iP4100_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP4100_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const char* canon_PIXMA_iP4100_modeuses_transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_iP4100_modeuses[] = { + { "Plain", canon_PIXMA_iP4100_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_PIXMA_iP4100_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iP4100_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_iP4100_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP4100_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_PIXMA_iP4100_modeuses_PPplusDS, 0 }, + { "Coated", canon_PIXMA_iP4100_modeuses_PPplusDS, 0 }, + { "InkJetHagaki", canon_PIXMA_iP4100_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_iP4100_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_iP4100_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_iP4100_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_iP4100_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP4100_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP4100_modeuses_PPother, 0 },/*untested*/ + { "Transparency", canon_PIXMA_iP4100_modeuses_transparency, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP4100); + +/* ----------------------------------- Canon iP4200 ----------------------------------- */ +static const char* canon_PIXMA_iP4200_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* most photo modes not supported yet --- used photodraft as stand-in everywhere */ +static const char* canon_PIXMA_iP4200_modeuses_PPplus[] = { + "600x600dpi_photodraft", + NULL +}; + +/* high mode not yet supported */ +static const char* canon_PIXMA_iP4200_modeuses_inkjetHagaki[] = { + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_PIXMA_iP4200_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_iP4200_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +/*untested*/ +static const char* canon_PIXMA_iP4200_modeuses_transparency[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_iP4200_modeuses[] = { + { "Plain", canon_PIXMA_iP4200_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */ + { "PhotopaperPlus", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* mostly not yet supported */ + { "PhotopaperPlusDouble", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */ + { "PhotopaperMatte", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */ + { "GlossyPaper", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */ + { "Coated", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */ + { "InkJetHagaki", canon_PIXMA_iP4200_modeuses_inkjetHagaki, 0 },/* partially not yet supported */ + { "Hagaki", canon_PIXMA_iP4200_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "CD", canon_PIXMA_iP4200_modeuses_plain, 0 },/*NOTE:temporary replacement*/ + { "DiscCompat", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */ + { "DiscOthers", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */ + { "TShirt", canon_PIXMA_iP4200_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP4200_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP4200_modeuses_PPplus, 0 },/* not yet supported */ + { "Transparency", canon_PIXMA_iP4200_modeuses_transparency, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_PIXMA_iP4200); + +/* ----------------------------------- Canon iP4300 ----------------------------------- */ +static const char* canon_PIXMA_iP4300_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* most photo modes not supported yet --- used photodraft as stand-in everywhere */ +static const char* canon_PIXMA_iP4300_modeuses_PPplus[] = { + "600x600dpi_photodraft", + NULL +}; + +/* high mode not yet supported */ +static const char* canon_PIXMA_iP4300_modeuses_inkjetHagaki[] = { + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_PIXMA_iP4300_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_iP4300_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +/*untested*/ +static const char* canon_PIXMA_iP4300_modeuses_transparency[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_iP4300_modeuses[] = { + { "Plain", canon_PIXMA_iP4300_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */ + { "PhotopaperPlus", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* mostly not yet supported */ + { "PhotopaperPlusDouble", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */ + { "PhotopaperMatte", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */ + { "GlossyPaper", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */ + { "Coated", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */ + { "InkJetHagaki", canon_PIXMA_iP4300_modeuses_inkjetHagaki, 0 },/* partially not yet supported */ + { "Hagaki", canon_PIXMA_iP4300_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "CD", canon_PIXMA_iP4300_modeuses_plain, 0 },/*NOTE:temporary replacement*/ + { "DiscCompat", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */ + { "DiscOthers", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */ + { "TShirt", canon_PIXMA_iP4300_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP4300_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP4300_modeuses_PPplus, 0 },/* not yet supported */ + { "Transparency", canon_PIXMA_iP4300_modeuses_transparency, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_PIXMA_iP4300); + +/* ----------------------------------- Canon iP4500 ----------------------------------- */ +static const char* canon_PIXMA_iP4500_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +static const char* canon_PIXMA_iP4500_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_iP4500_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_PIXMA_iP4500_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP4500_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP4500_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_PIXMA_iP4500_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_iP4500_modeuses_disc[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + "600x600dpi_photodraft4", + NULL +}; + +static const char* canon_PIXMA_iP4500_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP4500_modeuses_PPother[] = { + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_iP4500_modeuses[] = { + { "Plain", canon_PIXMA_iP4500_modeuses_plain, DUPLEX_SUPPORT }, + { "PhotoPlusGloss2", canon_PIXMA_iP4500_modeuses_PPplus, 0 }, + { "GlossyPro", canon_PIXMA_iP4500_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iP4500_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_iP4500_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_PIXMA_iP4500_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP4500_modeuses_PPmatte, 0 }, + { "Coated", canon_PIXMA_iP4500_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_PIXMA_iP4500_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_iP4500_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_iP4500_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_iP4500_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_iP4500_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP4500_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP4500_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP4500); + +/* ----------------------------------- Canon iP4600 ----------------------------------- */ +static const char* canon_PIXMA_iP4600_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +static const char* canon_PIXMA_iP4600_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + "600x600dpi_photodraft2",/*untested*/ + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_PIXMA_iP4600_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + "600x600dpi_photodraft2",/*untested*/ + NULL +}; + +static const char* canon_PIXMA_iP4600_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_PIXMA_iP4600_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_photodraft3",/*untested*/ + NULL +}; + +static const char* canon_PIXMA_iP4600_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3",/*untested*/ + NULL +}; + +static const char* canon_PIXMA_iP4600_modeuses_disc[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_PIXMA_iP4600_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP4600_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_iP4600_modeuses[] = { + { "Plain", canon_PIXMA_iP4600_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_iP4600_modeuses_PPplusG2, 0 }, + { "PhotoPro2", canon_PIXMA_iP4600_modeuses_PPpro, 0 }, + { "PhotoProPlat", canon_PIXMA_iP4600_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss",canon_PIXMA_iP4600_modeuses_PPplusG2, 0 }, + { "GlossyPaper", canon_PIXMA_iP4600_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP4600_modeuses_PPmatte, 0 }, + { "Coated", canon_PIXMA_iP4600_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_PIXMA_iP4600_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_iP4600_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_iP4600_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_iP4600_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_iP4600_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP4600_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP4600_modeuses_PPother, 0 }, + }; + +DECLARE_MODEUSES(canon_PIXMA_iP4600); + +/* ----------------------------------- Canon iP4700 ----------------------------------- */ +static const char* canon_PIXMA_iP4700_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2", + "600x600dpi", + "300x300dpi", + NULL + }; + +static const char* canon_PIXMA_iP4700_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_PIXMA_iP4700_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP4700_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP4700_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_iP4700_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_PIXMA_iP4700_modeuses_disc[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_iP4700_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP4700_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_iP4700_modeuses[] = { + { "Plain", canon_PIXMA_iP4700_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_iP4700_modeuses_PPplusG2, 0 }, + { "PhotoPro2", canon_PIXMA_iP4700_modeuses_PPpro, 0 }, + { "PhotoProPlat", canon_PIXMA_iP4700_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss",canon_PIXMA_iP4700_modeuses_PPplusG2, 0 }, + { "GlossyPaper", canon_PIXMA_iP4700_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP4700_modeuses_PPmatte, 0 }, + { "Coated", canon_PIXMA_iP4700_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_iP4700_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_iP4700_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_iP4700_modeuses_PPpro, 0 }, + { "OtherPhotoHagakiO",canon_PIXMA_iP4700_modeuses_PPpro, 0 }, + { "Hagaki", canon_PIXMA_iP4700_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_iP4700_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_iP4700_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_iP4700_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP4700_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP4700_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP4700); + +/* ----------------------------------- Canon iP4900 ----------------------------------- */ +static const char* canon_PIXMA_iP4900_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_std2", + "300x300dpi", + NULL + }; + +static const char* canon_PIXMA_iP4900_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_PIXMA_iP4900_modeuses_PPproPlat[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP4900_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP4900_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_iP4900_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_iP4900_modeuses_disc[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_iP4900_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP4900_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_iP4900_modeuses[] = { + { "Plain", canon_PIXMA_iP4900_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_iP4900_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_PIXMA_iP4900_modeuses_PPproPlat, 0 }, + { "PhotoProSemiGloss",canon_PIXMA_iP4900_modeuses_PPplusG2, 0 }, + { "GlossyPaper", canon_PIXMA_iP4900_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP4900_modeuses_PPmatte, 0 }, + { "Coated", canon_PIXMA_iP4900_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_iP4900_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_iP4900_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_iP4900_modeuses_PPplusG2, 0 }, + { "Hagaki", canon_PIXMA_iP4900_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_iP4900_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_iP4900_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_iP4900_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP4900_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP4900_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP4900); + +/* ----------------------------------- Canon iP5000 ----------------------------------- */ +/* high mode not supported yet */ +static const char* canon_PIXMA_iP5000_modeuses_plain[] = { + "600x600dpi", + "300x300dpi_high",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* high modes not supported yet */ +static const char* canon_PIXMA_iP5000_modeuses_PPpro[] = { + "600x600dpi_photodraft",/*stand-in*/ + NULL +}; + +/* high modes not supported yet */ +static const char* canon_PIXMA_iP5000_modeuses_PPplus[] = { + "600x600dpi_photodraft", + NULL +}; + +/* high modes not supported yet */ +static const char* canon_PIXMA_iP5000_modeuses_PPplusDS[] = { + "600x600dpi_photodraft",/*stand-in*/ + NULL +}; + +/* US driver does not supply this media: untested */ +static const char* canon_PIXMA_iP5000_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +/* high modes not supported yet */ +static const char* canon_PIXMA_iP5000_modeuses_disc[] = { + /* plain mode temporarily added here */ + "600x600dpi", + "300x300dpi_high",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + /* photo modes temporarily added */ + "600x600dpi_photodraft",/*stand-in*/ + NULL +}; + +static const char* canon_PIXMA_iP5000_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +/* high modes not supported yet */ +static const char* canon_PIXMA_iP5000_modeuses_PPother[] = { + "600x600dpi_photodraft",/*stand-in*/ + NULL + }; + +static const char* canon_PIXMA_iP5000_modeuses_transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_iP5000_modeuses[] = { + { "Plain", canon_PIXMA_iP5000_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_PIXMA_iP5000_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iP5000_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_iP5000_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP5000_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_PIXMA_iP5000_modeuses_PPplusDS, 0 }, + { "Coated", canon_PIXMA_iP5000_modeuses_PPplusDS, 0 }, + { "InkJetHagaki", canon_PIXMA_iP5000_modeuses_PPplusDS, 0 },/*untested*/ + { "Hagaki", canon_PIXMA_iP5000_modeuses_Hagaki, DUPLEX_SUPPORT },/*untested*/ + { "DiscCompat", canon_PIXMA_iP5000_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_iP5000_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_iP5000_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP5000_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP5000_modeuses_PPother, 0 }, + { "Transparency", canon_PIXMA_iP5000_modeuses_transparency, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP5000); + +/* ----------------------------------- Canon iP5300 ----------------------------------- */ +static const char* canon_PIXMA_iP5300_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not yet supported */ +static const char* canon_PIXMA_iP5300_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP5300_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_PIXMA_iP5300_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP5300_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP5300_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_PIXMA_iP5300_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_iP5300_modeuses_disc[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + "600x600dpi_photodraft4", + NULL +}; + +static const char* canon_PIXMA_iP5300_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP5300_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_iP5300_modeuses[] = { + { "Plain", canon_PIXMA_iP5300_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_PIXMA_iP5300_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iP5300_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_iP5300_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_PIXMA_iP5300_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP5300_modeuses_PPmatte, 0 }, + { "Coated", canon_PIXMA_iP5300_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_PIXMA_iP5300_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_iP5300_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "CD", canon_PIXMA_iP5300_modeuses_plain, 0 },/*optional using plain*/ + { "DiscCompat", canon_PIXMA_iP5300_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_iP5300_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_iP5300_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP5300_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP5300_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP5300); + +/* ----------------------------------- Canon iP6000 ----------------------------------- */ +static const char* canon_PIXMA_iP6000_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +static const char* canon_PIXMA_iP6000_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP6000_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP6000_modeuses_PPmatte[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo", + NULL +}; + +/*Note: US printer driver does not support inkjetHagaki */ +static const char* canon_PIXMA_iP6000_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/*Note: US printer driver does not support Hagaki */ +static const char* canon_PIXMA_iP6000_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3", + NULL +}; + +static const char* canon_PIXMA_iP6000_modeuses_disc[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP6000_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP6000_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL + }; + +static const char* canon_PIXMA_iP6000_modeuses_transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_iP6000_modeuses[] = { + { "Plain", canon_PIXMA_iP6000_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "GlossyPro", canon_PIXMA_iP6000_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iP6000_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_iP6000_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP6000_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_iP6000_modeuses_PPplus, 0 }, + { "Coated", canon_PIXMA_iP6000_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_PIXMA_iP6000_modeuses_inkjetHagaki, 0 },/*untested*/ + { "Hagaki", canon_PIXMA_iP6000_modeuses_Hagaki, DUPLEX_SUPPORT },/* untested */ + { "CD", canon_PIXMA_iP6000_modeuses_disc, 0 },/*NOTE:temporary*/ + { "DiscCompat", canon_PIXMA_iP6000_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_iP6000_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_iP6000_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP6000_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP6000_modeuses_PPother, 0 }, + { "Transparency", canon_PIXMA_iP6000_modeuses_transparency, 0 }, + }; + +DECLARE_MODEUSES(canon_PIXMA_iP6000); + +/* ----------------------------------- Canon iP6100 ----------------------------------- */ +static const char* canon_PIXMA_iP6100_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +static const char* canon_PIXMA_iP6100_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP6100_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP6100_modeuses_PPmatte[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP6100_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh2",/*untested*/ + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP6100_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3", + NULL +}; + +static const char* canon_PIXMA_iP6100_modeuses_disc[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP6100_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP6100_modeuses_PPother[] = { + "600x600dpi_photohigh",/*untested*/ + NULL + }; + +static const char* canon_PIXMA_iP6100_modeuses_transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_iP6100_modeuses[] = { + { "Plain", canon_PIXMA_iP6100_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "GlossyPro", canon_PIXMA_iP6100_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iP6100_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_iP6100_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP6100_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_iP6100_modeuses_PPplus, 0 }, + { "Coated", canon_PIXMA_iP6100_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_PIXMA_iP6100_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_iP6100_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "CD", canon_PIXMA_iP6100_modeuses_disc, 0 },/*NOTE:identical, so combined*/ + { "TShirt", canon_PIXMA_iP6100_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP6100_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP6100_modeuses_PPother, 0 }, + { "Transparency", canon_PIXMA_iP6100_modeuses_transparency, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP6100); + +/* ----------------------------------- Canon iP6210 ----------------------------------- */ +static const char* canon_PIXMA_iP6210_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + /* Color */ + "600x600dpi_high2", + "600x600dpi_std2", + "300x300dpi_std2", + "300x300dpi_draft2", + NULL + }; + +static const char* canon_PIXMA_iP6210_modeuses_PPpro[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + /* Color */ + "1200x1200dpi_photohigh4", + "600x600dpi_photohigh3", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP6210_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + /* Color */ + "600x600dpi_photohigh5", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP6210_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + /* Color */ + "600x600dpi_photohigh5", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP6210_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3", + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + "600x600dpi_draft4", + NULL +}; + +static const char* canon_PIXMA_iP6210_modeuses_TShirt[] = { + "600x600dpi_tshirt", + /* Color */ + "600x600dpi_std5", + NULL +}; + +static const char* canon_PIXMA_iP6210_modeuses_PPother[] = { + "600x600dpi_photohigh", + "600x600dpi_photo",/*untested*/ + /* Color */ + "600x600dpi_photohigh3", + "600x600dpi_photo2",/*untested*/ + NULL + }; + +static const canon_modeuse_t canon_PIXMA_iP6210_modeuses[] = { + { "Plain", canon_PIXMA_iP6210_modeuses_plain, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL }, + { "GlossyPro", canon_PIXMA_iP6210_modeuses_PPpro, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL }, + { "PhotopaperPlus", canon_PIXMA_iP6210_modeuses_PPplus, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL }, + { "PhotopaperPlusDouble", canon_PIXMA_iP6210_modeuses_PPplusDS, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL }, + { "PhotopaperMatte", canon_PIXMA_iP6210_modeuses_PPplusDS, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL }, + { "GlossyPaper", canon_PIXMA_iP6210_modeuses_PPplusDS, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL }, + { "Coated", canon_PIXMA_iP6210_modeuses_PPplusDS, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_PIXMA_iP6210_modeuses_PPplusDS, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL }, + { "Hagaki", canon_PIXMA_iP6210_modeuses_Hagaki, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_PIXMA_iP6210_modeuses_TShirt, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL }, + { "Envelope", canon_PIXMA_iP6210_modeuses_Hagaki, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_PIXMA_iP6210_modeuses_PPother, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP6210); + +/* ----------------------------------- Canon iP6600 ----------------------------------- */ +static const char* canon_PIXMA_iP6600_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not yet supported */ +static const char* canon_PIXMA_iP6600_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP6600_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP6600_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP6600_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_iP6600_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2", + NULL +}; + +static const char* canon_PIXMA_iP6600_modeuses_disc[] = { + "600x600dpi_photohigh5", + "600x600dpi_photo5", + "600x600dpi_photodraft5", + NULL +}; + +static const char* canon_PIXMA_iP6600_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP6600_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_iP6600_modeuses[] = { + { "Plain", canon_PIXMA_iP6600_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_PIXMA_iP6600_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iP6600_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_iP6600_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP6600_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_iP6600_modeuses_PPplus, 0 }, + { "Coated", canon_PIXMA_iP6600_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_PIXMA_iP6600_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_iP6600_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_iP6600_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_iP6600_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_iP6600_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP6600_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP6600_modeuses_PPother, 0 }, + }; + +DECLARE_MODEUSES(canon_PIXMA_iP6600); + +/* ----------------------------------- Canon iP6700 ----------------------------------- */ +static const char* canon_PIXMA_iP6700_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not yet supported */ +static const char* canon_PIXMA_iP6700_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP6700_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP6700_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP6700_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_iP6700_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2", + NULL +}; + +static const char* canon_PIXMA_iP6700_modeuses_FA[] = { + "600x600dpi_photohigh", + NULL +}; + +static const char* canon_PIXMA_iP6700_modeuses_disc[] = { + "600x600dpi_photohigh5", + "600x600dpi_photo5", + "600x600dpi_photodraft5", + NULL +}; + +static const char* canon_PIXMA_iP6700_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP6700_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_iP6700_modeuses[] = { + { "Plain", canon_PIXMA_iP6700_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_PIXMA_iP6700_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iP6700_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_iP6700_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP6700_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_iP6700_modeuses_PPplus, 0 }, + { "Coated", canon_PIXMA_iP6700_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_PIXMA_iP6700_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_iP6700_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "FineArtPhotoRag", canon_PIXMA_iP6700_modeuses_FA, 0 }, + { "FineArtOther", canon_PIXMA_iP6700_modeuses_FA, 0 }, + { "DiscCompat", canon_PIXMA_iP6700_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_iP6700_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_iP6700_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP6700_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP6700_modeuses_PPother, 0 }, + }; + +DECLARE_MODEUSES(canon_PIXMA_iP6700); + +/* ----------------------------------- Canon iP7100 ----------------------------------- */ +static const char* canon_PIXMA_iP7100_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_draft", + "600x600dpi_draft2", + /* Mono */ + "600x600dpi_mono", + "600x600dpi_draftmono", + NULL + }; + +static const char* canon_PIXMA_iP7100_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + + +static const char* canon_PIXMA_iP7100_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP7100_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +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_draft3", + /* Mono */ + "600x600dpi_mono", + NULL +}; + +static const char* canon_PIXMA_iP7100_modeuses_FA[] = { + "600x600dpi_photohigh3", + NULL +}; + +static const char* canon_PIXMA_iP7100_modeuses_disc[] = { + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_iP7100_modeuses_TShirt[] = { + "600x600dpi", + NULL +}; + +static const char* canon_PIXMA_iP7100_modeuses_Transparency[] = { + "600x600dpi_std4", + "600x600dpi_draft4", + NULL +}; + +/*untested*/ +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 }, + { "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 }, + { "Envelope", canon_PIXMA_iP7100_modeuses_Hagaki, 0 }, + { "Transparency", canon_PIXMA_iP7100_modeuses_Transparency, 0 }, + { "PhotopaperOther", canon_PIXMA_iP7100_modeuses_PPother, 0 },/*untested*/ + }; + +DECLARE_MODEUSES(canon_PIXMA_iP7100); + +/* ----------------------------------- Canon iP7200 ----------------------------------- */ +static const char* canon_PIXMA_iP7200_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_std2",/*duplex*/ + "300x300dpi", + NULL +}; + +static const char* canon_PIXMA_iP7200_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode still unsupported */ +static const char* canon_PIXMA_iP7200_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP7200_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP7200_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_PIXMA_iP7200_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_iP7200_modeuses_disc[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_iP7200_modeuses_TShirt[] = { + "600x600dpi_photohigh", + NULL +}; + +static const char* canon_PIXMA_iP7200_modeuses_PPother[] = { + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_iP7200_modeuses[] = { + { "Plain", canon_PIXMA_iP7200_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_iP7200_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_PIXMA_iP7200_modeuses_PPpro, 0 }, + { "PhotoProLuster", canon_PIXMA_iP7200_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss",canon_PIXMA_iP7200_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP7200_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_iP7200_modeuses_PPplusG2, 0 }, + { "Coated", canon_PIXMA_iP7200_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_iP7200_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_iP7200_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_iP7200_modeuses_PPplusG2, 0 }, + { "Hagaki", canon_PIXMA_iP7200_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_iP7200_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_iP7200_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_iP7200_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP7200_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iP7200_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iP7200); + +/* ----------------------------------- Canon iP7500 ----------------------------------- */ +static const char* canon_PIXMA_iP7500_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest modes not yet supported */ +static const char* canon_PIXMA_iP7500_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + + +static const char* canon_PIXMA_iP7500_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP7500_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP7500_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2", + NULL +}; + +static const char* canon_PIXMA_iP7500_modeuses_FA[] = { + "600x600dpi_photohigh3", + NULL +}; + +static const char* canon_PIXMA_iP7500_modeuses_disc[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + "600x600dpi_photodraft4", + NULL +}; + +static const char* canon_PIXMA_iP7500_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +/*untested*/ +static const char* canon_PIXMA_iP7500_modeuses_Transparency[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP7500_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_iP7500_modeuses[] = { + { "Plain", canon_PIXMA_iP7500_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_PIXMA_iP7500_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iP7500_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_iP7500_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_PIXMA_iP7500_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_iP7500_modeuses_PPplus, 0 }, + { "Coated", canon_PIXMA_iP7500_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_PIXMA_iP7500_modeuses_PPplus, 0 }, + { "Hagaki", canon_PIXMA_iP7500_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "FineArtPhotoRag", canon_PIXMA_iP7500_modeuses_FA, 0 }, + { "FineArtOther", canon_PIXMA_iP7500_modeuses_FA, 0 }, + { "DiscCompat", canon_PIXMA_iP7500_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_iP7500_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_iP7500_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iP7500_modeuses_Hagaki, 0 }, + { "Transparency", canon_PIXMA_iP7500_modeuses_Transparency, 0 },/*untested*/ + { "PhotopaperOther", canon_PIXMA_iP7500_modeuses_PPother, 0 }, + }; + +DECLARE_MODEUSES(canon_PIXMA_iP7500); + +/* ----------------------------------- Canon iP8100 ----------------------------------- */ +static const char* canon_PIXMA_iP8100_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_draft", + "600x600dpi_draft2", + /* Mono */ + "600x600dpi_mono", + "600x600dpi_draftmono", + NULL + }; + +/* no support for modes using R yet */ +static const char* canon_PIXMA_iP8100_modeuses_PPpro[] = { + "600x600dpi_photohigh",/*untested*/ + "600x600dpi_photo", + NULL +}; + + +static const char* canon_PIXMA_iP8100_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_PIXMA_iP8100_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP8100_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iP8100_modeuses_PPgloss[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +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_draft3", + /* Mono */ + "600x600dpi_mono", + NULL +}; + +static const char* canon_PIXMA_iP8100_modeuses_FA[] = { + "600x600dpi_photohigh3", + NULL +}; + +static const char* canon_PIXMA_iP8100_modeuses_disc[] = { + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_iP8100_modeuses_TShirt[] = { + "600x600dpi", + NULL +}; + +static const char* canon_PIXMA_iP8100_modeuses_Transparency[] = { + "600x600dpi_std4", + "600x600dpi_draft4", + NULL +}; + +/*untested*/ +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 }, + { "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 }, + { "Envelope", canon_PIXMA_iP8100_modeuses_Hagaki, 0 }, + { "Transparency", canon_PIXMA_iP8100_modeuses_Transparency, 0 }, + { "PhotopaperOther", canon_PIXMA_iP8100_modeuses_PPother, 0 },/*untested*/ + }; + +DECLARE_MODEUSES(canon_PIXMA_iP8100); + +/* ----------------------------------- Canon iP8500 ----------------------------------- */ +static const char* canon_PIXMA_iP8500_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* modes not yet supported */ +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[] = { + "600x600dpi_photodraft", + NULL +}; + +/* most modes unsupported */ +static const char* canon_PIXMA_iP8500_modeuses_PPplusDS[] = { + "600x600dpi_photodraft2", + NULL +}; + +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[] = { + "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_draft3", + NULL +}; + +static const char* canon_PIXMA_iP8500_modeuses_disc[] = { + "600x600dpi_photo3", + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_PIXMA_iP8500_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_iP8500_modeuses_Transparency[] = { + "600x600dpi_photo4", + "600x600dpi_photodraft4", + NULL +}; + +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*/ + { "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 }, + { "Envelope", canon_PIXMA_iP8500_modeuses_Hagaki, 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_draft", + "600x600dpi_draft2", + /* Mono */ + "600x600dpi_mono", + "600x600dpi_draftmono", + NULL + }; + +/* modes using R not yet supported */ +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", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_PIXMA_iP8600_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP8600_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +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_draft3", + /* Mono */ + "600x600dpi_mono", + NULL +}; + +static const char* canon_PIXMA_iP8600_modeuses_FA[] = { + "600x600dpi_photohigh4", + NULL +}; + +static const char* canon_PIXMA_iP8600_modeuses_disc[] = { + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_iP8600_modeuses_TShirt[] = { + "600x600dpi", + NULL +}; + +static const char* canon_PIXMA_iP8600_modeuses_Transparency[] = { + "600x600dpi_std4", + "600x600dpi_draft4", + NULL +}; + +/*untested*/ +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 }, + { "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 }, + { "Envelope", canon_PIXMA_iP8600_modeuses_Hagaki, 0 }, + { "Transparency", canon_PIXMA_iP8600_modeuses_Transparency, 0 }, + { "PhotopaperOther", canon_PIXMA_iP8600_modeuses_PPother, 0 },/*untested*/ + }; + +DECLARE_MODEUSES(canon_PIXMA_iP8600); + +/* ----------------------------------- Canon iP9910 ----------------------------------- */ +static const char* canon_PIXMA_iP9910_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_draft", + "600x600dpi_draft2", + /* Mono */ + "600x600dpi_mono", + "600x600dpi_draftmono", + NULL + }; + +/* highest mode using R not yet supported */ +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[] = { + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_PIXMA_iP9910_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iP9910_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +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_draft3", + /* Mono */ + "600x600dpi_mono", + NULL +}; + +static const char* canon_PIXMA_iP9910_modeuses_FA[] = { + "600x600dpi_photohigh4", + NULL +}; + +static const char* canon_PIXMA_iP9910_modeuses_disc[] = { + "600x600dpi_photo2", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_iP9910_modeuses_TShirt[] = { + "600x600dpi", + NULL +}; + +static const char* canon_PIXMA_iP9910_modeuses_Transparency[] = { + "600x600dpi_std4", + "600x600dpi_draft4", + NULL +}; + +/*untested*/ +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 }, + { "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 }, + { "Envelope", canon_PIXMA_iP9910_modeuses_Hagaki, 0 }, + { "Transparency", canon_PIXMA_iP9910_modeuses_Transparency, 0 }, + { "PhotopaperOther", canon_PIXMA_iP9910_modeuses_PPother, 0 }, + }; + +DECLARE_MODEUSES(canon_PIXMA_iP9910); + +/* ----------------------------------- Canon iX4000 ----------------------------------- */ +static const char* canon_PIXMA_iX4000_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not supported yet */ +static const char* canon_PIXMA_iX4000_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iX4000_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_iX4000_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iX4000_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_PIXMA_iX4000_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_iX4000_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +/* US driver does not have this media */ +static const char* canon_PIXMA_iX4000_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +/* US driver does not have this media */ +static const char* canon_PIXMA_iX4000_modeuses_Transparency[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_iX4000_modeuses[] = { + { "Plain", canon_PIXMA_iX4000_modeuses_plain, 0 }, + { "GlossyPro", canon_PIXMA_iX4000_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iX4000_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_iX4000_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_PIXMA_iX4000_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_PIXMA_iX4000_modeuses_PPplusDS, 0 }, + { "Coated", canon_PIXMA_iX4000_modeuses_PPplusDS, 0 }, + { "InkJetHagaki", canon_PIXMA_iX4000_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_iX4000_modeuses_Hagaki, 0 }, + { "TShirt", canon_PIXMA_iX4000_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iX4000_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iX4000_modeuses_PPother, 0 },/*Note: US driver does not have this media*/ + { "Transparency", canon_PIXMA_iX4000_modeuses_Transparency, 0 },/*Note: US driver does not have this media */ + }; + +DECLARE_MODEUSES(canon_PIXMA_iX4000); + +/* ----------------------------------- Canon iX5000 ----------------------------------- */ +static const char* canon_PIXMA_iX5000_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not supported yet */ +static const char* canon_PIXMA_iX5000_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iX5000_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_iX5000_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iX5000_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_PIXMA_iX5000_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_iX5000_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +/* US driver does not have this media */ +static const char* canon_PIXMA_iX5000_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_iX5000_modeuses[] = { + { "Plain", canon_PIXMA_iX5000_modeuses_plain, 0 }, + { "GlossyPro", canon_PIXMA_iX5000_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_iX5000_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_PIXMA_iX5000_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_PIXMA_iX5000_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_PIXMA_iX5000_modeuses_PPplusDS, 0 }, + { "Coated", canon_PIXMA_iX5000_modeuses_PPplusDS, 0 }, + { "InkJetHagaki", canon_PIXMA_iX5000_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_iX5000_modeuses_Hagaki, 0 }, + { "TShirt", canon_PIXMA_iX5000_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iX5000_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iX5000_modeuses_PPother, 0 },/*Note: US driver does not have this media*/ + { "Transparency", canon_PIXMA_iX5000_modeuses_inkjetHagaki, 0 },/*Note: US driver does not have this media */ + }; + +DECLARE_MODEUSES(canon_PIXMA_iX5000); + +/* ----------------------------------- Canon iX6500 ----------------------------------- */ +static const char* canon_PIXMA_iX6500_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + + +static const char* canon_PIXMA_iX6500_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode not supported yet */ +static const char* canon_PIXMA_iX6500_modeuses_PPproPlat[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_iX6500_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_iX6500_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_iX6500_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_iX6500_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +/*untested*/ +static const char* canon_PIXMA_iX6500_modeuses_PPother[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_iX6500_modeuses[] = { + { "Plain", canon_PIXMA_iX6500_modeuses_plain, 0 }, + { "PhotoPlusGloss2", canon_PIXMA_iX6500_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_PIXMA_iX6500_modeuses_PPproPlat, 0 }, + { "PhotoProSemiGloss",canon_PIXMA_iX6500_modeuses_PPplusG2, 0 }, + { "GlossyPaper", canon_PIXMA_iX6500_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_PIXMA_iX6500_modeuses_PPmatte, 0 }, + { "Coated", canon_PIXMA_iX6500_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_PIXMA_iX6500_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_iX6500_modeuses_PPplusG2, 0 }, + { "HagakiA", canon_PIXMA_iX6500_modeuses_Hagaki, 0 }, + { "Hagaki", canon_PIXMA_iX6500_modeuses_Hagaki, 0 }, + { "TShirt", canon_PIXMA_iX6500_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_iX6500_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_iX6500_modeuses_PPother, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_PIXMA_iX6500); + +/* ----------------------------------- Canon iX7000 ----------------------------------- */ +static const char* canon_PIXMA_iX7000_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + + +static const char* canon_PIXMA_iX7000_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo",/*untested*/ + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_iX7000_modeuses_PPproPlat[] = { + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +/* highest mode not supported yet */ +static const char* canon_PIXMA_iX7000_modeuses_PPsemigloss[] = { + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_iX7000_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_iX7000_modeuses_Hagaki[] = { + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_PIXMA_iX7000_modeuses_FA[] = { + "600x600dpi_photo3", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_iX7000_modeuses[] = { + { "Plain", canon_PIXMA_iX7000_modeuses_plain, DUPLEX_SUPPORT }, + { "PhotoPlusGloss2", canon_PIXMA_iX7000_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_PIXMA_iX7000_modeuses_PPproPlat, 0 }, + { "PhotoProSemiGloss",canon_PIXMA_iX7000_modeuses_PPsemigloss, 0 }, + { "PhotopaperMatte", canon_PIXMA_iX7000_modeuses_PPproPlat, 0 }, + { "InkJetHagaki", canon_PIXMA_iX7000_modeuses_inkjetHagaki, 0 }, + { "HagakiA", canon_PIXMA_iX7000_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "Hagaki", canon_PIXMA_iX7000_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "FineArtPhotoRag", canon_PIXMA_iX7000_modeuses_FA, 0 }, + { "FineArtOther", canon_PIXMA_iX7000_modeuses_FA, 0 }, + { "Envelope", canon_PIXMA_iX7000_modeuses_Hagaki, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_iX7000); + +/* ----------------------------------- Canon MP150 ----------------------------------- */ +static const char* canon_MULTIPASS_MP150_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + /* mono */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono",/*untested*/ + "300x300dpi_mono", + "300x300dpi_draftmono", + /* color-only */ + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3",/*untested*/ + "300x300dpi_std3", + "300x300dpi_draft3", + NULL + }; + +static const char* canon_MULTIPASS_MP150_modeuses_PPpro[] = { + "1200x1200dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP150_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_MULTIPASS_MP150_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP150_modeuses_PPgloss[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP150_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2", + /* mono */ + "600x600dpi_highmono2", + "600x600dpi_mono2", + "600x600dpi_draftmono2", + /* color-only */ + "600x600dpi_high4", + "600x600dpi_std4", + "600x600dpi_draft4", + NULL +}; + +static const char* canon_MULTIPASS_MP150_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP150_modeuses_PPother[] = { + "600x600dpi_photohigh", + "600x600dpi_photo",/*untested*/ + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MP150_modeuses[] = { + { "Plain", canon_MULTIPASS_MP150_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "GlossyPro", canon_MULTIPASS_MP150_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotopaperPlus", canon_MULTIPASS_MP150_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP150_modeuses_PPplusDS, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MP150_modeuses_PPplusDS, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MP150_modeuses_PPgloss, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MP150_modeuses_PPplusDS, INKSET_COLOR_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MP150_modeuses_PPplusDS, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MP150_modeuses_Hagaki, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MP150_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MP150_modeuses_Hagaki, INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MP150_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP150); + +/* ----------------------------------- Canon MP190 ----------------------------------- */ +static const char* canon_MULTIPASS_MP190_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + /* Mono */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono",/*untested*/ + "300x300dpi_mono", + "300x300dpi_draftmono", + /* Color */ + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3",/*untested*/ + "300x300dpi_std3", + "300x300dpi_draft3", + NULL + }; + +static const char* canon_MULTIPASS_MP190_modeuses_PPpro[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP190_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP190_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP190_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2",/*untested*/ + /* Mono */ + "600x600dpi_highmono2", + "600x600dpi_mono2", + "600x600dpi_draftmono2",/*untested*/ + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + "600x600dpi_draft4",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP190_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP190_modeuses_PPother[] = { + "600x600dpi_photohigh", + "600x600dpi_photo",/*untested*/ + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MP190_modeuses[] = { + { "Plain", canon_MULTIPASS_MP190_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MP190_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoPro2", canon_MULTIPASS_MP190_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "GlossyPro", canon_MULTIPASS_MP190_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotopaperPlus", canon_MULTIPASS_MP190_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_MULTIPASS_MP190_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MP190_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MP190_modeuses_PPmatte, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MP190_modeuses_PPmatte, INKSET_COLOR_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MP190_modeuses_PPmatte, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MP190_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MP190_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MP190_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MP190_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP190); + +/* ----------------------------------- Canon MP210 ----------------------------------- */ +static const char* canon_MULTIPASS_MP210_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + /* Mono */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono",/*untested*/ + "300x300dpi_mono", + "300x300dpi_draftmono", + /* Color */ + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3",/*untested*/ + "300x300dpi_std3", + "300x300dpi_draft3", + NULL + }; + +static const char* canon_MULTIPASS_MP210_modeuses_PPpro[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested here*/ + NULL +}; + +static const char* canon_MULTIPASS_MP210_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_MULTIPASS_MP210_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested here*/ + NULL +}; + +static const char* canon_MULTIPASS_MP210_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + "600x600dpi_photodraft",/*untested here*/ + NULL +}; + +static const char* canon_MULTIPASS_MP210_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2",/*untested*/ + /* Mono */ + "600x600dpi_highmono2", + "600x600dpi_mono2", + "600x600dpi_draftmono2",/*untested*/ + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + "600x600dpi_draft4",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP210_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP210_modeuses_PPother[] = { + "600x600dpi_photohigh", + "600x600dpi_photo",/*untested*/ + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MP210_modeuses[] = { + { "Plain", canon_MULTIPASS_MP210_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "GlossyPro", canon_MULTIPASS_MP210_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotopaperPlus", canon_MULTIPASS_MP210_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP210_modeuses_PPplusDS, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MP210_modeuses_PPmatte, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MP210_modeuses_PPplusDS, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MP210_modeuses_PPmatte, INKSET_COLOR_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MP210_modeuses_PPmatte, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MP210_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MP210_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MP210_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MP210_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP210); + +/* ----------------------------------- Canon MP230 ----------------------------------- */ +static const char* canon_MULTIPASS_MP230_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft",/*untested*/ + /* Mono */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono",/*untested*/ + "300x300dpi_mono", + "300x300dpi_draftmono",/*untested*/ + /* Color */ + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3",/*untested*/ + "300x300dpi_std3", + "300x300dpi_draft3",/*untested*/ + NULL + }; + +static const char* canon_MULTIPASS_MP230_modeuses_PPproPlat[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP230_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP230_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2",/*untested*/ + /* Mono */ + "600x600dpi_highmono2", + "600x600dpi_mono2", + "600x600dpi_draftmono2",/*untested*/ + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + "600x600dpi_draft4",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP230_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP230_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP230_modeuses[] = { + { "Plain", canon_MULTIPASS_MP230_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL}, + { "PhotoPlusGloss2", canon_MULTIPASS_MP230_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_MP230_modeuses_PPproPlat, INKSET_COLOR_SUPPORT }, + { "PhotoProLuster", canon_MULTIPASS_MP230_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss", canon_MULTIPASS_MP230_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MP230_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MP230_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MP230_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_MULTIPASS_MP230_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_MULTIPASS_MP230_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK", canon_MULTIPASS_MP230_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MP230_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MP230_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MP230_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MP230_modeuses_PPother, INKSET_COLOR_SUPPORT }, + }; + +DECLARE_MODEUSES(canon_MULTIPASS_MP230); + +/* ----------------------------------- Canon MP240 ----------------------------------- */ +static const char* canon_MULTIPASS_MP240_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + /* Mono */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono",/*untested*/ + "300x300dpi_mono", + "300x300dpi_draftmono", + /* Color */ + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3",/*untested*/ + "300x300dpi_std3", + "300x300dpi_draft3", + NULL + }; + +static const char* canon_MULTIPASS_MP240_modeuses_PPpro[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP240_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP240_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2",/*untested*/ + /* Mono */ + "600x600dpi_highmono2", + "600x600dpi_mono2", + "600x600dpi_draftmono2",/*untested*/ + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + "600x600dpi_draft4",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP240_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP240_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP240_modeuses[] = { + { "Plain", canon_MULTIPASS_MP240_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL}, + { "PhotoPlusGloss2", canon_MULTIPASS_MP240_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotoPro2", canon_MULTIPASS_MP240_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_MP240_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss", canon_MULTIPASS_MP240_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MP240_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MP240_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MP240_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MP240_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MP240_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MP240_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MP240_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MP240_modeuses_PPother, INKSET_COLOR_SUPPORT }, + }; + +DECLARE_MODEUSES(canon_MULTIPASS_MP240); + +/* ----------------------------------- Canon MP250 ----------------------------------- */ +static const char* canon_MULTIPASS_MP250_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft",/*untested*/ + /* mono */ + "600x600dpi_highmono", + "600x600dpi_highmono2",/* duplex */ + "600x600dpi_mono", + "600x600dpi_draftmono",/*untested*/ + "300x300dpi_mono", + "300x300dpi_draftmono",/*untested*/ + /* color-only --- no special duplex */ + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3",/*untested*/ + "300x300dpi_std3", + "300x300dpi_draft3",/*untested*/ + NULL + }; + +static const char* canon_MULTIPASS_MP250_modeuses_PPpro[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP250_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP250_modeuses_Hagaki[] = { + "600x600dpi_high5", + "600x600dpi_std2", + "600x600dpi_draft2",/*untested*/ + /* mono */ + "600x600dpi_highmono5", + "600x600dpi_mono2", + "600x600dpi_draftmono2",/*untested*/ + /* color-only */ + "600x600dpi_high4", + "600x600dpi_std4", + "600x600dpi_draft4",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP250_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP250_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MP250_modeuses[] = { + { "Plain", canon_MULTIPASS_MP250_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL}, + { "PhotoPlusGloss2", canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotoPro2", canon_MULTIPASS_MP250_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_MULTIPASS_MP250_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK",canon_MULTIPASS_MP250_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "ProPhotoHagakiP", canon_MULTIPASS_MP250_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MP250_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT}, + { "TShirt", canon_MULTIPASS_MP250_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MP250_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MP250_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP250); + +/* ----------------------------------- Canon MP280 ----------------------------------- */ +static const char* canon_MULTIPASS_MP280_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft",/*untested*/ + /* Mono */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono",/*untested*/ + "300x300dpi_mono", + "300x300dpi_draftmono",/*untested*/ + /* Color */ + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3",/*untested*/ + "300x300dpi_std3", + "300x300dpi_draft3",/*untested*/ + NULL + }; + +static const char* canon_MULTIPASS_MP280_modeuses_PPproPlat[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP280_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP280_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2",/*untested*/ + /* Mono */ + "600x600dpi_highmono2", + "600x600dpi_mono2", + "600x600dpi_draftmono2",/*untested*/ + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + "600x600dpi_draft4",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP280_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP280_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP280_modeuses[] = { + { "Plain", canon_MULTIPASS_MP280_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL}, + { "PhotoPlusGloss2", canon_MULTIPASS_MP280_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_MP280_modeuses_PPproPlat, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss", canon_MULTIPASS_MP280_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MP280_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MP280_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MP280_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_MULTIPASS_MP280_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_MULTIPASS_MP280_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK", canon_MULTIPASS_MP280_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MP280_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MP280_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MP280_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MP280_modeuses_PPother, INKSET_COLOR_SUPPORT }, + }; + +DECLARE_MODEUSES(canon_MULTIPASS_MP280); + +/* ----------------------------------- Canon MP360 ----------------------------------- */ +static const char* canon_MULTIPASS_MP360_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_highmono",/* mono */ + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +static const char* canon_MULTIPASS_MP360_modeuses_PPpro[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP360_modeuses_PPplus[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_MULTIPASS_MP360_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP360_modeuses_PPgloss[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP360_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_highmono2",/* mono */ + "600x600dpi_std2", + "600x600dpi_draft2", + NULL +}; + +static const char* canon_MULTIPASS_MP360_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP360_modeuses_Transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MP360_modeuses[] = { + { "Plain", canon_MULTIPASS_MP360_modeuses_plain, 0 }, + { "GlossyPro", canon_MULTIPASS_MP360_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_MULTIPASS_MP360_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP360_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP360_modeuses_PPgloss, 0 }, + { "Coated", canon_MULTIPASS_MP360_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP360_modeuses_PPmatte, 0 }, + { "Hagaki", canon_MULTIPASS_MP360_modeuses_Hagaki, 0 }, + { "TShirt", canon_MULTIPASS_MP360_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP360_modeuses_Hagaki, 0 }, + { "Transparency", canon_MULTIPASS_MP360_modeuses_Transparency, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP360); + +/* ----------------------------------- Canon MP470 ----------------------------------- */ +static const char* canon_MULTIPASS_MP470_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + /* Mono */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono",/*untested*/ + "300x300dpi_mono", + "300x300dpi_draftmono", + /* Color */ + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2",/*untested*/ + "300x300dpi_std2", + "300x300dpi_draft2", + NULL + }; + +/* high mode not supported yet */ +static const char* canon_MULTIPASS_MP470_modeuses_PPpro[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP470_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_MULTIPASS_MP470_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP470_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP470_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3", + /* Mono */ + "600x600dpi_highmono3", + "600x600dpi_mono3", + "600x600dpi_draftmono3", + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + "600x600dpi_draft4", + NULL +}; + +static const char* canon_MULTIPASS_MP470_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP470_modeuses_PPother[] = { + "600x600dpi_photohigh", + "600x600dpi_photo",/*untested*/ + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MP470_modeuses[] = { + { "Plain", canon_MULTIPASS_MP470_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL}, + { "GlossyPro", canon_MULTIPASS_MP470_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotopaperPlus", canon_MULTIPASS_MP470_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP470_modeuses_PPplusDS, INKSET_COLOR_SUPPORT }, + { "PhotoPlusGloss2", canon_MULTIPASS_MP470_modeuses_PPplusDS, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MP470_modeuses_PPmatte, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MP470_modeuses_PPplusDS, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MP470_modeuses_PPmatte, INKSET_COLOR_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MP470_modeuses_PPmatte, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MP470_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MP470_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MP470_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MP470_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP470); + +/* ----------------------------------- Canon MP480 ----------------------------------- */ +static const char* canon_MULTIPASS_MP480_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + /* Mono */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono",/*untested*/ + "300x300dpi_mono", + "300x300dpi_draftmono", + /* Color */ + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2",/*untested*/ + "300x300dpi_std2", + "300x300dpi_draft2", + NULL + }; + +static const char* canon_MULTIPASS_MP480_modeuses_PPpro[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP480_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP480_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + /* Mono */ + "600x600dpi_highmono3", + "600x600dpi_mono3", + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + NULL +}; + +static const char* canon_MULTIPASS_MP480_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP480_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP480_modeuses[] = { + { "Plain", canon_MULTIPASS_MP480_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL}, + { "PhotoPlusGloss2", canon_MULTIPASS_MP480_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotoPro2", canon_MULTIPASS_MP480_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_MP480_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MP480_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MP480_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MP480_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MP480_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MP480_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MP480_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MP480_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MP480_modeuses_PPother, INKSET_COLOR_SUPPORT }, + }; + +DECLARE_MODEUSES(canon_MULTIPASS_MP480); + +/* ----------------------------------- Canon MP490 ----------------------------------- */ +static const char* canon_MULTIPASS_MP490_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft", + "300x300dpi", + "300x300dpi_draft",/*untested*/ + /* Mono */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono", + "300x300dpi_mono", + "300x300dpi_draftmono",/*untested*/ + /* Color */ + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3", + "300x300dpi_std3", + "300x300dpi_draft3",/*untested*/ + NULL + }; + +static const char* canon_MULTIPASS_MP490_modeuses_PPpro[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP490_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP490_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + /* Mono */ + "600x600dpi_highmono2", + "600x600dpi_mono2", + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + NULL +}; + +static const char* canon_MULTIPASS_MP490_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP490_modeuses_PPother[] = { + "600x600dpi_photohigh", + "600x600dpi_photo",/*untested*/ + "600x600dpi_photodraft",/*untested*/ + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP490_modeuses[] = { + { "Plain", canon_MULTIPASS_MP490_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL}, + { "PhotoPro2", canon_MULTIPASS_MP490_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotoPlusGloss2", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "ProPhotoHagakiP", canon_MULTIPASS_MP490_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK", canon_MULTIPASS_MP490_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_MULTIPASS_MP490_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "Hagaki", canon_MULTIPASS_MP490_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MP490_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MP490_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MP490_modeuses_PPother, INKSET_COLOR_SUPPORT }, + }; + +DECLARE_MODEUSES(canon_MULTIPASS_MP490); + +/* ----------------------------------- Canon MP493 ----------------------------------- */ +static const char* canon_MULTIPASS_MP493_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + /* Mono */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono",/*untested*/ + "300x300dpi_mono", + "300x300dpi_draftmono", + /* Color */ + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2",/*untested*/ + "300x300dpi_std2", + "300x300dpi_draft2", + NULL + }; + +static const char* canon_MULTIPASS_MP493_modeuses_PPpro[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP493_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP493_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + /* Mono */ + "600x600dpi_highmono3", + "600x600dpi_mono3", + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + NULL +}; + +static const char* canon_MULTIPASS_MP493_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP493_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP493_modeuses[] = { + { "Plain", canon_MULTIPASS_MP493_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL}, + { "PhotoPlusGloss2", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotoPro2", canon_MULTIPASS_MP493_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_MULTIPASS_MP493_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK", canon_MULTIPASS_MP493_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "ProPhotoHagakiP", canon_MULTIPASS_MP493_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MP493_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MP493_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MP493_modeuses_Hagaki,INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MP493_modeuses_PPother, INKSET_COLOR_SUPPORT }, + }; + +DECLARE_MODEUSES(canon_MULTIPASS_MP493); + +/* ----------------------------------- Canon MP520 ----------------------------------- */ +static const char* canon_MULTIPASS_MP520_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MP520_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP520_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MP520_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP520_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_draft3", + NULL +}; + +static const char* canon_MULTIPASS_MP520_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_MULTIPASS_MP520_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP520_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP520_modeuses[] = { + { "Plain", canon_MULTIPASS_MP520_modeuses_plain, 0 }, + { "GlossyPro", canon_MULTIPASS_MP520_modeuses_PPpro, 0 }, + { "PhotoPlusGloss2", canon_MULTIPASS_MP520_modeuses_PPplus, 0 }, + { "PhotopaperPlus", canon_MULTIPASS_MP520_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP520_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP520_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP520_modeuses_PPplusDS, 0 }, + { "Coated", canon_MULTIPASS_MP520_modeuses_PPplusDS, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP520_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP520_modeuses_Hagaki, 0 }, + { "TShirt", canon_MULTIPASS_MP520_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP520_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP520_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP520); + +/* ----------------------------------- Canon MP530 ----------------------------------- */ +static const char* canon_MULTIPASS_MP530_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* most photo modes not yet supported */ +static const char* canon_MULTIPASS_MP530_modeuses_PPpro[] = { + "600x600dpi_photodraft",/*temporary stand-in*/ + NULL +}; + +/* only draft available */ +static const char* canon_MULTIPASS_MP530_modeuses_PPplus[] = { + "600x600dpi_photodraft", + NULL +}; + +/*most photo modes not yet supported */ +static const char* canon_MULTIPASS_MP530_modeuses_PPplusDS[] = { + "600x600dpi_photodraft",/*temporary stand-in*/ + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MP530_modeuses_inkjetHagaki[] = { + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_MULTIPASS_MP530_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_MULTIPASS_MP530_modeuses_disc[] = { + "600x600dpi_photodraft",/*temporary stand-in*/ + NULL +}; + +static const char* canon_MULTIPASS_MP530_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP530_modeuses_PPother[] = { + "600x600dpi_photodraft",/*temporary stand-in*/ + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP530_modeuses[] = { + { "Plain", canon_MULTIPASS_MP530_modeuses_plain, 0 }, + { "GlossyPro", canon_MULTIPASS_MP530_modeuses_PPpro, 0 },/*not supported yet*/ + { "PhotopaperPlus", canon_MULTIPASS_MP530_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP530_modeuses_PPplusDS, 0 },/*not supported yet*/ + { "GlossyPaper", canon_MULTIPASS_MP530_modeuses_PPplusDS, 0 },/*not supported yet*/ + { "PhotopaperMatte", canon_MULTIPASS_MP530_modeuses_PPplusDS, 0 },/*not supported yet*/ + { "Coated", canon_MULTIPASS_MP530_modeuses_PPplusDS, 0 },/*not supported yet*/ + { "InkJetHagaki", canon_MULTIPASS_MP530_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP530_modeuses_Hagaki, 0 }, + { "CD", canon_MULTIPASS_MP530_modeuses_plain, 0 },/*NOTE:temporary replacement*/ + { "DiscCompat", canon_MULTIPASS_MP530_modeuses_disc, 0 },/*not supported yet*/ + { "DiscOthers", canon_MULTIPASS_MP530_modeuses_disc, 0 },/*not supported yet*/ + { "TShirt", canon_MULTIPASS_MP530_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP530_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP530_modeuses_PPother, 0 },/*not supported yet*/ +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP530); + +/* ----------------------------------- Canon MP540 ----------------------------------- */ +static const char* canon_MULTIPASS_MP540_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MP540_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP540_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP540_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MP540_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MP540_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_MULTIPASS_MP540_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP540_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP540_modeuses[] = { + { "Plain", canon_MULTIPASS_MP540_modeuses_plain, 0 }, + { "PhotoPlusGloss2", canon_MULTIPASS_MP540_modeuses_PPplusG2, 0 }, + { "PhotoPro2", canon_MULTIPASS_MP540_modeuses_PPpro, 0 }, + { "PhotoProPlat", canon_MULTIPASS_MP540_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP540_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP540_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss", canon_MULTIPASS_MP540_modeuses_PPplusG2, 0 }, + { "Coated", canon_MULTIPASS_MP540_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP540_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP540_modeuses_Hagaki, 0 }, + { "TShirt", canon_MULTIPASS_MP540_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP540_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP540_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP540); + +/* ----------------------------------- Canon MP550 ----------------------------------- */ +static const char* canon_MULTIPASS_MP550_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + NULL + }; + +/*highest mode not supported yet*/ +static const char* canon_MULTIPASS_MP550_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP550_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP550_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP550_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_MULTIPASS_MP550_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MP550_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP550_modeuses_PPother[] = { + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP550_modeuses[] = { + { "Plain", canon_MULTIPASS_MP550_modeuses_plain, 0 }, + { "PhotoPlusGloss2", canon_MULTIPASS_MP550_modeuses_PPplusG2, 0 }, + { "PhotoPro2", canon_MULTIPASS_MP550_modeuses_PPpro, 0 }, + { "PhotoProPlat", canon_MULTIPASS_MP550_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss",canon_MULTIPASS_MP550_modeuses_PPplusG2, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP550_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP550_modeuses_PPmatte, 0 }, + { "Coated", canon_MULTIPASS_MP550_modeuses_PPmatte, 0 }, + { "HagakiA", canon_MULTIPASS_MP550_modeuses_Hagaki, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP550_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_MULTIPASS_MP550_modeuses_PPplusG2, 0 }, + { "ProPhotoHagakiP", canon_MULTIPASS_MP550_modeuses_PPplusG2, 0 }, + { "Hagaki", canon_MULTIPASS_MP550_modeuses_Hagaki, 0 }, + { "TShirt", canon_MULTIPASS_MP550_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP550_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP550_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP550); + +/* ----------------------------------- Canon MP560 ----------------------------------- */ +static const char* canon_MULTIPASS_MP560_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high",/* duplex */ + "600x600dpi", + "300x300dpi", + NULL + }; + +/*highest mode not supported yet*/ +static const char* canon_MULTIPASS_MP560_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP560_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP560_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP560_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_MULTIPASS_MP560_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MP560_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP560_modeuses_PPother[] = { + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP560_modeuses[] = { + { "Plain", canon_MULTIPASS_MP560_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MP560_modeuses_PPplusG2, 0 }, + { "PhotoPro2", canon_MULTIPASS_MP560_modeuses_PPpro, 0 }, + { "PhotoProPlat", canon_MULTIPASS_MP560_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss",canon_MULTIPASS_MP560_modeuses_PPplusG2, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP560_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP560_modeuses_PPmatte, 0 }, + { "Coated", canon_MULTIPASS_MP560_modeuses_PPmatte, 0 }, + { "HagakiA", canon_MULTIPASS_MP560_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MP560_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_MULTIPASS_MP560_modeuses_PPplusG2, 0 }, + { "ProPhotoHagakiP", canon_MULTIPASS_MP560_modeuses_PPplusG2, 0 }, + { "Hagaki", canon_MULTIPASS_MP560_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "TShirt", canon_MULTIPASS_MP560_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP560_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP560_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP560); + +/* ----------------------------------- Canon MP600 ----------------------------------- */ +static const char* canon_MULTIPASS_MP600_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/*unsupported*/ +static const char* canon_MULTIPASS_MP600_modeuses_PPpro[] = { + "600x600dpi_photodraft",/*stand-in*/ + NULL +}; + +/*most modes unsupported*/ +static const char* canon_MULTIPASS_MP600_modeuses_PPplus[] = { + "600x600dpi_photodraft", + NULL +}; + +/*unsupported*/ +static const char* canon_MULTIPASS_MP600_modeuses_PPplusDS[] = { + "600x600dpi_photodraft",/*stand-in*/ + NULL +}; + +/*unsupported*/ +static const char* canon_MULTIPASS_MP600_modeuses_PPmatte[] = { + "600x600dpi_photodraft",/*stand-in*/ + NULL +}; + +/*highest mode unsupported*/ +static const char* canon_MULTIPASS_MP600_modeuses_inkjetHagaki[] = { + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_MULTIPASS_MP600_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +/*unsupported*/ +static const char* canon_MULTIPASS_MP600_modeuses_disc[] = { + "600x600dpi_photodraft",/*stand-in*/ + NULL +}; + +static const char* canon_MULTIPASS_MP600_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +/*unsupported*/ +static const char* canon_MULTIPASS_MP600_modeuses_PPother[] = { + "600x600dpi_photodraft",/*stand-in*/ + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP600_modeuses[] = { + { "Plain", canon_MULTIPASS_MP600_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_MULTIPASS_MP600_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_MULTIPASS_MP600_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP600_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP600_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP600_modeuses_PPplusDS, 0 }, + { "Coated", canon_MULTIPASS_MP600_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP600_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP600_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "CD", canon_MULTIPASS_MP600_modeuses_plain, 0 },/*temporary for plain modes*/ + { "DiscCompat", canon_MULTIPASS_MP600_modeuses_disc, 0 }, + { "DiscOthers", canon_MULTIPASS_MP600_modeuses_disc, 0 }, + { "TShirt", canon_MULTIPASS_MP600_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP600_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP600_modeuses_PPother, 0 }, + }; + +DECLARE_MODEUSES(canon_MULTIPASS_MP600); + +/* ----------------------------------- Canon MP610 ----------------------------------- */ +static const char* canon_MULTIPASS_MP610_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* missing highest resolution mode as not yet implemented */ +static const char* canon_MULTIPASS_MP610_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP610_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_MULTIPASS_MP610_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_MULTIPASS_MP610_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP610_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MP610_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_MULTIPASS_MP610_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_MULTIPASS_MP610_modeuses_disc[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + "600x600dpi_photodraft4", + NULL +}; + +static const char* canon_MULTIPASS_MP610_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP610_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP610_modeuses[] = { + { "Plain", canon_MULTIPASS_MP610_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_MULTIPASS_MP610_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_MULTIPASS_MP610_modeuses_PPplus, 0 }, + { "PhotoPlusGloss2", canon_MULTIPASS_MP610_modeuses_PPplusG2, 0 }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP610_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP610_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP610_modeuses_PPplusDS, 0 }, + { "Coated", canon_MULTIPASS_MP610_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP610_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP610_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_MULTIPASS_MP610_modeuses_disc, 0 }, + { "DiscOthers", canon_MULTIPASS_MP610_modeuses_disc, 0 }, + { "TShirt", canon_MULTIPASS_MP610_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP610_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP610_modeuses_PPother, 0 }, + }; + +DECLARE_MODEUSES(canon_MULTIPASS_MP610); + +/* ----------------------------------- Canon MP620 ----------------------------------- */ +static const char* canon_MULTIPASS_MP620_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MP620_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP620_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP620_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MP620_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MP620_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_MULTIPASS_MP620_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP620_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP620_modeuses[] = { + { "Plain", canon_MULTIPASS_MP620_modeuses_plain, 0 }, + { "PhotoPlusGloss2", canon_MULTIPASS_MP620_modeuses_PPplusG2, 0 }, + { "PhotoPro2", canon_MULTIPASS_MP620_modeuses_PPpro, 0 }, + { "PhotoProPlat", canon_MULTIPASS_MP620_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP620_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP620_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss", canon_MULTIPASS_MP620_modeuses_PPplusG2, 0 }, + { "Coated", canon_MULTIPASS_MP620_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP620_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP620_modeuses_Hagaki, 0 }, + { "TShirt", canon_MULTIPASS_MP620_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP620_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP620_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP620); + +/* ----------------------------------- Canon MP630 ----------------------------------- */ +static const char* canon_MULTIPASS_MP630_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high",/* duplex */ + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft",/*untested*/ + NULL + }; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MP630_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP630_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP630_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP630_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MP630_modeuses_disc[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MP630_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_MULTIPASS_MP630_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP630_modeuses_PPother[] = { + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MP630_modeuses[] = { + { "Plain", canon_MULTIPASS_MP630_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MP630_modeuses_PPplusG2, 0 }, + { "PhotoPro2", canon_MULTIPASS_MP630_modeuses_PPpro, 0 }, + { "PhotoProPlat", canon_MULTIPASS_MP630_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss", canon_MULTIPASS_MP630_modeuses_PPplusG2, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP630_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP630_modeuses_PPmatte, 0 }, + { "Coated", canon_MULTIPASS_MP630_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP630_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP630_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_MULTIPASS_MP630_modeuses_disc, 0 }, + { "DiscOthers", canon_MULTIPASS_MP630_modeuses_disc, 0 }, + { "TShirt", canon_MULTIPASS_MP630_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP630_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP630_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP630); + +/* ----------------------------------- Canon MP640 ----------------------------------- */ +static const char* canon_MULTIPASS_MP640_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high",/* duplex */ + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft",/*untested*/ + NULL + }; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MP640_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP640_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP640_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP640_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MP640_modeuses_disc[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MP640_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_MULTIPASS_MP640_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP640_modeuses_PPother[] = { + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MP640_modeuses[] = { + { "Plain", canon_MULTIPASS_MP640_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MP640_modeuses_PPplusG2, 0 }, + { "PhotoPro2", canon_MULTIPASS_MP640_modeuses_PPpro, 0 }, + { "PhotoProPlat", canon_MULTIPASS_MP640_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss", canon_MULTIPASS_MP640_modeuses_PPplusG2, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP640_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP640_modeuses_PPmatte, 0 }, + { "Coated", canon_MULTIPASS_MP640_modeuses_PPmatte, 0 }, + { "HagakiA", canon_MULTIPASS_MP640_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MP640_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_MULTIPASS_MP640_modeuses_PPplusG2, 0 }, + { "ProPhotoHagakiP", canon_MULTIPASS_MP640_modeuses_PPpro, 0 }, + { "Hagaki", canon_MULTIPASS_MP640_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_MULTIPASS_MP640_modeuses_disc, 0 }, + { "DiscOthers", canon_MULTIPASS_MP640_modeuses_disc, 0 }, + { "TShirt", canon_MULTIPASS_MP640_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP640_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP640_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP640); + +/* ----------------------------------- Canon MP700 ----------------------------------- */ +static const char* canon_MULTIPASS_MP700_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi",/*untested*/ + "600x600dpi_draft", + "300x300dpi_high",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MP700_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP700_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP700_modeuses_coated[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_MULTIPASS_MP700_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4",/*untested*/ + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MP700_modeuses_Hagaki[] = { + "600x600dpi_high3",/*untested*/ + "600x600dpi_high2", + "600x600dpi_std2",/*untested*/ + "600x600dpi_draft2", + NULL +}; + +static const char* canon_MULTIPASS_MP700_modeuses_disc[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_MULTIPASS_MP700_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP700_modeuses_Transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +/*untested*/ +static const char* canon_MULTIPASS_MP700_modeuses_PPother[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MP700_modeuses[] = { + { "Plain", canon_MULTIPASS_MP700_modeuses_plain, 0 }, + { "GlossyPro", canon_MULTIPASS_MP700_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_MULTIPASS_MP700_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP700_modeuses_PPplus, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP700_modeuses_PPpro, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP700_modeuses_PPplus, 0 }, + { "Coated", canon_MULTIPASS_MP700_modeuses_coated, 0 }, + { "GlossyFilm", canon_MULTIPASS_MP700_modeuses_PPplus, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP700_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP700_modeuses_Hagaki, 0 }, + { "DiscCompat", canon_MULTIPASS_MP700_modeuses_disc, 0 }, + { "DiscOthers", canon_MULTIPASS_MP700_modeuses_disc, 0 }, + { "TShirt", canon_MULTIPASS_MP700_modeuses_TShirt, 0 }, + { "Transparency", canon_MULTIPASS_MP700_modeuses_Transparency, 0 }, + { "Envelope", canon_MULTIPASS_MP700_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP700_modeuses_PPother, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP700); + +/* ----------------------------------- Canon MP710 ----------------------------------- */ +static const char* canon_MULTIPASS_MP710_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi",/*untested*/ + "600x600dpi_draft", + "300x300dpi_high",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MP710_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP710_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP710_modeuses_coated[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_MULTIPASS_MP710_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4",/*untested*/ + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MP710_modeuses_Hagaki[] = { + "600x600dpi_high3",/*untested*/ + "600x600dpi_high2", + "600x600dpi_std2",/*untested*/ + "600x600dpi_draft2", + NULL +}; + +static const char* canon_MULTIPASS_MP710_modeuses_disc[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_MULTIPASS_MP710_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP710_modeuses_Transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +/*untested*/ +static const char* canon_MULTIPASS_MP710_modeuses_PPother[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MP710_modeuses[] = { + { "Plain", canon_MULTIPASS_MP710_modeuses_plain, 0 }, + { "GlossyPro", canon_MULTIPASS_MP710_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_MULTIPASS_MP710_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP710_modeuses_PPplus, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP710_modeuses_PPpro, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP710_modeuses_PPplus, 0 }, + { "Coated", canon_MULTIPASS_MP710_modeuses_coated, 0 }, + { "GlossyFilm", canon_MULTIPASS_MP710_modeuses_PPplus, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP710_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP710_modeuses_Hagaki, 0 }, + { "DiscCompat", canon_MULTIPASS_MP710_modeuses_disc, 0 }, + { "DiscOthers", canon_MULTIPASS_MP710_modeuses_disc, 0 }, + { "TShirt", canon_MULTIPASS_MP710_modeuses_TShirt, 0 }, + { "Transparency", canon_MULTIPASS_MP710_modeuses_Transparency, 0 }, + { "Envelope", canon_MULTIPASS_MP710_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP710_modeuses_PPother, 0 },/*untested*/ +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP710); + +/* ----------------------------------- Canon MP750 ----------------------------------- */ +static const char* canon_MULTIPASS_MP750_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MP750_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP750_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_MULTIPASS_MP750_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_std2", + NULL +}; + +static const char* canon_MULTIPASS_MP750_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_MULTIPASS_MP750_modeuses_disc[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_MULTIPASS_MP750_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP750_modeuses_Transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const char* canon_MULTIPASS_MP750_modeuses_PPother[] = { + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MP750_modeuses[] = { + { "Plain", canon_MULTIPASS_MP750_modeuses_plain, 0 }, + { "GlossyPro", canon_MULTIPASS_MP750_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_MULTIPASS_MP750_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP750_modeuses_PPplus, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP750_modeuses_PPpro, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP750_modeuses_PPplus, 0 }, + { "Coated", canon_MULTIPASS_MP750_modeuses_PPplus, 0 }, + { "GlossyFilm", canon_MULTIPASS_MP750_modeuses_PPplus, 0 },/*untested*/ + { "InkJetHagaki", canon_MULTIPASS_MP750_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP750_modeuses_Hagaki, 0 }, + { "DiscCompat", canon_MULTIPASS_MP750_modeuses_disc, 0 }, + { "DiscOthers", canon_MULTIPASS_MP750_modeuses_disc, 0 }, + { "TShirt", canon_MULTIPASS_MP750_modeuses_TShirt, 0 }, + { "Transparency", canon_MULTIPASS_MP750_modeuses_Transparency, 0 }, + { "Envelope", canon_MULTIPASS_MP750_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP750_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP750); + +/* ----------------------------------- Canon MP800 ----------------------------------- */ +static const char* canon_MULTIPASS_MP800_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/*most photo modes not yet supported */ +static const char* canon_MULTIPASS_MP800_modeuses_PPpro[] = { + "600x600dpi_photo",/*temporary stand-in*/ + "600x600dpi_photodraft",/*temporary stand-in*/ + NULL +}; + +/* only draft available */ +static const char* canon_MULTIPASS_MP800_modeuses_PPplus[] = { + "600x600dpi_photo",/*temporary stand-in*/ + "600x600dpi_photodraft", + NULL +}; + +/*most photo modes not yet supported */ +static const char* canon_MULTIPASS_MP800_modeuses_PPplusDS[] = { + "600x600dpi_photo",/*temporary stand-in*/ + "600x600dpi_photodraft",/*temporary stand-in*/ + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MP800_modeuses_inkjetHagaki[] = { + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_MULTIPASS_MP800_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_MULTIPASS_MP800_modeuses_disc[] = { + "600x600dpi_photo",/*temporary stand-in*/ + "600x600dpi_photodraft",/*temporary stand-in*/ + NULL +}; + +static const char* canon_MULTIPASS_MP800_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP800_modeuses_PPother[] = { + "600x600dpi_photo",/*temporary stand-in*/ + "600x600dpi_photodraft",/*temporary stand-in*/ + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP800_modeuses[] = { + { "Plain", canon_MULTIPASS_MP800_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_MULTIPASS_MP800_modeuses_PPpro, 0 },/*not supported yet*/ + { "PhotopaperPlus", canon_MULTIPASS_MP800_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP800_modeuses_PPplusDS, 0 },/*not supported yet*/ + { "GlossyPaper", canon_MULTIPASS_MP800_modeuses_PPplusDS, 0 },/*not supported yet*/ + { "PhotopaperMatte", canon_MULTIPASS_MP800_modeuses_PPplusDS, 0 },/*not supported yet*/ + { "Coated", canon_MULTIPASS_MP800_modeuses_PPplusDS, 0 },/*not supported yet*/ + { "InkJetHagaki", canon_MULTIPASS_MP800_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP800_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "CD", canon_MULTIPASS_MP800_modeuses_plain, 0 },/*NOTE:temporary replacement*/ + { "DiscCompat", canon_MULTIPASS_MP800_modeuses_disc, 0 },/*not supported yet*/ + { "DiscOthers", canon_MULTIPASS_MP800_modeuses_disc, 0 },/*not supported yet*/ + { "TShirt", canon_MULTIPASS_MP800_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP800_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP800_modeuses_PPother, 0 },/*not supported yet*/ + }; + +DECLARE_MODEUSES(canon_MULTIPASS_MP800); + +/* ----------------------------------- Canon MP810 ----------------------------------- */ +static const char* canon_MULTIPASS_MP810_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MP810_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP810_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP810_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP810_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + "600x600dpi_photodraft2",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP810_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_MULTIPASS_MP810_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_MULTIPASS_MP810_modeuses_disc[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_MULTIPASS_MP810_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP810_modeuses_PPother[] = { + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP810_modeuses[] = { + { "Plain", canon_MULTIPASS_MP810_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_MULTIPASS_MP810_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_MULTIPASS_MP810_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP810_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP810_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP810_modeuses_PPmatte, 0 }, + { "Coated", canon_MULTIPASS_MP810_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP810_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP810_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "CD", canon_MULTIPASS_MP810_modeuses_plain, },/*NOTE:option*/ + { "DiscCompat", canon_MULTIPASS_MP810_modeuses_disc, 0 }, + { "DiscOthers", canon_MULTIPASS_MP810_modeuses_disc, 0 }, + { "TShirt", canon_MULTIPASS_MP810_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP810_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP810_modeuses_PPother, 0 }, + }; + +DECLARE_MODEUSES(canon_MULTIPASS_MP810); + +/* ----------------------------------- Canon MP830 ----------------------------------- */ +static const char* canon_MULTIPASS_MP830_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/*most photo modes not yet supported */ +static const char* canon_MULTIPASS_MP830_modeuses_PPpro[] = { + "600x600dpi_photodraft",/*temporary stand-in*/ + NULL +}; + +/* only draft available */ +static const char* canon_MULTIPASS_MP830_modeuses_PPplus[] = { + "600x600dpi_photodraft", + NULL +}; + +/*most photo modes not yet supported */ +static const char* canon_MULTIPASS_MP830_modeuses_PPplusDS[] = { + "600x600dpi_photodraft",/*temporary stand-in*/ + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MP830_modeuses_inkjetHagaki[] = { + "600x600dpi_photo2", + "600x600dpi_photodraft2", + NULL +}; + +static const char* canon_MULTIPASS_MP830_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_MULTIPASS_MP830_modeuses_disc[] = { + "600x600dpi_photodraft",/*temporary stand-in*/ + NULL +}; + +static const char* canon_MULTIPASS_MP830_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP830_modeuses_PPother[] = { + "600x600dpi_photodraft",/*temporary stand-in*/ + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP830_modeuses[] = { + { "Plain", canon_MULTIPASS_MP830_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_MULTIPASS_MP830_modeuses_PPpro, 0 },/*not supported yet*/ + { "PhotopaperPlus", canon_MULTIPASS_MP830_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP830_modeuses_PPplusDS, 0 },/*not supported yet*/ + { "GlossyPaper", canon_MULTIPASS_MP830_modeuses_PPplusDS, 0 },/*not supported yet*/ + { "PhotopaperMatte", canon_MULTIPASS_MP830_modeuses_PPplusDS, 0 },/*not supported yet*/ + { "Coated", canon_MULTIPASS_MP830_modeuses_PPplusDS, 0 },/*not supported yet*/ + { "InkJetHagaki", canon_MULTIPASS_MP830_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP830_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "CD", canon_MULTIPASS_MP830_modeuses_plain, 0 },/*NOTE:temporary replacement*/ + { "DiscCompat", canon_MULTIPASS_MP830_modeuses_disc, 0 },/*not supported yet*/ + { "DiscOthers", canon_MULTIPASS_MP830_modeuses_disc, 0 },/*not supported yet*/ + { "TShirt", canon_MULTIPASS_MP830_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP830_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP830_modeuses_PPother, 0 },/*not supported yet*/ + }; + +DECLARE_MODEUSES(canon_MULTIPASS_MP830); + +/* ----------------------------------- Canon MP900 ----------------------------------- */ +static const char* canon_MULTIPASS_MP900_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft", + "600x600dpi_draft2", + /* Mono */ + "600x600dpi_draftmono", + "600x600dpi_draftmono2", + NULL + }; + +static const char* canon_MULTIPASS_MP900_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photo2",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP900_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MP900_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MP900_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MP900_modeuses_coated[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + "600x600dpi_photo2", + NULL +}; + +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_draft4", + "600x600dpi_draftmono4",/* Mono */ + NULL +}; + +static const char* canon_MULTIPASS_MP900_modeuses_disc[] = { + "600x600dpi_photo4", + "600x600dpi_photodraft4", + NULL +}; + +static const char* canon_MULTIPASS_MP900_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP900_modeuses_Transparency[] = { + "600x600dpi_std3", + "600x600dpi_draft3", + NULL +}; + +/*untested*/ +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 }, + { "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 }, + { "Envelope", canon_MULTIPASS_MP900_modeuses_Hagaki, 0 }, + { "Transparency", canon_MULTIPASS_MP900_modeuses_Transparency, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP900_modeuses_PPother, 0 },/*untested*/ + }; + +DECLARE_MODEUSES(canon_MULTIPASS_MP900); + +/* ----------------------------------- Canon MP950 ----------------------------------- */ +static const char* canon_MULTIPASS_MP950_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/*highest mode not yet supported */ +static const char* canon_MULTIPASS_MP950_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + /* Mono not yet supported */ + NULL +}; + +static const char* canon_MULTIPASS_MP950_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + /* Mono not yet supported */ + NULL +}; + +static const char* canon_MULTIPASS_MP950_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + "600x600dpi_photodraft",/*untested*/ + /* No mono modes for this media */ + NULL +}; + +static const char* canon_MULTIPASS_MP950_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + /* No mono modes for this media */ + NULL +}; + +static const char* canon_MULTIPASS_MP950_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2", + NULL +}; + +static const char* canon_MULTIPASS_MP950_modeuses_FA[] = { + "600x600dpi_photohigh4", + /* Mono not yet supported */ + NULL +}; + +static const char* canon_MULTIPASS_MP950_modeuses_disc[] = { + "600x600dpi_photohigh5", + "600x600dpi_photo5", + "600x600dpi_photodraft5", + NULL + /* No mono modes for this media */ +}; + +static const char* canon_MULTIPASS_MP950_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP950_modeuses_Transparency[] = { + "600x600dpi_high3", + "600x600dpi_std3", + /* No mono modes for this media */ + NULL +}; + +static const char* canon_MULTIPASS_MP950_modeuses_PPother[] = { + "600x600dpi_photohigh", + "600x600dpi_photo",/*untested*/ + "600x600dpi_photodraft",/*untested*/ + /* No mono modes for this media */ + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MP950_modeuses[] = { + { "Plain", canon_MULTIPASS_MP950_modeuses_plain, DUPLEX_SUPPORT }, + { "GlossyPro", canon_MULTIPASS_MP950_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_MULTIPASS_MP950_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP950_modeuses_PPplus, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP950_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP950_modeuses_PPmatte, 0 }, + { "Coated", canon_MULTIPASS_MP950_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP950_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP950_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_MULTIPASS_MP950_modeuses_disc, 0 }, + { "DiscOthers", canon_MULTIPASS_MP950_modeuses_disc, 0 }, + { "TShirt", canon_MULTIPASS_MP950_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP950_modeuses_Hagaki, 0 }, + { "FineArtPhotoRag", canon_MULTIPASS_MP950_modeuses_FA, 0 }, + { "FineArtOther", canon_MULTIPASS_MP950_modeuses_FA, 0 }, + { "Transparency", canon_MULTIPASS_MP950_modeuses_Transparency, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP950_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP950); + +/* ----------------------------------- Canon MP960 ----------------------------------- */ +static const char* canon_MULTIPASS_MP960_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high",/*duplex*/ + "600x600dpi", + "600x600dpi_draft", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/*highest mode not yet supported */ +static const char* canon_MULTIPASS_MP960_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + /* Mono not yet supported */ + NULL +}; + +static const char* canon_MULTIPASS_MP960_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + /* Mono not yet supported */ + NULL +}; + +static const char* canon_MULTIPASS_MP960_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + /* No mono modes for this media */ + NULL +}; + +static const char* canon_MULTIPASS_MP960_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + /* No mono modes for this media */ + NULL +}; + +static const char* canon_MULTIPASS_MP960_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + /* No mono modes for this media */ + NULL +}; + +static const char* canon_MULTIPASS_MP960_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3", + NULL +}; + +static const char* canon_MULTIPASS_MP960_modeuses_FA[] = { + "600x600dpi_photohigh5", + /* Mono not yet supported */ + NULL +}; + +static const char* canon_MULTIPASS_MP960_modeuses_disc[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + "600x600dpi_photodraft4", + NULL + /* No mono modes for this media */ +}; + +static const char* canon_MULTIPASS_MP960_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +/* Note: this media is not supported in Windows driver: taken from MP950 */ +static const char* canon_MULTIPASS_MP960_modeuses_Transparency[] = { + "600x600dpi_high4", + "600x600dpi_std4", + /* No mono modes for this media */ + NULL +}; + +static const char* canon_MULTIPASS_MP960_modeuses_PPother[] = { + "600x600dpi_photohigh", + /* No mono modes for this media */ + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP960_modeuses[] = { + { "Plain", canon_MULTIPASS_MP960_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "GlossyPro", canon_MULTIPASS_MP960_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_MULTIPASS_MP960_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP960_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP960_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP960_modeuses_PPmatte, 0 }, + { "Coated", canon_MULTIPASS_MP960_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP960_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP960_modeuses_Hagaki, DUPLEX_SUPPORT }, /* not sure */ + { "DiscCompat", canon_MULTIPASS_MP960_modeuses_disc, 0 }, + { "DiscOthers", canon_MULTIPASS_MP960_modeuses_disc, 0 }, + { "TShirt", canon_MULTIPASS_MP960_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP960_modeuses_Hagaki, 0 }, + { "FineArtPhotoRag", canon_MULTIPASS_MP960_modeuses_FA, 0 }, + { "FineArtOther", canon_MULTIPASS_MP960_modeuses_FA, 0 }, + { "Transparency", canon_MULTIPASS_MP960_modeuses_Transparency, 0 },/*untested*/ + { "PhotopaperOther", canon_MULTIPASS_MP960_modeuses_PPother, 0 }, + }; + +DECLARE_MODEUSES(canon_MULTIPASS_MP960); + +/* ----------------------------------- Canon MP970 ----------------------------------- */ +/* TODO: mono modes for photo media*/ + +static const char* canon_MULTIPASS_MP970_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high",/*duplex*/ + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/*highest mode not yet supported */ +static const char* canon_MULTIPASS_MP970_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP970_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP970_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MP970_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MP970_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_MULTIPASS_MP970_modeuses_FA[] = { + "600x600dpi_photohigh", + NULL +}; + +static const char* canon_MULTIPASS_MP970_modeuses_disc[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + "600x600dpi_photodraft4", + NULL +}; + +static const char* canon_MULTIPASS_MP970_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP970_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP970_modeuses[] = { + { "Plain", canon_MULTIPASS_MP970_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "GlossyPro", canon_MULTIPASS_MP970_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_MULTIPASS_MP970_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MP970_modeuses_PPplus, 0 }, + { "PhotoPlusGloss2", canon_MULTIPASS_MP970_modeuses_PPplus, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP970_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP970_modeuses_PPmatte, 0 }, + { "Coated", canon_MULTIPASS_MP970_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP970_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP970_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_MULTIPASS_MP970_modeuses_disc, 0 }, + { "DiscOthers", canon_MULTIPASS_MP970_modeuses_disc, 0 }, + { "TShirt", canon_MULTIPASS_MP970_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP970_modeuses_Hagaki, 0 }, + { "FineArtPhotoRag", canon_MULTIPASS_MP970_modeuses_FA, 0 }, + { "FineArtOther", canon_MULTIPASS_MP970_modeuses_FA, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP970_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP970); + +/* ----------------------------------- Canon MP980 ----------------------------------- */ +/* TODO: mono modes for photo media*/ + +static const char* canon_MULTIPASS_MP980_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high",/*duplex*/ + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/*photo modes not yet supported */ +static const char* canon_MULTIPASS_MP980_modeuses_PPpro[] = { + "600x600dpi_photo",/*stand-in*/ + NULL +}; + +/*photo modes not yet supported */ +static const char* canon_MULTIPASS_MP980_modeuses_PPplus[] = { + "600x600dpi_photo",/*stand-in*/ + NULL +}; + +static const char* canon_MULTIPASS_MP980_modeuses_PPmatte[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MP980_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_MULTIPASS_MP980_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +/*photo modes not yet supported */ +static const char* canon_MULTIPASS_MP980_modeuses_FA[] = { + "600x600dpi_photo",/*stand-in*/ + NULL +}; + +static const char* canon_MULTIPASS_MP980_modeuses_disc[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MP980_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP980_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP980_modeuses[] = { + { "Plain", canon_MULTIPASS_MP980_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MP980_modeuses_PPplus, 0 },/*unsupported*/ + { "PhotoPro2", canon_MULTIPASS_MP980_modeuses_PPpro, 0 },/*unsupported*/ + { "PhotoProPlat", canon_MULTIPASS_MP980_modeuses_PPplus, 0 },/*unsupported*/ + { "PhotoProSemiGloss",canon_MULTIPASS_MP980_modeuses_PPplus, 0 },/*unsupported*/ + { "GlossyPaper", canon_MULTIPASS_MP980_modeuses_PPplus, 0 },/*unsupported*/ + { "PhotopaperMatte", canon_MULTIPASS_MP980_modeuses_PPmatte, 0 }, + { "Coated", canon_MULTIPASS_MP980_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP980_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MP980_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_MULTIPASS_MP980_modeuses_disc, 0 }, + { "DiscOthers", canon_MULTIPASS_MP980_modeuses_disc, 0 }, + { "TShirt", canon_MULTIPASS_MP980_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP980_modeuses_Hagaki, 0 }, + { "FineArtPhotoRag", canon_MULTIPASS_MP980_modeuses_FA, 0 },/*unsupported*/ + { "FineArtOther", canon_MULTIPASS_MP980_modeuses_FA, 0 },/*unsupported*/ + { "PhotopaperOther", canon_MULTIPASS_MP980_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP980); + +/* ----------------------------------- Canon MP990 ----------------------------------- */ +/* Most photo modes not supported */ +static const char* canon_MULTIPASS_MP990_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi_high",/*duplex*/ + "600x600dpi", + "300x300dpi", + NULL + }; + +/* unsupported */ +static const char* canon_MULTIPASS_MP990_modeuses_PPpro[] = { + "600x600dpi_photo",/*stand-in*/ + NULL +}; + +/* unsupported */ +static const char* canon_MULTIPASS_MP990_modeuses_PPproPlat[] = { + "600x600dpi_photo",/*stand-in*/ + NULL +}; + +/* unsupported */ +static const char* canon_MULTIPASS_MP990_modeuses_PPplus[] = { + "600x600dpi_photo",/*stand-in*/ + NULL +}; + +static const char* canon_MULTIPASS_MP990_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MP990_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MP990_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +/*unsupported*/ +static const char* canon_MULTIPASS_MP990_modeuses_FA[] = { + "600x600dpi_photo",/*stand-in*/ + NULL +}; + +static const char* canon_MULTIPASS_MP990_modeuses_disc[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MP990_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MP990_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MP990_modeuses[] = { + { "Plain", canon_MULTIPASS_MP990_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MP990_modeuses_PPplus, 0 }, + { "PhotoPro2", canon_MULTIPASS_MP990_modeuses_PPpro, 0 }, + { "PhotoProPlat", canon_MULTIPASS_MP990_modeuses_PPproPlat, 0 }, + { "PhotoProSemiGloss",canon_MULTIPASS_MP990_modeuses_PPplus, 0 }, + { "GlossyPaper", canon_MULTIPASS_MP990_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MP990_modeuses_PPmatte, 0 }, + { "Coated", canon_MULTIPASS_MP990_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MP990_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_MULTIPASS_MP990_modeuses_PPplus, 0 }, + { "ProPhotoHagakiP", canon_MULTIPASS_MP990_modeuses_PPproPlat, 0 }, + { "HagakiA", canon_MULTIPASS_MP990_modeuses_Hagaki, DUPLEX_SUPPORT },/* not sure */ + { "Hagaki", canon_MULTIPASS_MP990_modeuses_Hagaki, DUPLEX_SUPPORT },/* not sure */ + { "DiscCompat", canon_MULTIPASS_MP990_modeuses_disc, 0 }, + { "DiscOthers", canon_MULTIPASS_MP990_modeuses_disc, 0 }, + { "TShirt", canon_MULTIPASS_MP990_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MP990_modeuses_Hagaki, 0 }, + { "FineArtPhotoRag", canon_MULTIPASS_MP990_modeuses_FA, 0 }, + { "FineArtOther", canon_MULTIPASS_MP990_modeuses_FA, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MP990_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MP990); + +/* ----------------------------------- Canon MX300 ----------------------------------- */ +static const char* canon_MULTIPASS_MX300_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + /* Black */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono",/*untested*/ + "300x300dpi_mono", + "300x300dpi_draftmono", + /* Color */ + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2",/*untested*/ + "300x300dpi_std2", + "300x300dpi_draft2", + NULL + }; + +static const char* canon_MULTIPASS_MX300_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX300_modeuses_PPpro[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX300_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_MULTIPASS_MX300_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MX300_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3",/*untested*/ + /* Black */ + "600x600dpi_highmono3", + "600x600dpi_stdmono3", + "600x600dpi_draftmono3",/*untested*/ + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + "600x600dpi_draft4",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MX300_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MX300_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MX300_modeuses[] = { + { "Plain", canon_MULTIPASS_MX300_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX300_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPro", canon_MULTIPASS_MX300_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotopaperPlus", canon_MULTIPASS_MX300_modeuses_PPplus, INKSET_COLOR_SUPPORT }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MX300_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MX300_modeuses_PPmatte, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MX300_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MX300_modeuses_PPmatte, INKSET_COLOR_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MX300_modeuses_PPmatte, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MX300_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MX300_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MX300_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MX300_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MX300); + +/* ----------------------------------- Canon MX330 ----------------------------------- */ +static const char* canon_MULTIPASS_MX330_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + /* Black */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono",/*untested*/ + "300x300dpi_mono", + "300x300dpi_draftmono", + /* Color */ + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2",/*untested*/ + "300x300dpi_std2", + "300x300dpi_draft2", + NULL + }; + +static const char* canon_MULTIPASS_MX330_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX330_modeuses_PPpro[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX330_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3",/*untested*/ + /* Black */ + "600x600dpi_highmono3", + "600x600dpi_stdmono3", + "600x600dpi_draftmono3",/*untested*/ + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + "600x600dpi_draft4",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MX330_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MX330_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MX330_modeuses[] = { + { "Plain", canon_MULTIPASS_MX330_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX330_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoPro2", canon_MULTIPASS_MX330_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_MX330_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MX330_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MX330_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_MULTIPASS_MX330_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MX330_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MX330_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MX330_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MX330_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MX330_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MX330_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MX330); + +/* ----------------------------------- Canon MX340 ----------------------------------- */ +static const char* canon_MULTIPASS_MX340_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft",/*untested*/ + /* Black */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono",/*untested*/ + "300x300dpi_mono", + "300x300dpi_draftmono",/*untested*/ + /* Color */ + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2",/*untested*/ + "300x300dpi_std2", + "300x300dpi_draft2",/*untested*/ + NULL + }; + +static const char* canon_MULTIPASS_MX340_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX340_modeuses_PPpro[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX340_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3",/*untested*/ + /* Black */ + "600x600dpi_highmono3", + "600x600dpi_stdmono3", + "600x600dpi_draftmono3",/*untested*/ + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + "600x600dpi_draft4",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MX340_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MX340_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MX340_modeuses[] = { + { "Plain", canon_MULTIPASS_MX340_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoPro2", canon_MULTIPASS_MX340_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_MULTIPASS_MX340_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK",canon_MULTIPASS_MX340_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MX340_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MX340_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MX340_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MX340_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MX340); + +/* ----------------------------------- Canon MX360 ----------------------------------- */ +static const char* canon_MULTIPASS_MX360_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft",/*untested*/ + /* Black */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono",/*untested*/ + "300x300dpi_mono", + "300x300dpi_draftmono",/*untested*/ + /* Color */ + "600x600dpi_high3", + "600x600dpi_std3", + "600x600dpi_draft3",/*untested*/ + "300x300dpi_std3", + "300x300dpi_draft3",/*untested*/ + NULL + }; + +static const char* canon_MULTIPASS_MX360_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX360_modeuses_PPproPlat[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX360_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2",/*untested*/ + /* Black */ + "600x600dpi_highmono2", + "600x600dpi_stdmono2", + "600x600dpi_draftmono2",/*untested*/ + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + "600x600dpi_draft4",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MX360_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MX360_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MX360_modeuses[] = { + { "Plain", canon_MULTIPASS_MX360_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX360_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_MX360_modeuses_PPproPlat, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss", canon_MULTIPASS_MX360_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MX360_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MX360_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MX360_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_MULTIPASS_MX360_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_MULTIPASS_MX360_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK", canon_MULTIPASS_MX360_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MX360_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MX360_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MX360_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MX360_modeuses_PPother, INKSET_COLOR_SUPPORT }, + }; + +DECLARE_MODEUSES(canon_MULTIPASS_MX360); + +/* ----------------------------------- Canon MX370 ----------------------------------- */ +static const char* canon_MULTIPASS_MX370_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + /* color-only */ + "600x600dpi_high3", + "600x600dpi_std3", + "300x300dpi_draft3", + NULL +}; + +static const char* canon_MULTIPASS_MX370_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX370_modeuses_PPproPlat[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX370_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_MULTIPASS_MX370_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MX370_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MX370_modeuses[] = { + { "Plain", canon_MULTIPASS_MX370_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX370_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_MX370_modeuses_PPproPlat, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_MULTIPASS_MX370_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MX370_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MX370_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MX370_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_MULTIPASS_MX370_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_MULTIPASS_MX370_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK",canon_MULTIPASS_MX370_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MX370_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MX370_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MX370_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MX370_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MX370); +/* ----------------------------------- Canon MX390 ----------------------------------- */ +static const char* canon_MULTIPASS_MX390_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + /* color-only */ + "600x600dpi_high3", + "600x600dpi_std3", + "300x300dpi_draft3", + NULL + }; + + +static const char* canon_MULTIPASS_MX390_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX390_modeuses_PPproPlat[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX390_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_MULTIPASS_MX390_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MX390_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MX390_modeuses[] = { + { "Plain", canon_MULTIPASS_MX390_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX390_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_MX390_modeuses_PPproPlat, INKSET_COLOR_SUPPORT }, + { "PhotoProLuster", canon_MULTIPASS_MX390_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_MULTIPASS_MX390_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MX390_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MX390_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MX390_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_MULTIPASS_MX390_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_MULTIPASS_MX390_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK",canon_MULTIPASS_MX390_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MX390_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MX390_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MX390_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MX390_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MX390); +/* ----------------------------------- Canon MX420 ----------------------------------- */ +static const char* canon_MULTIPASS_MX420_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + /* Black */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono",/*untested*/ + "300x300dpi_mono", + "300x300dpi_draftmono", + /* Color */ + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_draft2",/*untested*/ + "300x300dpi_std2", + "300x300dpi_draft2", + NULL + }; + +static const char* canon_MULTIPASS_MX420_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MX420_modeuses_PPproPlat[] = { + "1200x1200dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft",/*untested*/ + NULL +}; + +static const char* canon_MULTIPASS_MX420_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + /* Black */ + "600x600dpi_highmono3", + "600x600dpi_stdmono3", + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + NULL +}; + +static const char* canon_MULTIPASS_MX420_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MX420_modeuses_PPother[] = { + "600x600dpi_photohigh", + "600x600dpi_photo",/*untested*/ + "600x600dpi_photodraft",/*untested*/ + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MX420_modeuses[] = { + { "Plain", canon_MULTIPASS_MX420_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX420_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_MX420_modeuses_PPproPlat, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss", canon_MULTIPASS_MX420_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MX420_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MX420_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MX420_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_MULTIPASS_MX420_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_MULTIPASS_MX420_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK", canon_MULTIPASS_MX420_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MX420_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MX420_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MX420_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MX420_modeuses_PPother, INKSET_COLOR_SUPPORT }, + }; + +DECLARE_MODEUSES(canon_MULTIPASS_MX420); + +/* ----------------------------------- Canon MX510 ----------------------------------- */ +static const char* canon_MULTIPASS_MX510_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high3",/* duplex */ + "600x600dpi", + "300x300dpi", + /* color-only */ + "600x600dpi_high4", + "600x600dpi_std4", + "300x300dpi_std4", + NULL +}; + +static const char* canon_MULTIPASS_MX510_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX510_modeuses_PPproPlat[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX510_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_MULTIPASS_MX510_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MX510_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MX510_modeuses[] = { + { "Plain", canon_MULTIPASS_MX510_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_MX510_modeuses_PPproPlat, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_MULTIPASS_MX510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MX510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MX510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MX510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_MULTIPASS_MX510_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MX510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK",canon_MULTIPASS_MX510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MX510_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT }, + { "TShirt", canon_MULTIPASS_MX510_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MX510_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MX510_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MX510); + +/* ----------------------------------- Canon MX520 ----------------------------------- */ +static const char* canon_MULTIPASS_MX520_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high3",/* duplex */ + "600x600dpi", + "300x300dpi", + /* color-only */ + "600x600dpi_high4", + "600x600dpi_std4", + "300x300dpi_std4", + NULL +}; + +static const char* canon_MULTIPASS_MX520_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX520_modeuses_PPproPlat[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX520_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_MULTIPASS_MX520_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MX520_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MX520_modeuses[] = { + { "Plain", canon_MULTIPASS_MX520_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX520_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_MX520_modeuses_PPproPlat, INKSET_COLOR_SUPPORT }, + { "PhotoProLuster", canon_MULTIPASS_MX520_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_MULTIPASS_MX520_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_MX520_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_MX520_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_MX520_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_MULTIPASS_MX520_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_MULTIPASS_MX520_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK",canon_MULTIPASS_MX520_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_MX520_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_MX520_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_MX520_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_MX520_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MX520); + +/* ----------------------------------- Canon MX700 ----------------------------------- */ +static const char* canon_MULTIPASS_MX700_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MX700_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX700_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MX700_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX700_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_draft3", + NULL +}; + +static const char* canon_MULTIPASS_MX700_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_MULTIPASS_MX700_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MX700_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MX700_modeuses[] = { + { "Plain", canon_MULTIPASS_MX700_modeuses_plain, 0 }, + { "GlossyPro", canon_MULTIPASS_MX700_modeuses_PPpro, 0 }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX700_modeuses_PPplus, 0 }, + { "PhotopaperPlus", canon_MULTIPASS_MX700_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MX700_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_MULTIPASS_MX700_modeuses_PPplus, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MX700_modeuses_PPplusDS, 0 }, + { "Coated", canon_MULTIPASS_MX700_modeuses_PPplusDS, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MX700_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MX700_modeuses_Hagaki, 0 }, + { "TShirt", canon_MULTIPASS_MX700_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MX700_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MX700_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MX700); + +/* ----------------------------------- Canon MX710 ----------------------------------- */ +static const char* canon_MULTIPASS_MX710_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_std2", /* duplex */ + "300x300dpi", + NULL +}; + +static const char* canon_MULTIPASS_MX710_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode unsupported */ +static const char* canon_MULTIPASS_MX710_modeuses_PPproPlat[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX710_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MX710_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MX710_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_MULTIPASS_MX710_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MX710_modeuses_PPother[] = { + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MX710_modeuses[] = { + { "Plain", canon_MULTIPASS_MX710_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX710_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_MULTIPASS_MX710_modeuses_PPproPlat, 0 }, + { "PhotoProSemiGloss",canon_MULTIPASS_MX710_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MX710_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_MULTIPASS_MX710_modeuses_PPplusG2, 0 }, + { "Coated", canon_MULTIPASS_MX710_modeuses_PPmatte, 0 }, + { "HagakiA", canon_MULTIPASS_MX710_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MX710_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_MULTIPASS_MX710_modeuses_PPplusG2, 0 }, + { "Hagaki", canon_MULTIPASS_MX710_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "TShirt", canon_MULTIPASS_MX710_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MX710_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MX710_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MX710); + +/* ----------------------------------- Canon MX720 ----------------------------------- */ +static const char* canon_PIXMA_MX720_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_std2",/*duplex*/ + "300x300dpi", + NULL +}; + +static const char* canon_PIXMA_MX720_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode still unsupported */ +static const char* canon_PIXMA_MX720_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MX720_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_MX720_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_PIXMA_MX720_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_MX720_modeuses_TShirt[] = { + "600x600dpi_photohigh", + NULL +}; + +static const char* canon_PIXMA_MX720_modeuses_PPother[] = { + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MX720_modeuses[] = { + { "Plain", canon_PIXMA_MX720_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MX720_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_PIXMA_MX720_modeuses_PPpro, 0 }, + { "PhotoProLuster", canon_PIXMA_MX720_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss",canon_PIXMA_MX720_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_PIXMA_MX720_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MX720_modeuses_PPplusG2, 0 }, + { "Coated", canon_PIXMA_MX720_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_MX720_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_MX720_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_MX720_modeuses_PPplusG2, 0 }, + { "Hagaki", canon_PIXMA_MX720_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "TShirt", canon_PIXMA_MX720_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_MX720_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_MX720_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MX720); + +/* ----------------------------------- Canon MX850 ----------------------------------- */ +static const char* canon_MULTIPASS_MX850_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + "300x300dpi_draft", + NULL + }; + +static const char* canon_MULTIPASS_MX850_modeuses_PPplus[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_MULTIPASS_MX850_modeuses_PPplusDS[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MX850_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX850_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MX850_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + "600x600dpi_photodraft3", + NULL +}; + +static const char* canon_MULTIPASS_MX850_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_MULTIPASS_MX850_modeuses_disc[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + "600x600dpi_photodraft4", + NULL +}; + +static const char* canon_MULTIPASS_MX850_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MX850_modeuses_PPother[] = { + "600x600dpi_photo", + NULL + }; + +static const canon_modeuse_t canon_MULTIPASS_MX850_modeuses[] = { + { "Plain", canon_MULTIPASS_MX850_modeuses_plain, DUPLEX_SUPPORT }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX850_modeuses_PPplus, 0 }, + { "GlossyPro", canon_MULTIPASS_MX850_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_MULTIPASS_MX850_modeuses_PPplus, 0 }, + { "PhotopaperPlusDouble", canon_MULTIPASS_MX850_modeuses_PPplusDS, 0 }, + { "GlossyPaper", canon_MULTIPASS_MX850_modeuses_PPplusDS, 0 }, + { "PhotoProSemiGloss",canon_MULTIPASS_MX850_modeuses_PPplusDS, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MX850_modeuses_PPmatte, 0 }, + { "Coated", canon_MULTIPASS_MX850_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MX850_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MX850_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_MULTIPASS_MX850_modeuses_disc, 0 }, + { "DiscOthers", canon_MULTIPASS_MX850_modeuses_disc, 0 }, + { "TShirt", canon_MULTIPASS_MX850_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MX850_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MX850_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MX850); + +/* ----------------------------------- Canon MX860 ----------------------------------- */ +static const char* canon_MULTIPASS_MX860_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL +}; + +static const char* canon_MULTIPASS_MX860_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MX860_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX860_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MX860_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MX860_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_MULTIPASS_MX860_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MX860_modeuses_PPother[] = { + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MX860_modeuses[] = { + { "Plain", canon_MULTIPASS_MX860_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX860_modeuses_PPplusG2, 0 }, + { "PhotoPro2", canon_MULTIPASS_MX860_modeuses_PPpro, 0 }, + { "PhotoProPlat", canon_MULTIPASS_MX860_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MX860_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_MULTIPASS_MX860_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss",canon_MULTIPASS_MX860_modeuses_PPplusG2, 0 }, + { "Coated", canon_MULTIPASS_MX860_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MX860_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_MULTIPASS_MX860_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "TShirt", canon_MULTIPASS_MX860_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MX860_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MX860_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MX860); + +/* ----------------------------------- Canon MX870 ----------------------------------- */ +static const char* canon_MULTIPASS_MX870_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL +}; + +static const char* canon_MULTIPASS_MX870_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MX870_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX870_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MX870_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MX870_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_MULTIPASS_MX870_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MX870_modeuses_PPother[] = { + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MX870_modeuses[] = { + { "Plain", canon_MULTIPASS_MX870_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX870_modeuses_PPplusG2, 0 }, + { "PhotoPro2", canon_MULTIPASS_MX870_modeuses_PPpro, 0 }, + { "PhotoProPlat", canon_MULTIPASS_MX870_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MX870_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_MULTIPASS_MX870_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss",canon_MULTIPASS_MX870_modeuses_PPplusG2, 0 }, + { "Coated", canon_MULTIPASS_MX870_modeuses_PPmatte, 0 }, + { "HagakiA", canon_MULTIPASS_MX870_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MX870_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_MULTIPASS_MX870_modeuses_PPplusG2, 0 }, + { "Hagaki", canon_MULTIPASS_MX870_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "TShirt", canon_MULTIPASS_MX870_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MX870_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MX870_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MX870); + +/* ----------------------------------- Canon MX880 ----------------------------------- */ +static const char* canon_MULTIPASS_MX880_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL +}; + +static const char* canon_MULTIPASS_MX880_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MX880_modeuses_PPproPlat[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX880_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_MULTIPASS_MX880_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_MULTIPASS_MX880_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_MULTIPASS_MX880_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_MX880_modeuses_PPother[] = { + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MX880_modeuses[] = { + { "Plain", canon_MULTIPASS_MX880_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX880_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_MULTIPASS_MX880_modeuses_PPproPlat, 0 }, + { "PhotoProSemiGloss",canon_MULTIPASS_MX880_modeuses_PPplusG2, 0 }, + { "GlossyPaper", canon_MULTIPASS_MX880_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MX880_modeuses_PPmatte, 0 }, + { "Coated", canon_MULTIPASS_MX880_modeuses_PPmatte, 0 }, + { "HagakiA", canon_MULTIPASS_MX880_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_MULTIPASS_MX880_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_MULTIPASS_MX880_modeuses_PPplusG2, 0 }, + { "Hagaki", canon_MULTIPASS_MX880_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "TShirt", canon_MULTIPASS_MX880_modeuses_TShirt, 0 }, + { "Envelope", canon_MULTIPASS_MX880_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_MULTIPASS_MX880_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MX880); + +/* ----------------------------------- Canon MX920 ----------------------------------- */ +static const char* canon_PIXMA_MX920_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_std2",/*duplex*/ + "300x300dpi", + NULL +}; + +static const char* canon_PIXMA_MX920_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode still unsupported */ +static const char* canon_PIXMA_MX920_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MX920_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_MX920_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_PIXMA_MX920_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_MX920_modeuses_disc[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_MX920_modeuses_TShirt[] = { + "600x600dpi_photohigh", + NULL +}; + +static const char* canon_PIXMA_MX920_modeuses_PPother[] = { + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MX920_modeuses[] = { + { "Plain", canon_PIXMA_MX920_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MX920_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_PIXMA_MX920_modeuses_PPpro, 0 }, + { "PhotoProLuster", canon_PIXMA_MX920_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss",canon_PIXMA_MX920_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_PIXMA_MX920_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MX920_modeuses_PPplusG2, 0 }, + { "Coated", canon_PIXMA_MX920_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_MX920_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_MX920_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_MX920_modeuses_PPplusG2, 0 }, + { "Hagaki", canon_PIXMA_MX920_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_MX920_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_MX920_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_MX920_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_MX920_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_MX920_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MX920); + +/* ----------------------------------- Canon MX7600 ----------------------------------- */ +static const char* canon_MULTIPASS_MX7600_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL +}; + +static const char* canon_MULTIPASS_MX7600_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode not yet supported */ +static const char* canon_MULTIPASS_MX7600_modeuses_PPsemiGloss[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_MX7600_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_MULTIPASS_MX7600_modeuses_FA[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_MX7600_modeuses[] = { + { "Plain", canon_MULTIPASS_MX7600_modeuses_plain, DUPLEX_SUPPORT }, + { "PhotoPlusGloss2", canon_MULTIPASS_MX7600_modeuses_PPplusG2, 0 }, + { "PhotopaperPlus", canon_MULTIPASS_MX7600_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_MULTIPASS_MX7600_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss",canon_MULTIPASS_MX7600_modeuses_PPsemiGloss, 0 }, + { "InkJetHagaki", canon_MULTIPASS_MX7600_modeuses_PPplusG2, 0 }, + { "FineArtPhotoRag", canon_MULTIPASS_MX7600_modeuses_FA, 0 }, + { "FineArtOther", canon_MULTIPASS_MX7600_modeuses_FA, 0 }, + { "Hagaki", canon_MULTIPASS_MX7600_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "Envelope", canon_MULTIPASS_MX7600_modeuses_Hagaki, 0 }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_MX7600); + +/* ----------------------------------- Canon E500 ----------------------------------- */ +static const char* canon_MULTIPASS_E500_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* color-only */ + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL +}; + +static const char* canon_MULTIPASS_E500_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_E500_modeuses_PPproPlat[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_E500_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_MULTIPASS_E500_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_E500_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_E500_modeuses[] = { + { "Plain", canon_MULTIPASS_E500_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_E500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_E500_modeuses_PPproPlat, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_MULTIPASS_E500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_E500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_E500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_E500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_MULTIPASS_E500_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_MULTIPASS_E500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK",canon_MULTIPASS_E500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_E500_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_E500_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_E500_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_E500_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_E500); + +/* ----------------------------------- Canon E510 ----------------------------------- */ +static const char* canon_MULTIPASS_E510_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* color-only */ + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft", + NULL +}; + +static const char* canon_MULTIPASS_E510_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_E510_modeuses_PPproPlat[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_MULTIPASS_E510_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_MULTIPASS_E510_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_MULTIPASS_E510_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_MULTIPASS_E510_modeuses[] = { + { "Plain", canon_MULTIPASS_E510_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotoPlusGloss2", canon_MULTIPASS_E510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_MULTIPASS_E510_modeuses_PPproPlat, INKSET_COLOR_SUPPORT }, + { "PhotoProLuster", canon_MULTIPASS_E510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_MULTIPASS_E510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_MULTIPASS_E510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_MULTIPASS_E510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_MULTIPASS_E510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_MULTIPASS_E510_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_MULTIPASS_E510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK",canon_MULTIPASS_E510_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_MULTIPASS_E510_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_MULTIPASS_E510_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_MULTIPASS_E510_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_MULTIPASS_E510_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_MULTIPASS_E510); + +/* ----------------------------------- Canon MG2100 ----------------------------------- */ +static const char* canon_PIXMA_MG2100_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + /* Mono */ + "600x600dpi_monohigh", + "600x600dpi_mono", + "300x300dpi_mono", + /* Color */ + "600x600dpi_high2", + "600x600dpi_std2", + "300x300dpi_std2", + NULL + }; + +static const char* canon_PIXMA_MG2100_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG2100_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG2100_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + /* Mono */ + "600x600dpi_highmono3", + "600x600dpi_mono3", + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + NULL +}; + +static const char* canon_PIXMA_MG2100_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_MG2100_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG2100_modeuses[] = { + { "Plain", canon_PIXMA_MG2100_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG2100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_PIXMA_MG2100_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_PIXMA_MG2100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_PIXMA_MG2100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_PIXMA_MG2100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_PIXMA_MG2100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_PIXMA_MG2100_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_PIXMA_MG2100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK",canon_PIXMA_MG2100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_PIXMA_MG2100_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_PIXMA_MG2100_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_PIXMA_MG2100_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_PIXMA_MG2100_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG2100); + +/* ----------------------------------- Canon MG2200 ----------------------------------- */ +static const char* canon_PIXMA_MG2200_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + /* Mono */ + "600x600dpi_monohigh", + "600x600dpi_mono", + "300x300dpi_mono", + /* Color */ + "600x600dpi_high2", + "600x600dpi_std2", + "300x300dpi_std2", + NULL + }; + +static const char* canon_PIXMA_MG2200_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG2200_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG2200_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + /* Mono */ + "600x600dpi_highmono3", + "600x600dpi_mono3", + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + NULL +}; + +static const char* canon_PIXMA_MG2200_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_MG2200_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG2200_modeuses[] = { + { "Plain", canon_PIXMA_MG2200_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG2200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_PIXMA_MG2200_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotoProLuster", canon_PIXMA_MG2200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_PIXMA_MG2200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_PIXMA_MG2200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_PIXMA_MG2200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_PIXMA_MG2200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_PIXMA_MG2200_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_PIXMA_MG2200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK",canon_PIXMA_MG2200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_PIXMA_MG2200_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_PIXMA_MG2200_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_PIXMA_MG2200_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_PIXMA_MG2200_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG2200); + +/* ----------------------------------- Canon MG2400 ----------------------------------- */ +static const char* canon_PIXMA_MG2400_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi", + NULL + }; + +static const char* canon_PIXMA_MG2400_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG2400_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG2400_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_MG2400_modeuses_TShirt[] = { + "600x600dpi_photo", + NULL + }; + +static const char* canon_PIXMA_MG2400_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG2400_modeuses[] = { + { "Plain", canon_PIXMA_MG2400_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG2400_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_PIXMA_MG2400_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotoProLuster", canon_PIXMA_MG2400_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_PIXMA_MG2400_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_PIXMA_MG2400_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_PIXMA_MG2400_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_PIXMA_MG2400_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_PIXMA_MG2400_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_PIXMA_MG2400_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK",canon_PIXMA_MG2400_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_PIXMA_MG2400_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_PIXMA_MG2400_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_PIXMA_MG2400_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_PIXMA_MG2400_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG2400); + +/* ----------------------------------- Canon MG3100 ----------------------------------- */ +static const char* canon_PIXMA_MG3100_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high5",/* duplex */ + "600x600dpi", + "300x300dpi", + /* Mono */ + "600x600dpi_monohigh", + "600x600dpi_mono", + "300x300dpi_mono", + /* Color */ + "600x600dpi_high2", + "600x600dpi_std2", + "300x300dpi_std2", + NULL + }; + +static const char* canon_PIXMA_MG3100_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG3100_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG3100_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + /* Mono */ + "600x600dpi_highmono3", + "600x600dpi_mono3", + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + NULL +}; + +static const char* canon_PIXMA_MG3100_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_MG3100_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG3100_modeuses[] = { + { "Plain", canon_PIXMA_MG3100_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG3100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_PIXMA_MG3100_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_PIXMA_MG3100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_PIXMA_MG3100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_PIXMA_MG3100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_PIXMA_MG3100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_PIXMA_MG3100_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_MG3100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK",canon_PIXMA_MG3100_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_PIXMA_MG3100_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT }, + { "TShirt", canon_PIXMA_MG3100_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_PIXMA_MG3100_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_PIXMA_MG3100_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG3100); + +/* ----------------------------------- Canon MG3200 ----------------------------------- */ +static const char* canon_PIXMA_MG3200_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high5",/* duplex */ + "600x600dpi", + "300x300dpi", + /* Mono */ + "600x600dpi_monohigh", + "600x600dpi_mono", + "300x300dpi_mono", + /* Color */ + "600x600dpi_high2", + "600x600dpi_std2", + "300x300dpi_std2", + NULL + }; + +static const char* canon_PIXMA_MG3200_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG3200_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG3200_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + /* Mono */ + "600x600dpi_highmono3", + "600x600dpi_mono3", + /* Color */ + "600x600dpi_high4", + "600x600dpi_std4", + NULL +}; + +static const char* canon_PIXMA_MG3200_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_MG3200_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG3200_modeuses[] = { + { "Plain", canon_PIXMA_MG3200_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG3200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_PIXMA_MG3200_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotoProLuster", canon_PIXMA_MG3200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_PIXMA_MG3200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_PIXMA_MG3200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_PIXMA_MG3200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_PIXMA_MG3200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_PIXMA_MG3200_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_MG3200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK",canon_PIXMA_MG3200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_PIXMA_MG3200_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT }, + { "TShirt", canon_PIXMA_MG3200_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_PIXMA_MG3200_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_PIXMA_MG3200_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG3200); + +/* ----------------------------------- Canon MG3500 ----------------------------------- */ +/* same as MG3100 but try to use inktypes to control use of inks in inksets */ +static const char* canon_PIXMA_MG3500_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high5",/* duplex */ + "600x600dpi", + "300x300dpi", + NULL + }; + +static const char* canon_PIXMA_MG3500_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG3500_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG3500_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_PIXMA_MG3500_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_MG3500_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG3500_modeuses[] = { + { "Plain", canon_PIXMA_MG3500_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG3500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_PIXMA_MG3500_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotoProLuster", canon_PIXMA_MG3500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_PIXMA_MG3500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_PIXMA_MG3500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaper", canon_PIXMA_MG3500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_PIXMA_MG3500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_PIXMA_MG3500_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_PIXMA_MG3500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "CanonPhotoHagakiK",canon_PIXMA_MG3500_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Hagaki", canon_PIXMA_MG3500_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_PIXMA_MG3500_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_PIXMA_MG3500_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_PIXMA_MG3500_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG3500); + +/* ----------------------------------- Canon MG5100 ----------------------------------- */ +static const char* canon_PIXMA_MG5100_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "300x300dpi", + NULL + }; + +static const char* canon_PIXMA_MG5100_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode still unsupported */ +static const char* canon_PIXMA_MG5100_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG5100_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_MG5100_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_PIXMA_MG5100_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_MG5100_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_MG5100_modeuses_PPother[] = { + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG5100_modeuses[] = { + { "Plain", canon_PIXMA_MG5100_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG5100_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_PIXMA_MG5100_modeuses_PPpro, 0 }, + { "PhotoProSemiGloss",canon_PIXMA_MG5100_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_PIXMA_MG5100_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MG5100_modeuses_PPplusG2, 0 }, + { "Coated", canon_PIXMA_MG5100_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_MG5100_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_MG5100_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_MG5100_modeuses_PPplusG2, 0 }, + { "Hagaki", canon_PIXMA_MG5100_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "TShirt", canon_PIXMA_MG5100_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_MG5100_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_MG5100_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG5100); + +/* ----------------------------------- Canon MG5200 ----------------------------------- */ +static const char* canon_PIXMA_MG5200_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_draft",/*untested*/ + "300x300dpi", + "300x300dpi_draft",/*untested*/ + NULL + }; + +static const char* canon_PIXMA_MG5200_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode still unsupported */ +static const char* canon_PIXMA_MG5200_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG5200_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_MG5200_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_PIXMA_MG5200_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_MG5200_modeuses_disc[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_MG5200_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_MG5200_modeuses_PPother[] = { + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG5200_modeuses[] = { + { "Plain", canon_PIXMA_MG5200_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG5200_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_PIXMA_MG5200_modeuses_PPpro, 0 }, + { "PhotoProSemiGloss",canon_PIXMA_MG5200_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_PIXMA_MG5200_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MG5200_modeuses_PPplusG2, 0 }, + { "Coated", canon_PIXMA_MG5200_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_MG5200_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_MG5200_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_MG5200_modeuses_PPplusG2, 0 }, + { "Hagaki", canon_PIXMA_MG5200_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_MG5200_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_MG5200_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_MG5200_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_MG5200_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_MG5200_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG5200); + +/* ----------------------------------- Canon MG5300 ----------------------------------- */ +static const char* canon_PIXMA_MG5300_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_std2",/*duplex*/ + "300x300dpi", + NULL + }; + +static const char* canon_PIXMA_MG5300_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode still unsupported */ +static const char* canon_PIXMA_MG5300_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG5300_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_MG5300_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_MG5300_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_MG5300_modeuses_disc[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_MG5300_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_MG5300_modeuses_PPother[] = { + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG5300_modeuses[] = { + { "Plain", canon_PIXMA_MG5300_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG5300_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_PIXMA_MG5300_modeuses_PPpro, 0 }, + { "PhotoProSemiGloss",canon_PIXMA_MG5300_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_PIXMA_MG5300_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MG5300_modeuses_PPplusG2, 0 }, + { "Coated", canon_PIXMA_MG5300_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_MG5300_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_MG5300_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_MG5300_modeuses_PPplusG2, 0 }, + { "Hagaki", canon_PIXMA_MG5300_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_MG5300_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_MG5300_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_MG5300_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_MG5300_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_MG5300_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG5300); + +/* ----------------------------------- Canon MG5400 ----------------------------------- */ +static const char* canon_PIXMA_MG5400_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_std2",/*duplex*/ + "300x300dpi", + NULL + }; + +static const char* canon_PIXMA_MG5400_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +/* highest mode still unsupported */ +static const char* canon_PIXMA_MG5400_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG5400_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_MG5400_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_MG5400_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_MG5400_modeuses_disc[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_MG5400_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_MG5400_modeuses_PPother[] = { + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG5400_modeuses[] = { + { "Plain", canon_PIXMA_MG5400_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG5400_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_PIXMA_MG5400_modeuses_PPpro, 0 }, + { "PhotoProLuster", canon_PIXMA_MG5400_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss",canon_PIXMA_MG5400_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_PIXMA_MG5400_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MG5400_modeuses_PPplusG2, 0 }, + { "Coated", canon_PIXMA_MG5400_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_MG5400_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_MG5400_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_MG5400_modeuses_PPplusG2, 0 }, + { "Hagaki", canon_PIXMA_MG5400_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_MG5400_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_MG5400_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_MG5400_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_MG5400_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_MG5400_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG5400); + +/* ----------------------------------- Canon MG5500 ----------------------------------- */ +static const char* canon_PIXMA_MG5500_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_std2",/* duplex */ + "300x300dpi", + NULL + }; + +static const char* canon_PIXMA_MG5500_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG5500_modeuses_PPpro[] = { + /*ud1 not supported */ + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG5500_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_MG5500_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_MG5500_modeuses_TShirt[] = { + "600x600dpi_photohigh2", + NULL +}; + +static const char* canon_PIXMA_MG5500_modeuses_PPother[] = { + "600x600dpi_photohigh", /* experimental */ + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG5500_modeuses[] = { + { "Plain", canon_PIXMA_MG5500_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG5500_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_PIXMA_MG5500_modeuses_PPpro, 0 }, + { "PhotoProLuster", canon_PIXMA_MG5500_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss",canon_PIXMA_MG5500_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_PIXMA_MG5500_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MG5500_modeuses_PPplusG2, 0 }, + { "Coated", canon_PIXMA_MG5500_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_MG5500_modeuses_Hagaki, 0 }, + { "InkJetHagaki", canon_PIXMA_MG5500_modeuses_PPplusG2, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_MG5500_modeuses_PPplusG2, 0 }, + { "Hagaki", canon_PIXMA_MG5500_modeuses_Hagaki, 0 }, + { "TShirt", canon_PIXMA_MG5500_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_MG5500_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_MG5500_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG5500); + +/* ----------------------------------- Canon MG6100 ----------------------------------- */ +/* most photo modes use gray ink which is unsupported */ +/* TODO: mono modes for photo media */ +static const char* canon_PIXMA_MG6100_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "300x300dpi", + NULL + }; + +/* unsupported*/ +static const char* canon_PIXMA_MG6100_modeuses_PPplusG2[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +/* unsupported*/ +static const char* canon_PIXMA_MG6100_modeuses_PPpro[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +static const char* canon_PIXMA_MG6100_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG6100_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_PIXMA_MG6100_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_MG6100_modeuses_disc[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_MG6100_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +/* unsupported*/ +static const char* canon_PIXMA_MG6100_modeuses_photorag[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +static const char* canon_PIXMA_MG6100_modeuses_PPother[] = { + "600x600dpi_photo2", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG6100_modeuses[] = { + { "Plain", canon_PIXMA_MG6100_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG6100_modeuses_PPplusG2, 0 },/*unsupported*/ + { "PhotoProPlat", canon_PIXMA_MG6100_modeuses_PPpro, 0 },/*unsupported*/ + { "PhotoProSemiGloss",canon_PIXMA_MG6100_modeuses_PPplusG2, 0 },/*unsupported*/ + { "PhotopaperMatte", canon_PIXMA_MG6100_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MG6100_modeuses_PPplusG2, 0 },/*unsupported*/ + { "Coated", canon_PIXMA_MG6100_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_MG6100_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_MG6100_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_MG6100_modeuses_PPplusG2, 0 },/*unsupported*/ + { "Hagaki", canon_PIXMA_MG6100_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_MG6100_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_MG6100_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_MG6100_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_MG6100_modeuses_Hagaki, 0 }, + { "FineArtPhotoRag", canon_PIXMA_MG6100_modeuses_photorag, 0 },/*unsupported*/ + { "FineArtOther", canon_PIXMA_MG6100_modeuses_photorag, 0 },/*unsupported*/ + { "PhotopaperOther", canon_PIXMA_MG6100_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG6100); + +/* ----------------------------------- Canon MG6200 ----------------------------------- */ +/* most photo modes use gray ink which is unsupported */ +/* TODO: mono modes for photo media */ +static const char* canon_PIXMA_MG6200_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_std2",/* duplex */ + "300x300dpi", + NULL + }; + +/* unsupported*/ +static const char* canon_PIXMA_MG6200_modeuses_PPplusG2[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +/* unsupported*/ +static const char* canon_PIXMA_MG6200_modeuses_PPpro[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +static const char* canon_PIXMA_MG6200_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG6200_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_MG6200_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_MG6200_modeuses_disc[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_MG6200_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +/* unsupported*/ +static const char* canon_PIXMA_MG6200_modeuses_photorag[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +static const char* canon_PIXMA_MG6200_modeuses_PPother[] = { + "600x600dpi_photo2", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG6200_modeuses[] = { + { "Plain", canon_PIXMA_MG6200_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG6200_modeuses_PPplusG2, 0 },/*unsupported*/ + { "PhotoProPlat", canon_PIXMA_MG6200_modeuses_PPpro, 0 },/*unsupported*/ + { "PhotoProSemiGloss",canon_PIXMA_MG6200_modeuses_PPplusG2, 0 },/*unsupported*/ + { "PhotopaperMatte", canon_PIXMA_MG6200_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MG6200_modeuses_PPplusG2, 0 },/*unsupported*/ + { "Coated", canon_PIXMA_MG6200_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_MG6200_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_MG6200_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_MG6200_modeuses_PPplusG2, 0 },/*unsupported*/ + { "Hagaki", canon_PIXMA_MG6200_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_MG6200_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_MG6200_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_MG6200_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_MG6200_modeuses_Hagaki, 0 }, + { "FineArtPhotoRag", canon_PIXMA_MG6200_modeuses_photorag, 0 },/*unsupported*/ + { "FineArtOther", canon_PIXMA_MG6200_modeuses_photorag, 0 },/*unsupported*/ + { "PhotopaperOther", canon_PIXMA_MG6200_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG6200); + +/* ----------------------------------- Canon MG6300 ----------------------------------- */ +/* most photo modes use gray ink which is unsupported */ +/* TODO: mono modes for photo media */ +static const char* canon_PIXMA_MG6300_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_std2",/* duplex */ + "300x300dpi", + NULL + }; + +/* unsupported*/ +static const char* canon_PIXMA_MG6300_modeuses_PPplusG2[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +/* unsupported*/ +static const char* canon_PIXMA_MG6300_modeuses_PPpro[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +static const char* canon_PIXMA_MG6300_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG6300_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_MG6300_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_MG6300_modeuses_disc[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_MG6300_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +/* unsupported*/ +static const char* canon_PIXMA_MG6300_modeuses_photorag[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +static const char* canon_PIXMA_MG6300_modeuses_PPother[] = { + "600x600dpi_photo2", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG6300_modeuses[] = { + { "Plain", canon_PIXMA_MG6300_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG6300_modeuses_PPplusG2, 0 },/*unsupported*/ + { "PhotoProPlat", canon_PIXMA_MG6300_modeuses_PPpro, 0 },/*unsupported*/ + { "PhotoProLuster", canon_PIXMA_MG6300_modeuses_PPplusG2, 0 },/*unsupported*/ + { "PhotoProSemiGloss",canon_PIXMA_MG6300_modeuses_PPplusG2, 0 },/*unsupported*/ + { "PhotopaperMatte", canon_PIXMA_MG6300_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MG6300_modeuses_PPplusG2, 0 },/*unsupported*/ + { "Coated", canon_PIXMA_MG6300_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_MG6300_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_MG6300_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_MG6300_modeuses_PPplusG2, 0 },/*unsupported*/ + { "Hagaki", canon_PIXMA_MG6300_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_MG6300_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_MG6300_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_MG6300_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_MG6300_modeuses_Hagaki, 0 }, + { "FineArtPhotoRag", canon_PIXMA_MG6300_modeuses_photorag, 0 },/*unsupported*/ + { "FineArtOther", canon_PIXMA_MG6300_modeuses_photorag, 0 },/*unsupported*/ + { "PhotopaperOther", canon_PIXMA_MG6300_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG6300); + +/* ----------------------------------- Canon MG6500 ----------------------------------- */ +/* most photo modes use gray ink which is unsupported */ +/* TODO: mono modes for photo media */ +static const char* canon_PIXMA_MG6500_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_std2",/* duplex */ + "300x300dpi", + NULL + }; + +/* unsupported*/ +static const char* canon_PIXMA_MG6500_modeuses_PPplusG2[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +/* unsupported*/ +static const char* canon_PIXMA_MG6500_modeuses_PPpro[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +static const char* canon_PIXMA_MG6500_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG6500_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_MG6500_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_MG6500_modeuses_disc[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_MG6500_modeuses_TShirt[] = { + "600x600dpi_photo", + NULL +}; + +/* unsupported*/ +static const char* canon_PIXMA_MG6500_modeuses_photorag[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +static const char* canon_PIXMA_MG6500_modeuses_PPother[] = { + "600x600dpi_photo2", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG6500_modeuses[] = { + { "Plain", canon_PIXMA_MG6500_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG6500_modeuses_PPplusG2, 0 },/*unsupported*/ + { "PhotoProPlat", canon_PIXMA_MG6500_modeuses_PPpro, 0 },/*unsupported*/ + { "PhotoProLuster", canon_PIXMA_MG6500_modeuses_PPplusG2, 0 },/*unsupported*/ + { "PhotoProSemiGloss",canon_PIXMA_MG6500_modeuses_PPplusG2, 0 },/*unsupported*/ + { "PhotopaperMatte", canon_PIXMA_MG6500_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MG6500_modeuses_PPplusG2, 0 },/*unsupported*/ + { "Coated", canon_PIXMA_MG6500_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_MG6500_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_MG6500_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_MG6500_modeuses_PPplusG2, 0 },/*unsupported*/ + { "Hagaki", canon_PIXMA_MG6500_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_MG6500_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_MG6500_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_MG6500_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_MG6500_modeuses_Hagaki, 0 }, + { "FineArtPhotoRag", canon_PIXMA_MG6500_modeuses_photorag, 0 },/*unsupported*/ + { "FineArtOther", canon_PIXMA_MG6500_modeuses_photorag, 0 },/*unsupported*/ + { "PhotopaperOther", canon_PIXMA_MG6500_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG6500); + +/* ----------------------------------- Canon MG8100 ----------------------------------- */ +/* most photo modes use gray ink which is unsupported */ +/* TODO: mono modes for photo media */ +static const char* canon_PIXMA_MG8100_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_std2",/* duplex */ + "300x300dpi", + NULL +}; + +/* unsupported*/ +static const char* canon_PIXMA_MG8100_modeuses_PPplusG2[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +/* unsupported*/ +static const char* canon_PIXMA_MG8100_modeuses_PPpro[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +static const char* canon_PIXMA_MG8100_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG8100_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_MG8100_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_MG8100_modeuses_disc[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_MG8100_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +/* unsupported*/ +static const char* canon_PIXMA_MG8100_modeuses_photorag[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +static const char* canon_PIXMA_MG8100_modeuses_PPother[] = { + "600x600dpi_photo2", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG8100_modeuses[] = { + { "Plain", canon_PIXMA_MG8100_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG8100_modeuses_PPplusG2, 0 },/*unsupported*/ + { "PhotoProPlat", canon_PIXMA_MG8100_modeuses_PPpro, 0 },/*unsupported*/ + { "PhotoProSemiGloss",canon_PIXMA_MG8100_modeuses_PPplusG2, 0 },/*unsupported*/ + { "PhotopaperMatte", canon_PIXMA_MG8100_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MG8100_modeuses_PPplusG2, 0 },/*unsupported*/ + { "Coated", canon_PIXMA_MG8100_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_MG8100_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_MG8100_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_MG8100_modeuses_PPplusG2, 0 },/*unsupported*/ + { "Hagaki", canon_PIXMA_MG8100_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_MG8100_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_MG8100_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_MG8100_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_MG8100_modeuses_Hagaki, 0 }, + { "FineArtPhotoRag", canon_PIXMA_MG8100_modeuses_photorag, 0 },/*unsupported*/ + { "FineArtOther", canon_PIXMA_MG8100_modeuses_photorag, 0 },/*unsupported*/ + { "PhotopaperOther", canon_PIXMA_MG8100_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG8100); + +/* ----------------------------------- Canon MG8200 ----------------------------------- */ +/* most photo modes use gray ink which is unsupported */ +/* TODO: mono modes for photo media */ +static const char* canon_PIXMA_MG8200_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_std2",/* duplex */ + "300x300dpi", + NULL +}; + +/* unsupported*/ +static const char* canon_PIXMA_MG8200_modeuses_PPplusG2[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +/* unsupported*/ +static const char* canon_PIXMA_MG8200_modeuses_PPpro[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +static const char* canon_PIXMA_MG8200_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG8200_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_MG8200_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_MG8200_modeuses_disc[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_MG8200_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +/* unsupported*/ +static const char* canon_PIXMA_MG8200_modeuses_photorag[] = { + "600x600dpi_photohigh",/*stand-in*/ + "600x600dpi_photo",/*stand-in*/ + "600x600dpi_photo2",/*stand-in*/ + NULL +}; + +static const char* canon_PIXMA_MG8200_modeuses_PPother[] = { + "600x600dpi_photo2", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG8200_modeuses[] = { + { "Plain", canon_PIXMA_MG8200_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG8200_modeuses_PPplusG2, 0 },/*unsupported*/ + { "PhotoProPlat", canon_PIXMA_MG8200_modeuses_PPpro, 0 },/*unsupported*/ + { "PhotoProSemiGloss",canon_PIXMA_MG8200_modeuses_PPplusG2, 0 },/*unsupported*/ + { "PhotopaperMatte", canon_PIXMA_MG8200_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MG8200_modeuses_PPplusG2, 0 },/*unsupported*/ + { "Coated", canon_PIXMA_MG8200_modeuses_PPmatte, 0 }, + { "HagakiA", canon_PIXMA_MG8200_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_MG8200_modeuses_inkjetHagaki, 0 }, + { "CanonPhotoHagakiK",canon_PIXMA_MG8200_modeuses_PPplusG2, 0 },/*unsupported*/ + { "Hagaki", canon_PIXMA_MG8200_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_MG8200_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_MG8200_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_MG8200_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_MG8200_modeuses_Hagaki, 0 }, + { "FineArtPhotoRag", canon_PIXMA_MG8200_modeuses_photorag, 0 },/*unsupported*/ + { "FineArtOther", canon_PIXMA_MG8200_modeuses_photorag, 0 },/*unsupported*/ + { "PhotopaperOther", canon_PIXMA_MG8200_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG8200); + +/* ----------------------------------- Canon Pro9000 ----------------------------------- */ + +static const char* canon_PIXMA_Pro9000_modeuses_plain[] = { + "600x600dpi_high2", + "600x600dpi", + "600x600dpi_std2", + "600x600dpi_draft", + "600x600dpi_draft2", + /* Mono */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono", + "600x600dpi_draftmono2", + NULL + }; + +/* highest mode not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9000_modeuses_PPplusG2[] = { + "600x600dpi_photo", + /* Mono */ + "600x600dpi_photomonohigh", + "600x600dpi_photomono", + NULL +}; + +/* highest mode not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9000_modeuses_PPplus[] = { + "600x600dpi_photo", + "600x600dpi_photodraft2", + /* Mono */ + "600x600dpi_photomonohigh", + "600x600dpi_photomono", + "600x600dpi_photomonodraft", + NULL +}; + +static const char* canon_PIXMA_Pro9000_modeuses_PPgloss[] = { + "600x600dpi_photohigh3", + "600x600dpi_photodraft", + /* Mono */ + "600x600dpi_photomonohigh", + "600x600dpi_photomonodraft", + NULL +}; + +/* highest mode not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9000_modeuses_PPpro[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + /* Mono */ + "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", + /* Mono */ + "600x600dpi_photomonohigh", + "600x600dpi_photomonomed", + NULL +}; + +static const char* canon_PIXMA_Pro9000_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + /* Mono */ + "600x600dpi_photomonohigh", + "600x600dpi_photomono", + NULL +}; + +static const char* canon_PIXMA_Pro9000_modeuses_inkjetHagaki[] = { + "600x600dpi_photomed2", + "600x600dpi_photomed", + /* Mono */ + "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_draft3",/* bw=2 for mono */ + NULL +}; + +static const char* canon_PIXMA_Pro9000_modeuses_disc[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo2", + /* Mono */ + "600x600dpi_photomonohigh", + "600x600dpi_photomono", + NULL +}; + +static const char* canon_PIXMA_Pro9000_modeuses_board[] = { + "600x600dpi_photohigh5", + /* Mono */ + "600x600dpi_photomono", + NULL + }; + +static const char* canon_PIXMA_Pro9000_modeuses_photorag[] = { + "600x600dpi_photohigh5", + "600x600dpi_photo", + /* Mono */ + "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_PPother[] = { + "600x600dpi_photo", + /* Mono */ + "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 }, + { "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 }, + { "Envelope", canon_PIXMA_Pro9000_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_Pro9000_modeuses_PPother, 0 }, + }; + +DECLARE_MODEUSES(canon_PIXMA_Pro9000); + +/* ----------------------------------- Canon Pro9000mk2 ----------------------------------- */ + +static const char* canon_PIXMA_Pro9000mk2_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft", + "600x600dpi_draft2", + /* Mono */ + "600x600dpi_highmono", + "600x600dpi_mono", + "600x600dpi_draftmono", + "600x600dpi_draftmono2", + NULL + }; + +/* highest mode not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9000mk2_modeuses_PPplusG2[] = { + "600x600dpi_photo", + /* Mono */ + "600x600dpi_photomonohigh", + "600x600dpi_photomono", + NULL +}; + +static const char* canon_PIXMA_Pro9000mk2_modeuses_PPgloss[] = { + "600x600dpi_photohigh2", + "600x600dpi_photodraft", + /* Mono */ + "600x600dpi_photomonohigh", + "600x600dpi_photomonodraft", + NULL +}; + +/* highest mode not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9000mk2_modeuses_PPpro2[] = { + "600x600dpi_photomed", + "600x600dpi_photo", + /* Mono */ + "600x600dpi_photomonohigh", + "600x600dpi_photomonomed",/*untested: quality setting uncertain*/ + "600x600dpi_photomono", + NULL +}; + +/* highest mode not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9000mk2_modeuses_PPproPlat[] = { + "600x600dpi_photomed", + /* Mono */ + "600x600dpi_photomonohigh", + "600x600dpi_photomonomed", + NULL +}; + +static const char* canon_PIXMA_Pro9000mk2_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + /* Mono */ + "600x600dpi_photomonohigh", + "600x600dpi_photomono", + NULL +}; + +static const char* canon_PIXMA_Pro9000mk2_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + /* Mono */ + "600x600dpi_photomonohigh", + "600x600dpi_photomono", + NULL +}; + +static const char* canon_PIXMA_Pro9000mk2_modeuses_Hagaki[] = { + "600x600dpi_high2",/* bw=2 for mono */ + "600x600dpi_std2",/* bw=2 for mono */ + "600x600dpi_draft2",/* bw=2 for mono */ + /* Mono */ + "600x600dpi_high3", + NULL +}; + +static const char* canon_PIXMA_Pro9000mk2_modeuses_disc[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + /* Mono */ + "600x600dpi_photomonohigh", + "600x600dpi_photomono", + NULL +}; + +static const char* canon_PIXMA_Pro9000mk2_modeuses_board[] = { + "600x600dpi_photohigh5", + /* Mono */ + "600x600dpi_photomonohigh", + NULL + }; + +static const char* canon_PIXMA_Pro9000mk2_modeuses_photorag[] = { + "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_PPother[] = { + "600x600dpi_photo", + /* Mono */ + "600x600dpi_photomono", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_Pro9000mk2_modeuses[] = { + { "Plain", canon_PIXMA_Pro9000mk2_modeuses_plain, 0 }, + { "PhotoPlusGloss2", canon_PIXMA_Pro9000mk2_modeuses_PPplusG2, 0 }, + { "GlossyPaper", canon_PIXMA_Pro9000mk2_modeuses_PPgloss, 0 }, + { "PhotoProSemiGloss", canon_PIXMA_Pro9000mk2_modeuses_PPplusG2, 0 }, + { "PhotoPro2", canon_PIXMA_Pro9000mk2_modeuses_PPpro2, 0 }, + { "PhotoProPlat", canon_PIXMA_Pro9000mk2_modeuses_PPproPlat, 0 }, + { "PhotopaperMatte", canon_PIXMA_Pro9000mk2_modeuses_PPmatte, 0 }, + { "Coated", canon_PIXMA_Pro9000mk2_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_PIXMA_Pro9000mk2_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_Pro9000mk2_modeuses_Hagaki, 0 }, + { "DiscCompat", canon_PIXMA_Pro9000mk2_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_Pro9000mk2_modeuses_disc, 0 }, + { "Boardpaper", canon_PIXMA_Pro9000mk2_modeuses_board, 0 }, + { "Canvas", canon_PIXMA_Pro9000mk2_modeuses_board, 0 }, + { "FineArtPhotoRag", canon_PIXMA_Pro9000mk2_modeuses_photorag, 0 }, + { "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 }, + { "Envelope", canon_PIXMA_Pro9000mk2_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_Pro9000mk2_modeuses_PPother, 0 }, + }; + +DECLARE_MODEUSES(canon_PIXMA_Pro9000mk2); + +/* ----------------------------------- Canon Pro9500 ----------------------------------- */ + +static const char* canon_PIXMA_Pro9500_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft", + /* Mono */ + "600x600dpi_highmono2", + "600x600dpi_highmono",/*untested*/ + "600x600dpi_mono", + "600x600dpi_draftmono", + "600x600dpi_draftmono2",/*untested*/ + NULL + }; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500_modeuses_PPplusG2[] = { + /* Mono */ + "600x600dpi_photomono", + NULL +}; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500_modeuses_PPgloss[] = { + /* Mono */ + "600x600dpi_photomono", + NULL +}; + +/* highest mode not yet supported (R,G inks) */ +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500_modeuses_PPpro2[] = { + /* Mono */ + "600x600dpi_photomono", + NULL +}; + +/* highest mode not yet supported (R,G inks) */ +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500_modeuses_PPproPlat[] = { + /* Mono */ + "600x600dpi_photomono", + NULL +}; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500_modeuses_PPmatte[] = { + /* Mono */ + "600x600dpi_photomono", + NULL +}; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500_modeuses_inkjetHagaki[] = { + /* Mono */ + "600x600dpi_photomono", + NULL +}; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500_modeuses_Hagaki[] = { + /* Mono */ + "600x600dpi_highmono2", + "600x600dpi_highmono", + "600x600dpi_mono",/*untested*/ + "600x600dpi_draftmono",/*untested*/ + "600x600dpi_draftmono2",/*untested*/ + NULL +}; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500_modeuses_disc[] = { + /* Mono */ + "600x600dpi_photomono", + NULL +}; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500_modeuses_board[] = { + /* Mono */ + "600x600dpi_photomono", + NULL + }; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500_modeuses_photorag[] = { + /* Mono */ + "600x600dpi_photomono", + NULL + }; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500_modeuses_TShirt[] = { + "600x600dpi_photomono",/* bw=2 for mono */ + NULL +}; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500_modeuses_PPother[] = { + /* Mono */ + "600x600dpi_photomono", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_Pro9500_modeuses[] = { + { "Plain", canon_PIXMA_Pro9500_modeuses_plain, 0 }, + { "PhotoPlusGloss2", canon_PIXMA_Pro9500_modeuses_PPplusG2, 0 }, + { "GlossyPaper", canon_PIXMA_Pro9500_modeuses_PPgloss, 0 }, + { "PhotoProSemiGloss", canon_PIXMA_Pro9500_modeuses_PPplusG2, 0 }, + { "PhotoPro2", canon_PIXMA_Pro9500_modeuses_PPpro2, 0 }, + { "PhotoProPlat", canon_PIXMA_Pro9500_modeuses_PPproPlat, 0 }, + { "PhotopaperMatte", canon_PIXMA_Pro9500_modeuses_PPmatte, 0 }, + { "Coated", canon_PIXMA_Pro9500_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_PIXMA_Pro9500_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_Pro9500_modeuses_Hagaki, 0 }, + { "DiscCompat", canon_PIXMA_Pro9500_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_Pro9500_modeuses_disc, 0 }, + { "Boardpaper", canon_PIXMA_Pro9500_modeuses_board, 0 }, + { "Canvas", canon_PIXMA_Pro9500_modeuses_board, 0 }, + { "FineArtPhotoRag", canon_PIXMA_Pro9500_modeuses_photorag, 0 }, + { "FineArtOther", canon_PIXMA_Pro9500_modeuses_board, 0 }, + { "FineArtPremiumMatte",canon_PIXMA_Pro9500_modeuses_board, 0 }, + { "FineArtMuseumEtching",canon_PIXMA_Pro9500_modeuses_photorag, 0 }, + { "TShirt", canon_PIXMA_Pro9500_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_Pro9500_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_Pro9500_modeuses_PPother, 0 }, + }; + +DECLARE_MODEUSES(canon_PIXMA_Pro9500); + +/* ----------------------------------- Canon Pro9500mk2 ----------------------------------- */ + +static const char* canon_PIXMA_Pro9500mk2_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft", + /* Mono */ + "600x600dpi_highmono2", + "600x600dpi_highmono",/*untested*/ + "600x600dpi_mono", + "600x600dpi_draftmono", + "600x600dpi_draftmono2",/*untested*/ + NULL + }; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500mk2_modeuses_PPplusG2[] = { + /* Mono */ + "600x600dpi_photomono", + NULL +}; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500mk2_modeuses_PPgloss[] = { + /* Mono */ + "600x600dpi_photomono", + NULL +}; + +/* highest mode not yet supported (R,G inks) */ +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500mk2_modeuses_PPproPlat[] = { + /* Mono */ + "600x600dpi_photomono", + NULL +}; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500mk2_modeuses_PPmatte[] = { + /* Mono */ + "600x600dpi_photomono", + NULL +}; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500mk2_modeuses_inkjetHagaki[] = { + /* Mono */ + "600x600dpi_photomono", + NULL +}; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500mk2_modeuses_Hagaki[] = { + /* Mono */ + "600x600dpi_highmono2", + "600x600dpi_highmono", + "600x600dpi_mono",/*untested*/ + "600x600dpi_draftmono",/*untested*/ + "600x600dpi_draftmono2",/*untested*/ + NULL +}; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500mk2_modeuses_disc[] = { + /* Mono */ + "600x600dpi_photomono", + NULL +}; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500mk2_modeuses_board[] = { + /* Mono */ + "600x600dpi_photomono", + NULL + }; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500mk2_modeuses_photorag[] = { + /* Mono */ + "600x600dpi_photomono", + NULL + }; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500mk2_modeuses_TShirt[] = { + "600x600dpi_photomono",/* bw=2 for mono */ + NULL +}; + +/* modes not yet supported (R,G inks) */ +static const char* canon_PIXMA_Pro9500mk2_modeuses_PPother[] = { + /* Mono */ + "600x600dpi_photomono", + NULL + }; + +static const canon_modeuse_t canon_PIXMA_Pro9500mk2_modeuses[] = { + { "Plain", canon_PIXMA_Pro9500mk2_modeuses_plain, 0 }, + { "PhotoPlusGloss2", canon_PIXMA_Pro9500mk2_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_PIXMA_Pro9500mk2_modeuses_PPproPlat, 0 }, + { "GlossyPaper", canon_PIXMA_Pro9500mk2_modeuses_PPgloss, 0 }, + { "PhotoProSemiGloss", canon_PIXMA_Pro9500mk2_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_PIXMA_Pro9500mk2_modeuses_PPmatte, 0 }, + { "Coated", canon_PIXMA_Pro9500mk2_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_PIXMA_Pro9500mk2_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_Pro9500mk2_modeuses_Hagaki, 0 }, + { "DiscCompat", canon_PIXMA_Pro9500mk2_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_Pro9500mk2_modeuses_disc, 0 }, + { "Boardpaper", canon_PIXMA_Pro9500mk2_modeuses_board, 0 }, + { "Canvas", canon_PIXMA_Pro9500mk2_modeuses_board, 0 }, + { "FineArtPhotoRag", canon_PIXMA_Pro9500mk2_modeuses_photorag, 0 }, + { "FineArtOther", canon_PIXMA_Pro9500mk2_modeuses_board, 0 }, + { "FineArtPremiumMatte",canon_PIXMA_Pro9500mk2_modeuses_board, 0 }, + { "FineArtMuseumEtching",canon_PIXMA_Pro9500mk2_modeuses_photorag, 0 }, + { "TShirt", canon_PIXMA_Pro9500mk2_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_Pro9500mk2_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_Pro9500mk2_modeuses_PPother, 0 }, + }; + +DECLARE_MODEUSES(canon_PIXMA_Pro9500mk2); + +#endif diff --git a/src/main/canon-media.h b/src/main/canon-media.h index 7fc3bf7..b7cd87e 100644 --- a/src/main/canon-media.h +++ b/src/main/canon-media.h @@ -235,6 +235,22 @@ static const canon_slot_t canon_PIXMA_MG5200_slots[] = { }; DECLARE_SLOTS(canon_PIXMA_MG5200); +static const canon_slot_t canon_PIXMA_MG5400_slots[] = { + { "Cassette", N_ ("Cassette"), 0xd }, + { "CD", N_ ("CD tray"), 0xa }, +}; +DECLARE_SLOTS(canon_PIXMA_MG5400); + +static const canon_slot_t canon_PIXMA_MX720_slots[] = { + { "Cassette", N_ ("Cassette"), 0xd }, +}; +DECLARE_SLOTS(canon_PIXMA_MX720); + +static const canon_slot_t canon_PIXMA_iP8700_slots[] = { + { "Rear", N_ ("Rear tray"), 0x4 }, + { "CD", N_ ("CD tray"), 0xa }, +}; +DECLARE_SLOTS(canon_PIXMA_iP8700); /* media types */ @@ -1883,6 +1899,45 @@ static const canon_paper_t canon_MULTIPASS_MP990_papers[] = { /* k_lower_sca }; DECLARE_PAPERS(canon_MULTIPASS_MP990); +static const canon_paper_t canon_PIXMA_MG2400_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed */ + { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed: PPproLuster*/ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },/* glossy */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed */ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed */ + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed: all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed: inkjet hagaki */ + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed: Canon photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed: hagaki*/ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed: T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed: PP other */ +}; +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 */ +}; +DECLARE_PAPERS(canon_PIXMA_MG3200); + 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 */ @@ -1921,6 +1976,28 @@ static const canon_paper_t canon_PIXMA_MG5200_papers[] = { }; 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 */ +}; +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 */ @@ -1943,16 +2020,71 @@ static const canon_paper_t canon_PIXMA_MG6100_papers[] = { }; DECLARE_PAPERS(canon_PIXMA_MG6100); -#endif +/* 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 */ +}; +DECLARE_PAPERS(canon_PIXMA_MG6300); -/* -Plain: Plain Paper, Canon High Resolution Paper; -Super: Photo Paper Plus Glossy; -Super Double-Sided: Photo Paper Plus Double-Sided; -Super High Gloss: Photo Paper Pro Platinum; -Glossy: Photo Paper Plus Glossy II, Photo Paper Glossy; -Semi-Gloss: Photo Paper Plus Semi-Gloss; -Matte: Canon Matte Photo Paper; -Fine Art: Canon Fine Art Paper "Photo Rag"; -Envelope: U.S.# 10 Envelope -*/ +/* new paper type from February 2014 */ +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 */ +}; +DECLARE_PAPERS(canon_PIXMA_iP8700); + +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 */ +}; +DECLARE_PAPERS(canon_PIXMA_iX6800); + +#endif diff --git a/src/main/canon-modes.h b/src/main/canon-modes.h index a21d324..b3f0ef1 100644 --- a/src/main/canon-modes.h +++ b/src/main/canon-modes.h @@ -147,7 +147,7 @@ static const canon_mode_t canon_BJC_30_modes[] = { { 360, 360,CANON_INK_K,"360x360dpi",N_("360x360 DPI"),INKSET(1_K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 180, 180,CANON_INK_K,"180x180dpi",N_("180x180 DPI"),INKSET(1_K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, }; -DECLARE_MODES(canon_BJC_30,2); +DECLARE_MODES(canon_BJC_30,0); static const canon_mode_t canon_BJC_85_modes[] = { @@ -158,7 +158,7 @@ static const canon_mode_t canon_BJC_85_modes[] = { { 360, 360,CANON_INK_K | CANON_INK_CMYK | CANON_INK_CcMmYK, "360x360dpi",N_("360x360 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, }; -DECLARE_MODES(canon_BJC_85,2); +DECLARE_MODES(canon_BJC_85,0); /* we treat the printers that can either print in K or CMY as CMYK printers here by assigning a CMYK inkset */ @@ -168,7 +168,7 @@ static const canon_mode_t canon_BJC_210_modes[] = { { 180, 180,CANON_INK_K | CANON_INK_CMY,"180x180dpi",N_("180x180 DPI"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 90, 90,CANON_INK_K | CANON_INK_CMY,"90x90dpi",N_("90x90 DPI"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, }; -DECLARE_MODES(canon_BJC_210,3); +DECLARE_MODES(canon_BJC_210,0); static const canon_mode_t canon_BJC_240_modes[] = { @@ -178,14 +178,14 @@ static const canon_mode_t canon_BJC_240_modes[] = { { 180, 180,CANON_INK_K | CANON_INK_CMY,"180x180dpi",N_("180x180 DPI"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 90, 90,CANON_INK_K | CANON_INK_CMY,"90x90dpi",N_("90x90 DPI"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, }; -DECLARE_MODES(canon_BJC_240,4); +DECLARE_MODES(canon_BJC_240,0); static const canon_mode_t canon_BJC_2000_modes[] = { { 360, 360,CANON_INK_CMYK,"360x360dpi",N_("360x360 DPI"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 180, 180,CANON_INK_CMYK,"180x180dpi",N_("180x180 DPI"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, }; -DECLARE_MODES(canon_BJC_2000,1); +DECLARE_MODES(canon_BJC_2000,0); /* these printers only have CMYK, so CcMmYK is not required I think */ /* using color (CMYK) cartridge, some media use CMYK, others only use CMY --- need to check this as my test image lacked Y apparently */ @@ -200,7 +200,7 @@ static const canon_mode_t canon_BJC_3000_modes[] = { { 180, 180,CANON_INK_K | CANON_INK_CMYK | CANON_INK_CcMmYK,"180x180dpi",N_("180x180 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,0}, { 360, 360,CANON_INK_CMY | CANON_INK_CMYK | CANON_INK_CcMmYK,"360x360dpi_photo",N_("360x360 DPI PHOTO CARTRIDGE"),INKSET(6_C4M4Y4K4c4m4),8,MODE_FLAG_PHOTO,NULL,1.0,1.0,NULL,NULL,NULL,2}, }; -DECLARE_MODES(canon_BJC_3000,4); +DECLARE_MODES(canon_BJC_3000,1); /* these printers only have K and CMYK, so CcMmYK is not required */ /* using color (CMYK) cartridge, all media use CMYK */ @@ -216,7 +216,7 @@ static const canon_mode_t canon_BJC_4300_modes[] = { { 360, 360,CANON_INK_CMYK,"360x360dpi_photo",N_("360x360 DPI PHOTO CARTRIDGE"),INKSET(4_C4M4Y4K4),8,MODE_FLAG_PHOTO,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* there is another 720x360 mono mode */ }; -DECLARE_MODES(canon_BJC_4300,5); +DECLARE_MODES(canon_BJC_4300,1); static const canon_mode_t canon_BJC_4400_modes[] = { { 720, 360,CANON_INK_K | CANON_INK_CMYK | CANON_INK_CcMmYK, @@ -224,7 +224,7 @@ static const canon_mode_t canon_BJC_4400_modes[] = { { 360, 360,CANON_INK_K | CANON_INK_CMYK | CANON_INK_CcMmYK, "360x360dpi",N_("360x360 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, }; -DECLARE_MODES(canon_BJC_4400,1); +DECLARE_MODES(canon_BJC_4400,0); /* this seems to use different ESC (c bit for quality than pixma devices. */ /* these printers only have K, or (subset of) CMYK, so CcMmYK is not required. */ @@ -238,37 +238,53 @@ static const canon_mode_t canon_BJC_4550_modes[] = { { 180, 180,CANON_INK_K|CANON_INK_CMYK,"180x180dpi",N_("180x180 DPI"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 360, 360,CANON_INK_CMYK,"360x360dpi_photo",N_("360x360 DPI PHOTO CARTRIDGE"),INKSET(4_C4M4Y4K4),8,MODE_FLAG_PHOTO,NULL,1.0,1.0,NULL,NULL,NULL,1}, }; -DECLARE_MODES(canon_BJC_4550,4); +DECLARE_MODES(canon_BJC_4550,1); static const canon_mode_t canon_BJC_5500_modes[] = { { 360, 360,CANON_INK_CMYK | CANON_INK_CcMmYK,"360x360dpi",N_("360x360 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 180, 180,CANON_INK_CMYK | CANON_INK_CcMmYK,"180x180dpi",N_("180x180 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, }; -DECLARE_MODES(canon_BJC_5500,1); - +DECLARE_MODES(canon_BJC_5500,0); +/* HS mode: bi-directional + HQ mode (360x360): bi-directional + Fine mode (720x720): uni-directional + Fine mode (1440x720): uni-directional +*/ +/* added MODE_FLAG_PHOTO as a means to set ESC (t + requires setting for those modes that are not 1bpp + probably 4-bpp for photo mode, 2-bpp non-photo mode +*/ static const canon_mode_t canon_BJC_6000_modes[] = { - { 1440, 720,CANON_INK_CMYK | CANON_INK_CcMmYK,"1440x720dpi",N_("1440x720 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,delay_1440,0.5,1.0,NULL,NULL,NULL,2}, - { 720, 720,CANON_INK_CMYK | CANON_INK_CcMmYK,"720x720dpi",N_("720x720 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 360, 360,CANON_INK_CMYK | CANON_INK_CcMmYK,"360x360dpi",N_("360x360 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.8,1.0,NULL,NULL,NULL,2}, - { 360, 360,CANON_INK_CMYK | CANON_INK_CcMmYK,"360x360dmt",N_("360x360 DPI DMT"),INKSET(6_C4M4Y4K4c4m4),8,0,NULL,1.8,1.0,NULL,NULL,NULL,2}, -}; -DECLARE_MODES(canon_BJC_6000,3); - + /* Color/Black cartidge modes */ + { 1440, 720,CANON_INK_CMYK|CANON_INK_CMY|CANON_INK_K,"1440x720dpi",N_("1440x720 DPI"),INKSET(4_C2M2Y2K2),8,0,delay_1440,0.5,1.0,NULL,NULL,NULL,2}, + { 720, 720,CANON_INK_CMYK|CANON_INK_CMY|CANON_INK_K,"720x720dpi",N_("720x720 DPI"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 360, 360,CANON_INK_CMYK|CANON_INK_CMY|CANON_INK_K,"360x360dpi_high",N_("360x360 DPI HIGH"),INKSET(4_C2M2Y2K2),8,0,NULL,1.8,1.0,NULL,NULL,NULL,2}, + { 360, 360,CANON_INK_CMYK|CANON_INK_K,"360x360dpi",N_("360x360 DPI"),INKSET(4_C2M2Y2K2),8,0,NULL,1.8,1.0,NULL,NULL,NULL,1},/* 1bpp */ + { 360, 360,CANON_INK_CMYK|CANON_INK_K,"360x360dmt",N_("360x360 DPI DMT"),INKSET(4_C4M4Y4K4),8,0,NULL,1.8,1.0,NULL,NULL,NULL,2},/* unknown mode */ + { 180, 180,CANON_INK_CMYK|CANON_INK_K,"180x180dpi",N_("180x180 DPI"),INKSET(4_C2M2Y2K2),8,0,NULL,1.8,1.0,NULL,NULL,NULL,0},/* 1bpp */ + /* Photo cartridge modes */ + { 1440, 720,CANON_INK_CcMmYK|CANON_INK_CMYK|CANON_INK_CMY|CANON_INK_K,"1440x720dpi_photo",N_("1440x720 DPI PHOTO"),INKSET(6_C4M4Y4K4c4m4),8,MODE_FLAG_PHOTO,delay_1440,0.5,1.0,NULL,NULL,NULL,2}, + { 720, 720,CANON_INK_CcMmYK|CANON_INK_CMYK|CANON_INK_CMY|CANON_INK_K,"720x720dpi_photo",N_("720x720 DPI PHOTO"),INKSET(6_C4M4Y4K4c4m4),8,MODE_FLAG_PHOTO,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 360, 360,CANON_INK_CcMmYK|CANON_INK_CMYK|CANON_INK_CMY|CANON_INK_K,"360x360dpi_highphoto",N_("360x360 DPI HIGH PHOTO"),INKSET(6_C4M4Y4K4c4m4),8,MODE_FLAG_PHOTO,NULL,1.8,1.0,NULL,NULL,NULL,2}, + { 360, 360,CANON_INK_CcMmYK|CANON_INK_CMYK|CANON_INK_K,"360x360dpi_photo",N_("360x360 DPI PHOTO"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.8,1.0,NULL,NULL,NULL,1},/* 1bpp - double the data as for non-photo, maybe uses weaving? */ + { 180, 180,CANON_INK_CMYK|CANON_INK_K,"180x180dpi_photo",N_("180x180 DPI PHOTO"),INKSET(4_C2M2Y2K2),8,0,NULL,1.8,1.0,NULL,NULL,NULL,0},/* 1bpp - same as non-photo */ +}; +DECLARE_MODES(canon_BJC_6000,1); static const canon_mode_t canon_BJC_7000_modes[] = { { 1200, 600,CANON_INK_CMYK | CANON_INK_CcMmYyK,"1200x600dpi",N_("1200x600 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,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}, { 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}, }; -DECLARE_MODES(canon_BJC_7000,2); +DECLARE_MODES(canon_BJC_7000,1); static const canon_mode_t canon_BJC_7100_modes[] = { { 1200, 600,CANON_INK_CMYK | CANON_INK_CcMmYyK,"1200x600dpi",N_("1200x600 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,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.0,1.0,NULL,NULL,NULL,2}, { 300, 300,CANON_INK_CMYK | CANON_INK_CcMmYyK,"300x300dpi",N_("300x300 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, }; -DECLARE_MODES(canon_BJC_7100,2); +DECLARE_MODES(canon_BJC_7100,1); /* 50i sold as i70 outside of Japan */ static const canon_mode_t canon_BJC_i50_modes[] = { @@ -830,14 +846,14 @@ static const canon_mode_t canon_BJC_8200_modes[] = { { 300, 300,CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, }; -DECLARE_MODES(canon_BJC_8200,2); +DECLARE_MODES(canon_BJC_8200,1); static const canon_mode_t canon_BJC_8500_modes[] = { { 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}, { 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}, }; -DECLARE_MODES(canon_BJC_8500,1); +DECLARE_MODES(canon_BJC_8500,0); static const canon_mode_t canon_S200_modes[] = { @@ -850,7 +866,7 @@ static const canon_mode_t canon_S200_modes[] = { { 360, 360,CANON_INK_CMYK | CANON_INK_CMY | CANON_INK_K, "360x360dpi",N_("360x360 DPI"),INKSET(4_C2M2Y2K2),8,0,delay_S200,2.0,1.0,NULL,NULL,NULL,2}, }; -DECLARE_MODES(canon_S200,3); +DECLARE_MODES(canon_S200,2); static const canon_mode_t canon_BJC_S300_modes[] = { /* original two modes */ @@ -1935,9 +1951,13 @@ DECLARE_MODES(canon_MULTIPASS_MX360,1); static const canon_mode_t canon_MULTIPASS_MX370_modes[] = { /* plain modes */ - { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C4M4Y3K4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 300, 300,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_COLOR|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,1}, + { 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_K|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,1}, + /* color-only */ + { 600, 600,CANON_INK_CMY,"600x600dpi_high3",N_("600x600 DPI HIGH COLOR-ONLY"),INKSET(13_C3M3Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMY,"600x600dpi_std3",N_("600x600 DPI STD COLOR-ONLY"),INKSET(13_C3M3Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi_draft3",N_("300x300 DPI COLOR-ONLY"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,1}, /* photo modes */ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGHEST proPlat"),INKSET(13_C14M14Y14c14m14y14),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,4}, /* CMYcmy, cmy less 0x60 */ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3}, @@ -1990,9 +2010,13 @@ DECLARE_MODES(canon_MULTIPASS_MX420,1); static const canon_mode_t canon_MULTIPASS_MX510_modes[] = { /* plain modes --- try to use based on inkset definitions */ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C4M4Y3K4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI HIGH (duplex)"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 300, 300,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_COLOR|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,1}, + { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI HIGH (duplex)"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T,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,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,NULL,1.0,1.0,NULL,NULL,NULL,1}, + /* color-only */ + { 600, 600,CANON_INK_CMY,"600x600dpi_high4",N_("600x600 DPI HIGH COLOR-ONLY"),INKSET(13_C3M3Y2),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 COLOR-ONLY"),INKSET(13_C3M3Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 300, 300,CANON_INK_CMY,"300x300dpi_std4",N_("300x300 DPI COLOR-ONLY"),INKSET(13_C2M2Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,1}, /* photo modes */ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGHEST proPlat"),INKSET(13_C14M14Y14c14m14y14),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,4}, /* CMYcmy, cmy less 0x60 */ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3}, @@ -2005,6 +2029,46 @@ static const canon_mode_t canon_MULTIPASS_MX510_modes[] = { }; DECLARE_MODES(canon_MULTIPASS_MX510,2); +static const canon_mode_t canon_MULTIPASS_MP230_modes[] = { + /* plain modes */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C4M4Y3K3),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K2),8,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(13_C3M3Y2K2),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/*untested*/ + { 300, 300,CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, + { 300, 300,CANON_INK_CMYK,"300x300dpi_draft",N_("300x300 DPI DRAFT"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},/*untested*/ + /* mono modes */ + { 600, 600,CANON_INK_K,"600x600dpi_highmono",N_("600x600 DPI HIGH MONO"),INKSET(13_K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_K,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(13_K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_K,"600x600dpi_draftmono",N_("600x600 DPI DRAFT MONO"),INKSET(13_K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,1},/*untested*/ + { 300, 300,CANON_INK_K,"300x300dpi_mono",N_("300x300 DPI MONO"),INKSET(13_K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,1}, + { 300, 300,CANON_INK_K,"300x300dpi_draftmono",N_("300x300 DPI DRAFT MONO"),INKSET(13_K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,0},/*untested*/ + /* color-only */ + { 600, 600,CANON_INK_CMY,"600x600dpi_high3",N_("600x600 DPI HIGH COLOR-ONLY"),INKSET(13_C3M3Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMY,"600x600dpi_std3",N_("600x600 DPI COLOR-ONLY"),INKSET(13_C3M3Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMY,"600x600dpi_draft3",N_("600x600 DPI DRAFT COLOR-ONLY"),INKSET(13_C3M3Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,1},/*untested*/ + { 300, 300,CANON_INK_CMY,"300x300dpi_std3",N_("300x300 DPI COLOR-ONLY"),INKSET(13_C2M2Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,1}, + { 300, 300,CANON_INK_CMY,"300x300dpi_draft3",N_("300x300 DPI DRAFT COLOR-ONLY"),INKSET(13_C2M2Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,0},/*untested*/ + /* photo modes */ + { 1200, 1200,CANON_INK_CMY,"1200x1200dpi_photohigh2",N_("1200x1200 DPI PHOTO HIGHEST proPlat"),INKSET(13_c3m3y3),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,4}, /* cmy: subtract 0x60 */ + { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMY,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMY,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,1},/*untested*/ + /* TST */ + { 600, 600,CANON_INK_CMY,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3}, + /* Env/Hagaki */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C4M4Y3K3),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI Env/Hagaki"),INKSET(13_C3M3Y2K2),8,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(13_C3M3Y2K2),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/*untested*/ + { 600, 600,CANON_INK_K,"600x600dpi_highmono2",N_("600x600 DPI HIGH MONO Env/Hagaki"),INKSET(13_K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_K,"600x600dpi_mono2",N_("600x600 DPI MONO Env/Hagaki"),INKSET(13_K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_K,"600x600dpi_draftmono2",N_("600x600 DPI DRAFT MONO Env/Hagaki"),INKSET(13_K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,1},/*untested*/ + /* Env/Hagaki color-only modes */ + { 600, 600,CANON_INK_CMY,"600x600dpi_high4",N_("600x600 DPI HIGH Env/Hagaki COLOR-ONLY"),INKSET(13_C3M3Y2),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 Env/Hagaki COLOR-ONLY"),INKSET(13_C3M3Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMY,"600x600dpi_draft4",N_("600x600 DPI DRAFT Env/Hagaki COLOR-ONLY"),INKSET(13_C3M3Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,1},/*untested*/ +}; +DECLARE_MODES(canon_MULTIPASS_MP230,1); + static const canon_mode_t canon_MULTIPASS_MP240_modes[] = { /* plain color modes */ { 600, 600,CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C4M4Y3K3),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, @@ -2295,14 +2359,14 @@ static const canon_mode_t canon_MULTIPASS_MP540_modes[] = { { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi_draft",N_("300x300 DPI DRAFT"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0}, /* photo modes */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* inkjet Hagaki */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, /* 16 */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI PHOTO inkjet Hagaki"),INKSET(13_C5M5Y4y4),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},/* 8 not 16 */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, /* 16 */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI PHOTO inkjet Hagaki"),INKSET(13_C5M5Y4k4),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},/* 8 not 16 */ /* T-Shirt --- same as photo high */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, /* Env/Hagaki */ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high2",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K2k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_std2",N_("600x600 DPI Env/Hagaki"),INKSET(13_C3M3Y2K2k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, @@ -2316,15 +2380,15 @@ static const canon_mode_t canon_MULTIPASS_MP550_modes[] = { { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K2y3_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, /* photo modes */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4y4),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 2"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT 2"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */ /* inkjet Hagaki */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* T-shirt --- same as photo high */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, /* Env/Hagaki */ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high2",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K2k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_std2",N_("600x600 DPI Env/Hagaki"),INKSET(13_C3M3Y2K2k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, @@ -2339,15 +2403,15 @@ static const canon_mode_t canon_MULTIPASS_MP560_modes[] = { { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K2y3_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, /* photo modes */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */ /* inkjet Hagaki */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* T-shirt --- same as photo high */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, /* Env/Hagaki */ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K2k3on_c),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(13_C3M3Y2K2k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, @@ -2385,15 +2449,15 @@ static const canon_mode_t canon_MULTIPASS_MP640_modes[] = { { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi_draft",N_("300x300 DPI DRAFT"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},/* untested */ /* photo modes */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/*untested*/ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/*untested*/ /* inkjet Hagaki / CD */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjetHagaki/CD"),INKSET(13_C5M5Y4y4),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 inkjetHagaki/CD"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjetHagaki/CD"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjetHagaki/CD"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* T-Shirt --- same as photo high */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, /* Env/Hagaki CMYKk */ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K2k3on_c),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(13_C3M3Y2K2k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, @@ -2538,20 +2602,39 @@ static const canon_mode_t canon_MULTIPASS_MX710_modes[] = { { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, /* photo modes CMYk */ /*highest proPlat mode unsupported */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* inkjet Hagaki CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* T-Shirt CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, /* Env/Hagaki CMYKk */ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K2k3on_c),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(13_C3M3Y2K2k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, }; DECLARE_MODES(canon_MULTIPASS_MX710,2); +static const canon_mode_t canon_PIXMA_MX720_modes[] = { + /* plain - used for mono also. For duplex use CMYKk */ + { 600, 600,CANON_INK_CMYK|CANON_INK_K,"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_CMYKk,"600x600dpi_high2",N_("600x600 DPI HIGH (Duplex)"),INKSET(13_C3M3Y2K3k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYKk|CANON_INK_CMYK|CANON_INK_K,"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}, + { 600, 600,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}, + { 300, 300,CANON_INK_CMYKk|CANON_INK_CMYK|CANON_INK_K,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, + /* photo CMYk */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH inkjetHagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI PHOTO inkjetHagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* Env/Hagaki */ + { 600, 600,CANON_INK_CMYKk|CANON_INK_K,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K3k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYKk|CANON_INK_K,"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}, +}; +DECLARE_MODES(canon_PIXMA_MX720,2); + /* MX860 --- similar to iP4500 */ static const canon_mode_t canon_MULTIPASS_MX860_modes[] = { /* plain modes --- duplex same CMYK */ @@ -2562,14 +2645,14 @@ static const canon_mode_t canon_MULTIPASS_MX860_modes[] = { { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi_draft",N_("300x300 DPI DRAFT"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0}, /* photo modes CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* inkjet Hagaki CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* T-Shirt CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, /* Env/Hagaki CMYKk */ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K2k3on_c),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(13_C3M3Y2K2k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, @@ -2586,20 +2669,39 @@ static const canon_mode_t canon_MULTIPASS_MX880_modes[] = { { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi_draft",N_("300x300 DPI DRAFT"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0}, /* photo modes */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* inkjet Hagaki */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, /* 16 */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI PHOTO inkjet Hagaki"),INKSET(13_C5M5Y4y4),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},/* 8 not 16 */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, /* 16 */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI PHOTO inkjet Hagaki"),INKSET(13_C5M5Y4k4),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},/* 8 not 16 */ /* T-Shirt --- same as photo high */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, /* Env/Hagaki */ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K2k3on_c),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(13_C3M3Y2K2k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, }; DECLARE_MODES(canon_MULTIPASS_MX880,1); +static const canon_mode_t canon_PIXMA_MX920_modes[] = { + /* plain - used for mono also. For duplex use CMYKk */ + { 600, 600,CANON_INK_CMYK|CANON_INK_K,"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_CMYKk,"600x600dpi_high2",N_("600x600 DPI HIGH (Duplex)"),INKSET(13_C3M3Y2K3k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYKk|CANON_INK_CMYK|CANON_INK_K,"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}, + { 600, 600,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}, + { 300, 300,CANON_INK_CMYKk|CANON_INK_CMYK|CANON_INK_K,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, + /* photo CMYk */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH CD/inkjetHagaki"),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_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI PHOTO CD/inkjetHagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* Env/Hagaki */ + { 600, 600,CANON_INK_CMYKk|CANON_INK_K,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K3k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYKk|CANON_INK_K,"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}, +}; +DECLARE_MODES(canon_PIXMA_MX920,2); + static const canon_mode_t canon_MULTIPASS_MX7600_modes[] = { /* plain modes CMYK --- duplex same */ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C6M6Y4K3k4_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, @@ -2641,14 +2743,14 @@ static const canon_mode_t canon_PIXMA_iP4500_modes[] = { { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi_draft",N_("300x300 DPI DRAFT"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0}, /* photo modes CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(13_C4M4Y4K2c4m4y4on2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C4M4Y4K2c4m4y4on2),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 Plus/PlusGlossyII"),INKSET(13_C8M8Y4y4),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 Plus/PlusGlossyII"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1}, /* inkjet Hagaki CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft3",N_("600x600 DPI DRAFT inkjet Hagaki"),INKSET(13_C3M3Y2K2k3photo_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1}, /* CD CMYcmk */ { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH CD"),INKSET(13_C4M4Y4K2c4m4y4on2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, @@ -2671,22 +2773,22 @@ static const canon_mode_t canon_PIXMA_iP4600_modes[] = { { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi_draft",N_("300x300 DPI DRAFT"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0}, /* Photo modes CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI HIGH PHOTO/CD"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO matte/HiRes/CD"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT/CD"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},/*untested*/ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH 2"),INKSET(13_C6M6Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},/*untested*/ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT 2"),INKSET(13_C6M6Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/*untested*/ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI HIGH PHOTO/CD"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO matte/HiRes/CD"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT/CD"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},/*untested*/ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH 2"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},/*untested*/ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT 2"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/*untested*/ /* inkjet Hagaki CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft3",N_("600x600 DPI DRAFT inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/*untested*/ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft3",N_("600x600 DPI DRAFT inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/*untested*/ /* Hagaki and Env modes used K and k both */ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K2k3on_c),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(13_C3M3Y2K2k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_draft3",N_("600x600 DPI DRAFT Env/Hagaki"),INKSET(13_C3M3Y2K2k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},/*untested*/ /* T-Shirt CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI HIGH T-SHIRT"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI HIGH T-SHIRT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, }; DECLARE_MODES(canon_PIXMA_iP4600,1); @@ -2697,20 +2799,20 @@ static const canon_mode_t canon_PIXMA_iP4700_modes[] = { { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K2y3_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, /* photo modes CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* inkjet hagaki CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* CD CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH CD"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo4",N_("600x600 DPI CD"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH CD"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo4",N_("600x600 DPI CD"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* Env/Hagaki CMYKk */ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K2k3on_c),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(13_C3M3Y2K2k3on_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_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, }; DECLARE_MODES(canon_PIXMA_iP4700,2); @@ -2724,17 +2826,17 @@ static const canon_mode_t canon_PIXMA_iP4900_modes[] = { /* draft */ { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, /* photo modes CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* CD CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH CD"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI CD"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH CD"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI CD"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* inkjet Hagaki CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo4",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo4",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* T-Shirt CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, }; DECLARE_MODES(canon_PIXMA_iP4900,1); @@ -2746,14 +2848,14 @@ static const canon_mode_t canon_PIXMA_iP5300_modes[] = { { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1}, { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi_draft",N_("300x300 DPI DRAFT"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,0}, /* photo modes */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(13_C4M4Y4K2c4m4y4on2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C4M4Y4K2c4m4y4on2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */ /* inkjet Hagaki CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft3",N_("600x600 DPI DRAFT inkjet Hagaki"),INKSET(13_C3M3Y2K2k3photo_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1}, /* CD CMYcmk */ { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH CD"),INKSET(13_C4M4Y4K2c4m4y4on2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, @@ -2775,14 +2877,14 @@ static const canon_mode_t canon_MULTIPASS_MP610_modes[] = { { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi_draft",N_("300x300 DPI DRAFT"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0}, /* photo modes */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(13_C4M4Y4K2c4m4y4on2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C4M4Y4K2c4m4y4on2),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 plusGlossy/GlossGold"),INKSET(13_C8M8Y4y4),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 plusGlossy/GlossGold"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1}, /* inkjet Hagaki CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft3",N_("600x600 DPI DRAFT inkjet Hagaki"),INKSET(13_C3M3Y2K2k3photo_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1}, /* CD CMYcmk */ { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH CD"),INKSET(13_C4M4Y4K2c4m4y4on2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, @@ -2827,16 +2929,16 @@ static const canon_mode_t canon_MULTIPASS_MP810_modes[] = { { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1}, { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi_draft",N_("300x300 DPI DRAFT"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,0}, /* Photo modes CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */ /* Photo modes CMYcmk */ { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH 2 / CD"),INKSET(13_C4M4Y4K2c4m4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO 2 / CD"),INKSET(13_C4M4Y4K2c4m4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT 2 / CD"),INKSET(13_C4M4Y4K2c4m4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1}, /* inkjet Hagaki CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C8M8Y4k4),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 inkjet Hagaki"),INKSET(13_C3M3Y2K2k3photo_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(13_C4M4Y4K2c4m4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, @@ -3245,6 +3347,25 @@ static const canon_mode_t canon_PIXMA_iP7100_modes[] = { }; DECLARE_MODES(canon_PIXMA_iP7100,2); +static const canon_mode_t canon_PIXMA_iP7200_modes[] = { + /* plain - used for mono also. For duplex use CMYKk */ + { 600, 600,CANON_INK_CMYK|CANON_INK_K,"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_CMYKk,"600x600dpi_high2",N_("600x600 DPI HIGH (Duplex)"),INKSET(13_C3M3Y2K3k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK|CANON_INK_K,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K3k3_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,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}, + { 300, 300,CANON_INK_CMYK|CANON_INK_K,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, + /* photo CMYk */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH CD/inkjetHagaki/HiRes"),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_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI PHOTO CD/inkjetHagaki/HiRes"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* Env/Hagaki */ + { 600, 600,CANON_INK_CMYKk|CANON_INK_K,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K3k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYKk|CANON_INK_K,"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}, +}; +DECLARE_MODES(canon_PIXMA_iP7200,2); + static const canon_mode_t canon_PIXMA_iP7500_modes[] = { { 600, 600,CANON_INK_CMYK|CANON_INK_K,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(19_C6M6Y4K2c6m6k4off),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(19_C3M3Y3K2k3off),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, @@ -3435,8 +3556,23 @@ static const canon_mode_t canon_PIXMA_MG2100_modes[] = { }; DECLARE_MODES(canon_PIXMA_MG2100,1); -static const canon_mode_t canon_PIXMA_MG3100_modes[] = { +static const canon_mode_t canon_PIXMA_MG2400_modes[] = { /* plain modes */ + { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C3M3Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI (incl. T-shirt)"),INKSET(13_C3M3Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 300, 300,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,1}, + /* Photo modes */ + { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGHEST glossGold"),INKSET(13_C14M14Y14c14m14y14),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,4}, + { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMY,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* Env/Hagaki modes */ + { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_high2",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_std2",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_MG2400,1); + +static const canon_mode_t canon_PIXMA_MG3100_modes[] = { + /* plain modes - borderless uses CMY */ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C4M4Y3K4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,3}, { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high5",N_("600x600 DPI HIGH (duplex)"),INKSET(13_C3M3Y2K3),8,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(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, @@ -3455,7 +3591,7 @@ static const canon_mode_t canon_PIXMA_MG3100_modes[] = { { 600, 600,CANON_INK_CMY,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* T-Shirt */ { 600, 600,CANON_INK_CMY,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3}, - /* Env/Hagaki modes */ + /* Env/Hagaki modes - borderless uses CMY */ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 600, 600,CANON_INK_K,"600x600dpi_highmono3",N_("600x600 DPI MONO HIGH Env/Hagaki"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,3}, @@ -3466,6 +3602,25 @@ static const canon_mode_t canon_PIXMA_MG3100_modes[] = { }; DECLARE_MODES(canon_PIXMA_MG3100,1); +/* same as MG3100, but try to use inktypes to control use of inks in inkets */ +static const canon_mode_t canon_PIXMA_MG3500_modes[] = { + /* plain modes - borderless uses CMY */ + { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C4M4Y3K4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX|MODE_FLAG_BLACK|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_high5",N_("600x600 DPI HIGH (duplex)"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 300, 300,CANON_INK_CMY,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,1}, + /* Photo modes */ + { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGHEST proPlat"),INKSET(13_C14M14Y14c14m14y14),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,4}, + { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMY,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* T-Shirt */ + { 600, 600,CANON_INK_CMY,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3}, + /* Env/Hagaki modes - borderless uses CMY */ + { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2}, +}; +DECLARE_MODES(canon_PIXMA_MG3500,1); + static const canon_mode_t canon_PIXMA_MG5100_modes[] = { /* plain modes --- duplex no mono */ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C6M6Y4K2y4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,3}, @@ -3496,20 +3651,20 @@ static const canon_mode_t canon_PIXMA_MG5200_modes[] = { { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi_draft",N_("300x300 DPI DRAFT"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},/*untested*/ /* photo modes CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* inkjet hagaki CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* CD CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH CD"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo4",N_("600x600 DPI CD"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH CD"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo4",N_("600x600 DPI CD"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* Env/Hagaki CMYKk */ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K2k3on_c),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(13_C3M3Y2K2k3on_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_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, }; DECLARE_MODES(canon_PIXMA_MG5200,2); @@ -3523,20 +3678,38 @@ static const canon_mode_t canon_PIXMA_MG5300_modes[] = { /* draft */ { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, /* photo modes CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* CD CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH CD"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI CD"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH CD"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI CD"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* inkjet hagaki CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, - { 600, 600,CANON_INK_CMYK,"600x600dpi_photo4",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4y4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo4",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* T-Shirt CMYk */ - { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, }; DECLARE_MODES(canon_PIXMA_MG5300,1); +/* borderless: plain (qlty 2 only), hagaki (qlty 3 and 2) use std mode with CMYk, those with photo modes unchanged. No env, HiRes, TST for borderless */ +static const canon_mode_t canon_PIXMA_MG5500_modes[] = { + /* plain modes -- B/W also */ + { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C4M4Y4K3k4off_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K3k3_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* Duplex/Env/Hagaki CMYKk */ + { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high2",N_("600x600 DPI HIGH duplex/Env/Hagaki"),INKSET(13_C3M3Y2K3k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_std2",N_("600x600 DPI duplex/Env/Hagaki"),INKSET(13_C3M3Y2K3k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* draft */ + { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, + /* photo modes CMYk */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes/T-shirt"),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"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, +}; +DECLARE_MODES(canon_PIXMA_MG5500,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 */ @@ -3588,6 +3761,30 @@ static const canon_mode_t canon_PIXMA_MG6200_modes[] = { DECLARE_MODES(canon_PIXMA_MG6200,1); /* for this printer most photo modes have grey (H) ink. */ +/* borderless: plain (qlty 2 only), hagaki (qlty 3 and 2) use std mode with CMYk, those with photo modes unchanged. No env, HiRes, TST for borderless */ +static const canon_mode_t canon_PIXMA_MG6500_modes[] = { + /* plain modes --- duplex no mono CMYK */ + { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(30_K3C6M6Y4k4off_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(30_K3C3M3Y2k3_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* Duplex/Env/Hagaki CMYKk */ + { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high2",N_("600x600 DPI HIGH duplex/Env/Hagaki"),INKSET(30_K3C3M3Y2k3_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_std2",N_("600x600 DPI duplex/Env/Hagaki"),INKSET(30_K3C3M3Y2k3_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* draft */ + { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(30_K2C2M2Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1}, + /* photo modes CMYk */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH matte/HiRes/T-shirt"),INKSET(30_M8K8m4k4H8off),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(30_M8K8m4k4H8off),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO other"),INKSET(30_M6K6m4k4H6off),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* CD CMYk */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH CD"),INKSET(30_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI CD"),INKSET(30_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* inkjet hagaki CMYk */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(30_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo4",N_("600x600 DPI inkjet Hagaki"),INKSET(30_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, +}; +DECLARE_MODES(canon_PIXMA_MG6500,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 08b86f1..c2f9232 100644 --- a/src/main/canon-printers.h +++ b/src/main/canon-printers.h @@ -239,6 +239,12 @@ static const char* control_cmd_PIXMA_MG5300[] = { NULL }; +static const char* control_cmd_PIXMA_MG3500[] = { +/*"SetTime=20060722092503", */ /*what is this for?*/ + "ForcePWDetection=OFF", + NULL +}; + static const char iP4500_channel_order[STP_NCOLORS] = {1,2,3,0}; /* CMYK */ static const canon_cap_t canon_model_capabilities[] = @@ -649,12 +655,12 @@ static const canon_cap_t canon_model_capabilities[] = { /* Canon BJC 6000 *//* heads: BC-30/BC-31 BC-32/BC-31 */ "6000", 3, - 618, 936, /* 8.58" x 13 " */ - 11, 9, 10, 18, /* unconfirmed */ + 618, 4745, /* 8.58" x 65.9" (banner paper) */ + 10, 10, 9, 20, /* l 3.4mm r 3.4mm t 3mm b 7mm */ &canon_default_slotlist, - CANON_CAP_STD1,0, + CANON_CAP_STD1 | CANON_CAP_cart,0, 2,0, - control_cmd_ackshort, + control_cmd_BJC_i6100, &canon_BJC_6000_modelist, &canon_default_paperlist, &canon_BJC_6000_modeuselist, @@ -683,12 +689,12 @@ static const canon_cap_t canon_model_capabilities[] = { /* Canon BJC 6500 *//* heads: BC-30/BC-31 BC-32/BC-31 */ "6500", 3, - 842, INCH(17), - 11, 9, 10, 18, /* unconfirmed */ + 821, INCH(17), /* printing width: 289,6mm = 11.4" = 821 points */ + 10, 10, 9, 15, /* l 3.4mm r 3.4mm t 3mm b 5mm */ &canon_default_slotlist, - CANON_CAP_STD1,0, + CANON_CAP_STD1 | CANON_CAP_cart,0, 2,0, - NULL, + control_cmd_BJC_i6100, &canon_BJC_6000_modelist, &canon_default_paperlist, &canon_BJC_6000_modeuselist, @@ -1305,7 +1311,7 @@ static const canon_cap_t canon_model_capabilities[] = }, { /* Canon PIXMA iP100 */ "PIXMA iP100", 3, /*model, model_id*/ - INCH(17/2), INCH(23), /* max paper width and height */ /* from MacOSX driver */ + INCH(17/2), INCH(23), /* max paper width and height */ /* from MacOSX driver, and linux driver v3.70 */ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ &canon_MULTIPASS_MP150_slotlist, CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_T|CANON_CAP_NOBLACK|CANON_CAP_S|CANON_CAP_BORDERLESS,0, @@ -1818,6 +1824,22 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, + { /* Canon PIXMA iP7200 CD-R tray J */ + "PIXMA iP7200", 3, /*model, model_id*/ + INCH(17/2), INCH(14), /* max paper width and height */ /* from linux driver v3.80 */ + 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ + &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 */ + control_cmd_PIXMA_MG5300, /* features Uses ESC (r only for CD media */ + &canon_PIXMA_iP7200_modelist, + &canon_PIXMA_MG5400_paperlist, + &canon_PIXMA_iP7200_modeuselist, + NULL, + NULL, + NULL, + iP4500_channel_order + }, { /* Canon PIXMA iX4000 --- like iX5000 but includes Transparency and ud1 mode is different */ "PIXMA iX4000", 3, /*model, model_id*/ 933, INCH(23), /* max paper width and height */ /* from MacOSX driver */ @@ -2170,7 +2192,7 @@ static const canon_cap_t canon_model_capabilities[] = NULL, NULL, NULL, - NULL + iP4500_channel_order }, { /* Canon PIXMA Pro9500 Mk.II */ "PIXMA Pro9502", 3, /*model, model_id*/ @@ -2186,7 +2208,7 @@ static const canon_cap_t canon_model_capabilities[] = NULL, NULL, NULL, - NULL + iP4500_channel_order }, { /* Canon PIXMA iP7100 */ "PIXMA iP7100", 3, /*model, model_id*/ @@ -2444,6 +2466,22 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, + { /* Canon MULTIPASS MP230 --- with XML no borderless but leave it in as untested */ + "PIXMA MP230", 3, /*model, model_id*/ + INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.80 */ + 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ + &canon_MULTIPASS_MP250_slotlist, /* these models only have a rear tray. Also uses CAP_T */ + CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_T|CANON_CAP_XML|CANON_CAP_BORDERLESS,0, /* borderless not in Windows driver---untested */ + 3,9, /* ESC (l and (P command lengths */ + control_cmd_PIXMA_MG5300, /*features */ + &canon_MULTIPASS_MP230_modelist, + &canon_PIXMA_MG3200_paperlist, + &canon_MULTIPASS_MP230_modeuselist, + NULL, + NULL, + NULL, + iP4500_channel_order + }, { /* Canon MULTIPASS MP240 */ "PIXMA MP240", 3, /*model, model_id*/ INCH(17/2), 1917, /* max paper width and height */ /* from MacOSX driver */ @@ -2524,6 +2562,38 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, + { /* Canon PIXMA MG2200 */ + "PIXMA MG2200", 3, /*model, model_id*/ + INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.80 */ + 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ + &canon_PIXMA_MG2100_slotlist, + CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_T|CANON_CAP_XML|CANON_CAP_BORDERLESS,0, + 3,9, /* ESC (l and (P command lengths */ + control_cmd_PIXMA_MG5300, /* features Also uses CAP_T */ + &canon_PIXMA_MG2100_modelist, + &canon_PIXMA_MG3200_paperlist, + &canon_PIXMA_MG2200_modeuselist, + NULL, + NULL, + NULL, + iP4500_channel_order + }, + { /* Canon PIXMA MG2400 */ + "PIXMA MG2400", 3, /*model, model_id*/ + INCH(17/2), 1917, /* max paper width and height */ /* not confirmed yet */ + 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ + &canon_MULTIPASS_MP250_slotlist, + CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_T|CANON_CAP_v|CANON_CAP_XML,0, + 3,9, /* ESC (l and (P command lengths */ + control_cmd_PIXMA_MG5300, /* features Also uses CAP_T */ + &canon_PIXMA_MG2400_modelist, + &canon_PIXMA_MG2400_paperlist, + &canon_PIXMA_MG2400_modeuselist, + NULL, + NULL, + NULL, + iP4500_channel_order + }, { /* Canon PIXMA MG3100 */ "PIXMA MG3100", 3, /*model, model_id*/ INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.60 */ @@ -2540,6 +2610,38 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, + { /* Canon PIXMA MG3200 */ + "PIXMA MG3200", 3, /*model, model_id*/ + INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.80 */ + 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_XML|CANON_CAP_BORDERLESS,0, + 3,9, /* ESC (l and (P command lengths */ + control_cmd_PIXMA_MG5300, /* features: also uses CAP_T */ + &canon_PIXMA_MG3100_modelist, + &canon_PIXMA_MG3200_paperlist, + &canon_PIXMA_MG3200_modeuselist, + NULL, + NULL, + NULL, + iP4500_channel_order + }, + { /* Canon PIXMA MG3500 */ + "PIXMA MG3500", 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 */ + control_cmd_PIXMA_MG3500, /* features: also uses CAP_T */ + &canon_PIXMA_MG3500_modelist, /* same as MG3100 but try to use inktypes to control use of inks in inksets */ + &canon_PIXMA_MG3200_paperlist, /* Canon Photo Hagaki changed to merely Photo Hagaki in Windows driver */ + &canon_PIXMA_MG3500_modeuselist,/* same as MG3200 but try to use inktypes to control use of inks in inksets */ + 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 */ @@ -2588,6 +2690,38 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, + { /* Canon PIXMA MG5400 */ + "PIXMA MG5400", 3, /*model, model_id*/ + INCH(17/2), INCH(14), /* max paper width and height */ /* from linux drver v3.80 */ + 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ + &canon_PIXMA_MG5400_slotlist, /* ESC (r only for CD media */ + CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_v|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0, + 3,9, /* ESC (l and (P command lengths */ + control_cmd_PIXMA_MG5300, /* features */ + &canon_PIXMA_MG5300_modelist, + &canon_PIXMA_MG5400_paperlist, + &canon_PIXMA_MG5400_modeuselist, + NULL, + NULL, + NULL, + iP4500_channel_order + }, + { /* Canon PIXMA MG5500 */ + "PIXMA MG5500", 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_MG2100_slotlist, + CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_v|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0, + 3,9, /* ESC (l and (P command lengths */ + control_cmd_PIXMA_MG3500, + &canon_PIXMA_MG5500_modelist, + &canon_PIXMA_MG3200_paperlist, /* Canon Photo Hagaki changed to merely Photo Hagaki in Windows driver */ + &canon_PIXMA_MG5500_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 */ @@ -2620,6 +2754,38 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, + { /* Canon PIXMA MG6300 */ + "PIXMA MG6300", 3, /*model, model_id*/ + INCH(17/2), INCH(14), /* max paper width and height */ /* from linux driver v3.80 */ + 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ + &canon_PIXMA_MG5400_slotlist, /* ESC (r only for CD media */ + CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_v|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0, + 3,9, /* ESC (l and (P command lengths */ + control_cmd_PIXMA_MG5300, /* features */ + &canon_PIXMA_MG6200_modelist, + &canon_PIXMA_MG6300_paperlist, + &canon_PIXMA_MG6300_modeuselist, + NULL, + NULL, + NULL, + iP4500_channel_order + }, + { /* Canon PIXMA MG6500 */ + "PIXMA MG6500", 3, /*model, model_id*/ + INCH(17/2), INCH(14), /* max paper width and height */ /* not confirmed yet */ + 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ + &canon_PIXMA_MG5400_slotlist, /* ESC (r only for CD media */ + CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_v|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0, + 3,9, /* ESC (l and (P command lengths */ + control_cmd_PIXMA_MG3500, + &canon_PIXMA_MG6500_modelist, + &canon_PIXMA_MG6300_paperlist, + &canon_PIXMA_MG6500_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 */ @@ -2733,6 +2899,22 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, + { /* Canon MULTIPASS MX390 --- with XML */ + "PIXMA MX390", 3, /*model, model_id*/ + INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.90 */ + 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ + &canon_PIXMA_MG2100_slotlist, /* only front tray also uses CAP_T */ + CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML|CANON_CAP_BORDERLESS,0, + 3,9, /* ESC (l and (P command lengths */ + control_cmd_PIXMA_MG5300, + &canon_MULTIPASS_MX370_modelist, + &canon_PIXMA_MG3200_paperlist, + &canon_MULTIPASS_MX390_modeuselist, + NULL, + NULL, + NULL, + iP4500_channel_order + }, { /* Canon MULTIPASS MX420 --- with XML */ "PIXMA MX420", 3, /*model, model_id*/ INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.50 */ @@ -2765,6 +2947,22 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, + { /* Canon MULTIPASS MX520 --- with XML */ + "PIXMA MX520", 3, /*model, model_id*/ + INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.90 */ + 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ + &canon_PIXMA_MG2100_slotlist, /* only front tray also uses CAP_T */ + CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML|CANON_CAP_BORDERLESS,0, + 3,9, /* ESC (l and (P command lengths */ + control_cmd_PIXMA_MG5300, + &canon_MULTIPASS_MX510_modelist, + &canon_PIXMA_MG3200_paperlist, + &canon_MULTIPASS_MX520_modeuselist, + NULL, + NULL, + NULL, + iP4500_channel_order + }, { /* Canon MULTIPASS MX700 */ "PIXMA MX700", 3, /*model, model_id*/ INCH(17/2), INCH(23), /* max paper width and height */ /* from MacOSX driver */ @@ -2783,7 +2981,7 @@ static const canon_cap_t canon_model_capabilities[] = }, { /* Canon MULTIPASS MX710 --- with XML */ "PIXMA MX710", 3, /*model, model_id*/ - INCH(17/2), INCH(23), /* max paper width and height */ /* from linux driver v3.70 */ + INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.70 */ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ &canon_PIXMA_MG5100_slotlist, CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0, @@ -2797,6 +2995,22 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, + { /* Canon MULTIPASS MX720 --- with XML */ + "PIXMA MX720", 3, /*model, model_id*/ + INCH(17/2), INCH(14), /* max paper width and height */ /* from linux driver v3.90 */ + 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ + &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 */ + control_cmd_PIXMA_MG5300, + &canon_PIXMA_MX720_modelist, + &canon_PIXMA_MG3200_paperlist, + &canon_PIXMA_MX720_modeuselist, + NULL, + NULL, + NULL, + iP4500_channel_order + }, { /* Canon MULTIPASS MX850 */ "PIXMA MX850", 3, /*model, model_id*/ INCH(17/2), INCH(23), /* max paper width and height */ /* from MacOSX driver */ @@ -2861,6 +3075,22 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, + { /* Canon MULTIPASS MX920 --- with XML CD-R tray J */ + "PIXMA MX920", 3, /*model, model_id*/ + INCH(17/2), INCH(14), /* max paper width and height */ /* from linux driver v3.90 */ + 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ + &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 */ + control_cmd_PIXMA_MG5300, /* features Uses ESC (r only for CD media */ + &canon_PIXMA_MX920_modelist, + &canon_PIXMA_MG5400_paperlist, + &canon_PIXMA_MX920_modeuselist, + NULL, + NULL, + NULL, + iP4500_channel_order + }, { /* Canon MULTIPASS MX7600 */ "PIXMA MX7600", 3, /*model, model_id*/ INCH(17/2), INCH(23), /* max paper width and height */ /* from MacOSX driver */ @@ -2893,6 +3123,22 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, + { /* Canon MULTIPASS E510 --- with XML */ + "PIXMA E510", 3, /*model, model_id*/ + INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.80 */ + 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ + &canon_PIXMA_MG2100_slotlist, + CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0, + 3,9, /* ESC (l and (P command lengths */ + control_cmd_PIXMA_MG5300, /*features*/ + &canon_MULTIPASS_E500_modelist, + &canon_PIXMA_MG3200_paperlist, + &canon_MULTIPASS_E510_modeuselist, + NULL, + NULL, + NULL, + iP4500_channel_order + }, { /* Canon MULTIPASS E600 --- with XML */ "PIXMA E600", 3, /*model, model_id*/ INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.70 */ @@ -2909,6 +3155,22 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, + { /* Canon MULTIPASS E610 --- with XML */ + "PIXMA E610", 3, /*model, model_id*/ + INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.80 */ + 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ + &canon_PIXMA_MG2100_slotlist, + CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML|CANON_CAP_BORDERLESS,0, + 3,9, /* ESC (l and (P command lengths */ + control_cmd_PIXMA_MG5300, /*features*/ + &canon_MULTIPASS_E500_modelist, + &canon_PIXMA_MG3200_paperlist, + &canon_MULTIPASS_E510_modeuselist, + NULL, + NULL, + NULL, + iP4500_channel_order + }, }; #endif diff --git a/src/main/curve.c b/src/main/curve.c index feaff48..7e4d02b 100644 --- a/src/main/curve.c +++ b/src/main/curve.c @@ -1,5 +1,5 @@ /* - * "$Id: curve.c,v 1.55 2010/08/04 00:33:56 rlk Exp $" + * "$Id: curve.c,v 1.56 2014/01/04 00:31:37 rlk Exp $" * * Print plug-in driver utility functions for the GIMP. * @@ -908,7 +908,6 @@ int stp_curve_rescale(stp_curve_t *curve, double scale, stp_curve_compose_t mode, stp_curve_bounds_t bounds_mode) { - size_t real_point_count; int i; double nblo; double nbhi; @@ -916,8 +915,6 @@ stp_curve_rescale(stp_curve_t *curve, double scale, CHECK_CURVE(curve); - real_point_count = get_real_point_count(curve); - stp_sequence_get_bounds(curve->seq, &nblo, &nbhi); if (bounds_mode == STP_CURVE_BOUNDS_RESCALE) { @@ -1068,7 +1065,7 @@ do_interpolate_spline(double low, double high, double frac, } static inline double -interpolate_point_internal(stp_curve_t *curve, double where) +interpolate_point_internal(const stp_curve_t *curve, double where) { int integer = where; double frac = where - (double) integer; @@ -1082,7 +1079,7 @@ interpolate_point_internal(stp_curve_t *curve, double where) return val; } if (curve->recompute_interval) - compute_intervals(curve); + compute_intervals((stpi_cast_safe(curve))); if (curve->curve_type == STP_CURVE_TYPE_LINEAR) { double val; @@ -1136,7 +1133,7 @@ stp_curve_interpolate_value(const stp_curve_t *curve, double where, if (curve->gamma) /* this means a pure gamma curve */ *result = interpolate_gamma_internal(curve, where); else - *result = interpolate_point_internal((stp_curve_t *) curve, where); + *result = interpolate_point_internal(curve, where); return 1; } diff --git a/src/main/dither-inks.c b/src/main/dither-inks.c index 3d47601..722e407 100644 --- a/src/main/dither-inks.c +++ b/src/main/dither-inks.c @@ -1,5 +1,5 @@ /* - * "$Id: dither-inks.c,v 1.27 2010/08/04 00:33:56 rlk Exp $" + * "$Id: dither-inks.c,v 1.28 2014/01/04 00:31:37 rlk Exp $" * * Print plug-in driver utility functions for the GIMP. * @@ -367,9 +367,6 @@ stp_dither_set_inks_full(stp_vars_t *v, int color, int nshades, { int i; int idx; - stpi_dither_channel_t *dc; - - stpi_dither_t *d = (stpi_dither_t *) stp_get_component_data(v, "Dither"); stp_channel_reset_channel(v, color); @@ -378,7 +375,6 @@ stp_dither_set_inks_full(stp_vars_t *v, int color, int nshades, int subchannel = nshades - i - 1; idx = stpi_dither_translate_channel(v, color, subchannel); STPI_ASSERT(idx >= 0, NULL); - dc = &(CHANNEL(d, idx)); stp_channel_add(v, color, subchannel, shades[i].value); if (idx >= 0) diff --git a/src/main/escp2-channels.c b/src/main/escp2-channels.c index be98302..b110b10 100644 --- a/src/main/escp2-channels.c +++ b/src/main/escp2-channels.c @@ -1,5 +1,5 @@ /* - * "$Id: escp2-channels.c,v 1.91 2010/12/19 02:51:37 rlk Exp $" + * "$Id: escp2-channels.c,v 1.92 2013/12/14 19:36:29 rlk Exp $" * * Print plug-in EPSON ESC/P2 driver for the GIMP. * @@ -415,7 +415,7 @@ load_inkgroup(const char *name) { int count = 0; stp_mxml_node_t *node = stp_mxmlFindElement(inkgroup, inkgroup, - "escp2:InkGroup", NULL, + "escp2InkGroup", NULL, NULL, STP_MXML_DESCEND); if (node) { diff --git a/src/main/escp2-papers.c b/src/main/escp2-papers.c index a992d9c..f1c44b4 100644 --- a/src/main/escp2-papers.c +++ b/src/main/escp2-papers.c @@ -1,5 +1,5 @@ /* - * "$Id: escp2-papers.c,v 1.119 2010/08/04 00:33:56 rlk Exp $" + * "$Id: escp2-papers.c,v 1.120 2013/12/14 19:36:29 rlk Exp $" * * Print plug-in EPSON ESC/P2 driver for the GIMP. * @@ -121,7 +121,7 @@ stp_escp2_load_media(const stp_vars_t *v, const char *name) stp_string_list_t **xpapers = (stp_string_list_t **) &(printdef->papers); stp_mxml_node_t *node = stp_mxmlFindElement(media, media, - "escp2:papers", NULL, + "escp2Papers", NULL, NULL, STP_MXML_DESCEND); *xnode = media; *xlist = stp_list_create(); @@ -346,7 +346,7 @@ stp_escp2_load_input_slots(const stp_vars_t *v, const char *name) stp_string_list_t **xslots = (stp_string_list_t **) &(printdef->input_slots); stp_mxml_node_t *node = stp_mxmlFindElement(slots, slots, - "escp2:InputSlots", NULL, + "escp2InputSlots", NULL, NULL, STP_MXML_DESCEND); *xnode = slots; *xlist = stp_list_create(); diff --git a/src/main/escp2-resolutions.c b/src/main/escp2-resolutions.c index ee78cf7..9966f79 100644 --- a/src/main/escp2-resolutions.c +++ b/src/main/escp2-resolutions.c @@ -1,5 +1,5 @@ /* - * "$Id: escp2-resolutions.c,v 1.52 2010/08/04 00:33:56 rlk Exp $" + * "$Id: escp2-resolutions.c,v 1.53 2013/12/14 19:36:29 rlk Exp $" * * Print plug-in EPSON ESC/P2 driver for the GIMP. * @@ -90,7 +90,7 @@ stp_escp2_load_printer_weaves(const stp_vars_t *v, const char *name) if (weaves) { stp_mxml_node_t *node = stp_mxmlFindElement(weaves, weaves, - "escp2:PrinterWeaves", NULL, + "escp2PrinterWeaves", NULL, NULL, STP_MXML_DESCEND); if (node) stp_escp2_load_printer_weaves_from_xml(v, node); @@ -205,7 +205,7 @@ stp_escp2_load_resolutions(const stp_vars_t *v, const char *name) if (resolutions) { stp_mxml_node_t *node = stp_mxmlFindElement(resolutions, resolutions, - "escp2:resolutions", NULL, + "escp2Resolutions", NULL, NULL, STP_MXML_DESCEND); if (node) stp_escp2_load_resolutions_from_xml(v, node); @@ -307,7 +307,7 @@ stp_escp2_load_quality_presets(const stp_vars_t *v, const char *name) if (qualities) { stp_mxml_node_t *node = stp_mxmlFindElement(qualities, qualities, - "escp2:QualityPresets", NULL, + "escp2QualityPresets", NULL, NULL, STP_MXML_DESCEND); if (node) stp_escp2_load_quality_presets_from_xml(v, node); diff --git a/src/main/gutenprint-internal.h b/src/main/gutenprint-internal.h index 0fa17b4..9de8214 100644 --- a/src/main/gutenprint-internal.h +++ b/src/main/gutenprint-internal.h @@ -1,5 +1,5 @@ /* - * "$Id: gutenprint-internal.h,v 1.5 2011/06/12 00:31:51 rlk Exp $" + * "$Id: gutenprint-internal.h,v 1.6 2014/01/04 00:31:38 rlk Exp $" * * Print plug-in header file for the GIMP. * @@ -76,6 +76,18 @@ do \ /** @} */ +#define CAST_IS_SAFE GCC_DIAG_OFF(cast-qual) +#define CAST_IS_UNSAFE GCC_DIAG_ON(cast-qual) + +#pragma GCC diagnostic ignored "-Woverlength-strings" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-qual" +static inline void * +stpi_cast_safe(const void *ptr) +{ + return (void *)ptr; +} +#pragma GCC diagnostic pop #ifdef __cplusplus } @@ -83,5 +95,5 @@ do \ #endif /* GUTENPRINT_INTERNAL_INTERNAL_H */ /* - * End of "$Id: gutenprint-internal.h,v 1.5 2011/06/12 00:31:51 rlk Exp $". + * End of "$Id: gutenprint-internal.h,v 1.6 2014/01/04 00:31:38 rlk Exp $". */ diff --git a/src/main/print-canon.c b/src/main/print-canon.c index 6968ff0..edf7b55 100644 --- a/src/main/print-canon.c +++ b/src/main/print-canon.c @@ -1,5 +1,5 @@ /* - * "$Id: print-canon.c,v 1.523 2012/05/25 17:52:30 gernot2270 Exp $" + * "$Id: print-canon.c,v 1.552 2014/01/24 17:21:46 gernot2270 Exp $" * * Print plug-in CANON BJL driver for the GIMP. * @@ -67,9 +67,7 @@ # define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif /* !MAX */ -/* set this to 1 to see errors in make, set to 0 (normal) to avoid noise */ -#define ERRPRINT 0 - +/* 5 3-level pixels into 1 byte */ static int pack_pixels(unsigned char* buf,int len) { @@ -78,7 +76,7 @@ pack_pixels(unsigned char* buf,int len) int shift = 6; while(read_pos < len) { - /* read 5pixels a 2 bit */ + /* read 5pixels at 2 bit */ unsigned short value = buf[read_pos] << 8; if(read_pos+1 < len) value += buf[read_pos + 1]; @@ -101,6 +99,70 @@ pack_pixels(unsigned char* buf,int len) return write_pos; } +/* 3 4-bit-per-pixel 5-level pixels into 1 byte */ +static int +pack_pixels3_5(unsigned char* buf,int len) +{ + int read_pos = 0; + int write_pos = 0; + int shift = 7; + while(read_pos < len) + { + /* read 3pixels at 3 bit */ + unsigned short value = buf[read_pos] << 8; + if(read_pos+1 < len) + value += buf[read_pos + 1]; + if(shift) + value >>= shift; + /* write 8bit value representing the 12 bit pixel combination */ + buf[write_pos] = twelve2eight[value & 1023]; + ++write_pos; + if(shift == 0) + { + shift = 7; + read_pos += 2; + } + else + { + shift -= 1; + ++read_pos; + } + } + return write_pos; +} + +/* 3 4-bit-per-pixel 6-level pixels into 1 byte */ +static int +pack_pixels3_6(unsigned char* buf,int len) +{ + int read_pos = 0; + int write_pos = 0; + int shift = 7; + while(read_pos < len) + { + /* read 3pixels at 3 bit */ + unsigned short value = buf[read_pos] << 8; + if(read_pos+1 < len) + value += buf[read_pos + 1]; + if(shift) + value >>= shift; + /* write 8bit value representing the 12 bit pixel combination */ + buf[write_pos] = twelve2eight2[value & 1023]; + ++write_pos; + if(shift == 0) + { + shift = 7; + read_pos += 2; + } + else + { + shift -= 1; + ++read_pos; + } + } + return write_pos; +} + /* model peculiarities */ #define CANON_CAP_MSB_FIRST 0x02ul /* how to send data */ #define CANON_CAP_a 0x04ul @@ -127,6 +189,7 @@ pack_pixels(unsigned char* buf,int len) #define CANON_CAP_cart 0x800000ul /* BJC printers with Color, Black, Photo options */ #define CANON_CAP_BORDERLESS 0x1000000ul /* borderless printing */ #define CANON_CAP_NOBLACK 0x2000000ul /* no Black cartridge selection */ +#define CANON_CAP_v 0x4000000ul /* not sure of this yet */ #define CANON_CAP_STD0 (CANON_CAP_b|CANON_CAP_c|CANON_CAP_d|\ CANON_CAP_l|CANON_CAP_q|CANON_CAP_t) @@ -469,8 +532,7 @@ static char* canon_get_printername(const stp_vars_t* v) len = strlen(canon_families[family]) + 7; /* max model nr. + terminating 0 */ name = stp_zalloc(len); snprintf(name,len,"%s%u",canon_families[family],nr); - if (ERRPRINT) - stp_eprintf(v,"canon_get_printername: current printer name: %s\n", name); + stp_dprintf(STP_DBG_CANON, v,"canon_get_printername: current printer name: %s\n", name); return name; } @@ -517,9 +579,7 @@ static const canon_mode_t* canon_get_current_mode(const stp_vars_t *v){ const char *ink_set = stp_get_string_parameter(v, "InkSet");/*debug*/ int i; - stp_dprintf(STP_DBG_CANON, v,"Entered canon_get_current_mode\n"); - if (ERRPRINT) - stp_eprintf(v,"entered canon_get_current_mode\n"); + stp_dprintf(STP_DBG_CANON, v,"Entered canon_get_current_mode\n"); if (ink_set) stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: InkSet value (high priority): '%s'\n",ink_set); @@ -566,8 +626,6 @@ static const canon_mode_t* canon_get_current_mode(const stp_vars_t *v){ #endif stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: current mode is '%s'\n",resolution); - if (ERRPRINT) - stp_eprintf(v,"current mode is '%s'\n",resolution); return mode; } @@ -579,8 +637,6 @@ const canon_modeuse_t* select_media_modes(stp_vars_t *v, const canon_paper_t* me if(!strcmp(media_type->name,mlist->modeuses[i].name)){ muse = &mlist->modeuses[i]; stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: mode searching: assigned media '%s'\n",mlist->name); - if (ERRPRINT) - stp_eprintf(v,"mode searching: assigned media '%s'\n",mlist->name); break; } } @@ -591,8 +647,6 @@ int compare_mode_valid(stp_vars_t *v,const canon_mode_t* mode,const canon_modeus int i=0; int modecheck=1; stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: mode searching: assigned mode-media '%s'\n",mlist->name); - if (ERRPRINT) - stp_eprintf(v,"mode searching: assigned mode-media '%s'\n",mlist->name); while (muse->mode_name_list[i]!=NULL){ if(!strcmp(mode->name,muse->mode_name_list[i])){ modecheck=0; @@ -618,7 +672,7 @@ const canon_mode_t* suitable_mode_monochrome(stp_vars_t *v,const canon_modeuse_t /* only look at modes with MODE_FLAG_BLACK if INKSET_BLACK_MODEREPL is in force */ if ( (caps->modelist->modes[j].quality >= quality) && (caps->modelist->modes[j].flags & MODE_FLAG_BLACK) ){ /* keep setting the mode until lowest matching quality is found */ - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check -- rare for monochrome, cannot remember any such case */ mode = &caps->modelist->modes[j]; modefound=1; @@ -629,7 +683,7 @@ const canon_mode_t* suitable_mode_monochrome(stp_vars_t *v,const canon_modeuse_t else { /* no special replacement modes for black inkset */ if ( (caps->modelist->modes[j].quality >= quality) ){ /* keep setting the mode until lowest matching quality is found */ - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check -- rare for monochrome, cannot remember any such case */ mode = &caps->modelist->modes[j]; modefound=1; @@ -651,16 +705,19 @@ const canon_mode_t* find_first_matching_mode_monochrome(stp_vars_t *v,const cano int modefound=0; int j; + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Entered find_first_matching_mode_monochrome\n"); + while ( (muse->mode_name_list[i]!=NULL) && (modefound != 1) ) { /* pick first mode with MODE_FLAG_BLACK */ for(j=0;j<caps->modelist->count;j++){ if(!strcmp(muse->mode_name_list[i],caps->modelist->modes[j].name)){/* find right place in canon-modes list */ /* only look at modes with MODE_FLAG_BLACK if INKSET_BLACK_MODEREPL is in force */ if ( (caps->modelist->modes[j].flags & MODE_FLAG_BLACK) ) { - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check -- rare for monochrome, cannot remember any such case */ mode = &caps->modelist->modes[j]; modefound=1; + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (find_first_matching_mode_monochrome): picked monochrome mode (%s)\n",mode->name); } } break; /* go to next mode in muse list */ @@ -677,11 +734,13 @@ const canon_mode_t* find_first_matching_mode(stp_vars_t *v,const canon_modeuse_t int modefound=0; int j; + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Entered find_first_matching_mode\n"); + while ( (muse->mode_name_list[i]!=NULL) && (modefound != 1) ) { for(j=0;j<caps->modelist->count;j++){ if(!strcmp(muse->mode_name_list[i],caps->modelist->modes[j].name)){/* find right place in canon-modes list */ - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { - /* duplex check -- rare for monochrome, cannot remember any such case */ + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + /* duplex check */ mode = &caps->modelist->modes[j]; modefound=1; stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (find_first_matching_mode): picked mode without inkset limitation (%s)\n",mode->name); @@ -709,7 +768,7 @@ const canon_mode_t* suitable_mode_color(stp_vars_t *v,const canon_modeuse_t* mus /* only look at modes with MODE_FLAG_COLOR if INKSET_COLOR_MODEREPL is in force */ if ( (caps->modelist->modes[j].quality >= quality) && (caps->modelist->modes[j].flags & MODE_FLAG_COLOR) ) { /* keep setting the mode until lowest matching quality is found */ - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check */ mode = &caps->modelist->modes[j]; stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (suitable_mode_color): picked mode with special replacement inkset (%s)\n",mode->name); @@ -721,7 +780,7 @@ const canon_mode_t* suitable_mode_color(stp_vars_t *v,const canon_modeuse_t* mus else { /* no special replacement modes for color inkset */ if ( (caps->modelist->modes[j].quality >= quality) ){ /* keep setting the mode until lowest matching quality is found */ - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check */ mode = &caps->modelist->modes[j]; stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (suitable_mode_color): picked mode without any special replacement inkset (%s)\n",mode->name); @@ -744,13 +803,15 @@ const canon_mode_t* find_first_matching_mode_color(stp_vars_t *v,const canon_mod int modefound=0; int j; + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Entered find_first_matching_mode_color\n"); + while ( (muse->mode_name_list[i]!=NULL) && (modefound != 1) ) { /* pick first mode with MODE_FLAG_COLOR */ for(j=0;j<caps->modelist->count;j++){ if(!strcmp(muse->mode_name_list[i],caps->modelist->modes[j].name)){/* find right place in canon-modes list */ /* only look at modes with MODE_FLAG_COLOR if INKSET_COLOR_MODEREPL is in force */ if ( (caps->modelist->modes[j].flags & MODE_FLAG_COLOR) ) { - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check */ mode = &caps->modelist->modes[j]; stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (find_first_matching_mode_color): picked first mode with special replacement inkset (%s)\n",mode->name); @@ -780,9 +841,10 @@ const canon_mode_t* suitable_mode_photo(stp_vars_t *v,const canon_modeuse_t* mus /* only look at modes with MODE_FLAG_PHOTO if INKSET_PHOTO_MODEREPL is in force */ if ( (caps->modelist->modes[j].quality >= quality) && (caps->modelist->modes[j].flags & MODE_FLAG_PHOTO) ) { /* keep setting the mode until lowest matching quality is found */ - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check */ mode = &caps->modelist->modes[j]; + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (suitable_mode_photo): picked first mode with special replacement inkset (%s)\n",mode->name); modefound=1; } } @@ -791,9 +853,10 @@ const canon_mode_t* suitable_mode_photo(stp_vars_t *v,const canon_modeuse_t* mus else { /* if no special replacement modes for photo inkset */ if ( (caps->modelist->modes[j].quality >= quality) ){ /* keep setting the mode until lowest matching quality is found */ - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check */ mode = &caps->modelist->modes[j]; + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (suitable_mode_photo): picked first mode with photo inkset (%s)\n",mode->name); modefound=1; } } @@ -812,6 +875,8 @@ const canon_mode_t* find_first_matching_mode_photo(stp_vars_t *v,const canon_mod int i=0; int modefound=0; int j; + + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Entered find_first_matching_mode_photo\n"); while ( (muse->mode_name_list[i]!=NULL) && (modefound != 1) ) { /* pick first mode with MODE_FLAG_PHOTO */ @@ -819,9 +884,10 @@ const canon_mode_t* find_first_matching_mode_photo(stp_vars_t *v,const canon_mod if(!strcmp(muse->mode_name_list[i],caps->modelist->modes[j].name)){/* find right place in canon-modes list */ /* only look at modes with MODE_FLAG_PHOTO if INKSET_PHOTO_MODEREPL is in force */ if ( (caps->modelist->modes[j].flags & MODE_FLAG_PHOTO) ) { - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check */ mode = &caps->modelist->modes[j]; + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (find_first_matching_mode_photo): picked first mode with photo inkset (%s)\n",mode->name); modefound=1; } } @@ -840,15 +906,17 @@ const canon_mode_t* suitable_mode_general(stp_vars_t *v,const canon_modeuse_t* m int modefound=0; stp_dprintf(STP_DBG_CANON, v,"DEBUG: Entered suitable_mode_general\n"); + while ((muse->mode_name_list[i]!=NULL) && (modefound != 1)){ for(j=0;j<caps->modelist->count;j++){ if(!strcmp(muse->mode_name_list[i],caps->modelist->modes[j].name)){/* find right place in canon-modes list */ if ( (caps->modelist->modes[j].quality >= quality) ) { /* keep setting the mode until lowest matching quality is found */ - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check */ mode = &caps->modelist->modes[j]; + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (suitable_mode_general): picked first mode with lowest matching quality (%s)\n",mode->name); modefound=1; } } @@ -864,6 +932,8 @@ const char* find_ink_type(stp_vars_t *v,const canon_mode_t* mode,const char *pri int i,inkfound; const char *ink_type = stp_get_string_parameter(v, "InkType"); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Entered find_ink_type\n"); + /* if InkType does not match that of mode, change InkType to match it */ /* choose highest color as default, as there is only one option for Black */ /* if InkType does not match that of mode, change InkType to match it */ @@ -928,8 +998,6 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ #endif stp_dprintf(STP_DBG_CANON, v,"Entered canon_check_current_mode: got PrintingMode %s\n",printing_mode); - if (ERRPRINT) - stp_eprintf(v,"entered canon_check_current_mode: got PrintingMode %s\n",printing_mode); /* Logic: priority of options 1. Media --- always present for final selection. @@ -958,8 +1026,6 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ if(resolution){ stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: check_current_mode --- (Initial) Resolution already known: '%s'\n",resolution); - if (ERRPRINT) - stp_eprintf(v,"check_current_mode --- (Initial) Resolution already known: '%s'\n",resolution); for(i=0;i<caps->modelist->count;i++){ if(!strcmp(resolution,caps->modelist->modes[i].name)){ mode = &caps->modelist->modes[i]; @@ -969,8 +1035,6 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ } else { stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: check_current_mode --- (Initial) Resolution not yet known \n"); - if (ERRPRINT) - stp_eprintf(v,"check_current_mode --- (Initial) Resolution not yet known \n"); } if (ink_set) @@ -986,14 +1050,8 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ /* beginning of mode replacement code */ if (media_type && resolution && mode) { stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: check_current_mode --- Resolution, Media, Mode all known \n"); - if (ERRPRINT) - stp_eprintf(v,"check_current_mode --- Resolution, Media, Mode all known \n"); stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: media type selected: '%s'\n",media_type->name); - if (ERRPRINT) - stp_eprintf(v,"media type selected: '%s'\n",media_type->name); stp_dprintf(STP_DBG_CANON, v,"DEBUG: (Inital) Gutenprint: mode initally active: '%s'\n",mode->name); - if (ERRPRINT) - stp_eprintf(v,"(Inital) mode initially active: '%s'\n",mode->name); /* scroll through modeuse list to find media */ muse = select_media_modes(v,media_type,mlist); @@ -1001,20 +1059,20 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ /* now scroll through to find if the mode is in the modeuses list */ modecheck=compare_mode_valid(v,mode,muse,mlist); - stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: modecheck value: '%i'\n",modecheck); - if (ERRPRINT) - stp_eprintf(v,"modecheck value: '%i'\n",modecheck); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: (mode replacement) Gutenprint: modecheck value: '%i'\n",modecheck); /* if we did not find a valid mode, need to replace it */ if (modecheck!=0) { stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (check_current_mode): no suitable mode exists, need to find a mode\n"); + quality = mode->quality; /* Black InkSet */ if (ink_set && !strcmp(ink_set,"Black")) { stp_set_string_parameter(v, "PrintingMode","BW"); printing_mode = stp_get_string_parameter(v, "PrintingMode"); if (!(mode->ink_types & CANON_INK_K)) { + /* need a new mode: loop through modes in muse list searching for a matching inktype, comparing quality */ @@ -1030,6 +1088,7 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ } else { /* no special replacement modes for black inkset */ mode=find_first_matching_mode(v,muse,caps,duplex_mode); + stp_dprintf(STP_DBG_CANON, v,"Gutenprint (check_current_mode): Ink set is set to CANON_INK_K but did no special conditions, so first match taken: '%s'\n",mode->name); } } if (!mode) @@ -1053,6 +1112,7 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ /* mode is fine */ /* matched expected K inkset, but need to check if Duplex matches, and if not, get a new mode with right inkset */ mode=suitable_mode_monochrome(v,muse,caps,quality,duplex_mode); + stp_dprintf(STP_DBG_CANON, v,"Gutenprint (check_current_mode): Ink set is set to CANON_INK_K and mode already fits (but need to check for duplex condition): '%s'\n",mode->name); if (!mode) modefound=0; else @@ -1061,9 +1121,11 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ if (modefound == 0) { /* still did not find a mode: pick first one for that media matching the InkSet limitation */ if ( (muse->use_flags & INKSET_BLACK_MODEREPL) ) { mode=find_first_matching_mode_monochrome(v,muse,caps,duplex_mode); + stp_dprintf(STP_DBG_CANON, v,"Gutenprint (check_current_mode): Ink set is set to CANON_INK_K, pick first one matching condition for black mode replacement: '%s'\n",mode->name); } else { /* no special replacement modes for black inkset */ mode=find_first_matching_mode(v,muse,caps,duplex_mode); + stp_dprintf(STP_DBG_CANON, v,"Gutenprint (check_current_mode): Ink set is set to CANON_INK_K, pick first one matching condition without mode replacement needed: '%s'\n",mode->name); } } @@ -1074,17 +1136,17 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ /* if InkType does not match that of mode, change InkType to match it */ /* choose highest color as default, as there is only one option for Black */ if (printing_mode && !strcmp(printing_mode,"BW")) { - stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both): InkType changed to %u (%s)\n",CANON_INK_K, "Gray"); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Black): InkType changed to %u (%s)\n",CANON_INK_K, "Gray"); stp_set_string_parameter(v, "InkType", "Gray"); ink_type = stp_get_string_parameter(v, "InkType"); } else { inkfound=0; - stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both): InkType of mode %s is currently set as %s\n",mode->name,ink_type); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Black): InkType of mode %s is currently set as %s\n",mode->name,ink_type); for(i=0;i<sizeof(canon_inktypes)/sizeof(canon_inktypes[0]);i++){ if (mode->ink_types & canon_inktypes[i].ink_type) { /* a mode can have several ink_types: must compare with ink_type if set */ if ( !(strcmp(ink_type,canon_inktypes[i].name))) { inkfound=1; - stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both): InkType match found %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Black): InkType match found %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); stp_set_string_parameter(v, "InkType", canon_inktypes[i].name); ink_type = stp_get_string_parameter(v, "InkType"); break; @@ -1096,7 +1158,7 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ for(i=0;i<sizeof(canon_inktypes)/sizeof(canon_inktypes[0]);i++){ if (mode->ink_types & canon_inktypes[i].ink_type) { /* a mode can have several ink_types: must compare with ink_type if set */ if ((!ink_type) || (strcmp(ink_type,canon_inktypes[i].name))) { /* if InkType does not match selected mode ink type*/ - stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both): No match found---InkType changed to %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Black): No match found---InkType changed to %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); stp_set_string_parameter(v, "InkType", canon_inktypes[i].name); ink_type = stp_get_string_parameter(v, "InkType"); inkfound=1; /* set */ @@ -1163,17 +1225,17 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ /* if InkType does not match that of mode, change InkType to match it */ /* choose highest color as default, as there is only one option for Black */ if (printing_mode && !strcmp(printing_mode,"BW")) { - stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both): InkType changed to %u (%s)\n",CANON_INK_K, "Gray"); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Color): InkType changed to %u (%s)\n",CANON_INK_K, "Gray"); stp_set_string_parameter(v, "InkType", "Gray"); ink_type = stp_get_string_parameter(v, "InkType"); } else { inkfound=0; - stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both): InkType of mode %s is currently set as %s\n",mode->name,ink_type); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Color): InkType of mode %s is currently set as %s\n",mode->name,ink_type); for(i=0;i<sizeof(canon_inktypes)/sizeof(canon_inktypes[0]);i++){ if (mode->ink_types & canon_inktypes[i].ink_type) { /* a mode can have several ink_types: must compare with ink_type if set */ if ( !(strcmp(ink_type,canon_inktypes[i].name))) { inkfound=1; - stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both): InkType match found %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Color): InkType match found %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); stp_set_string_parameter(v, "InkType", canon_inktypes[i].name); ink_type = stp_get_string_parameter(v, "InkType"); break; @@ -1243,17 +1305,17 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ /* if InkType does not match that of mode, change InkType to match it */ /* choose highest color as default, as there is only one option for Black */ if (printing_mode && !strcmp(printing_mode,"BW")) { - stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both): InkType changed to %u (%s)\n",CANON_INK_K, "Gray"); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Color): InkType changed to %u (%s)\n",CANON_INK_K, "Gray"); stp_set_string_parameter(v, "InkType", "Gray"); ink_type = stp_get_string_parameter(v, "InkType"); } else { inkfound=0; - stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both): InkType of mode %s is currently set as %s\n",mode->name,ink_type); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Color): InkType of mode %s is currently set as %s\n",mode->name,ink_type); for(i=0;i<sizeof(canon_inktypes)/sizeof(canon_inktypes[0]);i++){ if (mode->ink_types & canon_inktypes[i].ink_type) { /* a mode can have several ink_types: must compare with ink_type if set */ if ( !(strcmp(ink_type,canon_inktypes[i].name))) { inkfound=1; - stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both): InkType match found %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Color): InkType match found %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); stp_set_string_parameter(v, "InkType", canon_inktypes[i].name); ink_type = stp_get_string_parameter(v, "InkType"); break; @@ -1265,7 +1327,7 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ for(i=0;i<sizeof(canon_inktypes)/sizeof(canon_inktypes[0]);i++){ if (mode->ink_types & canon_inktypes[i].ink_type) { /* a mode can have several ink_types: must compare with ink_type if set */ if ((!ink_type) || (strcmp(ink_type,canon_inktypes[i].name))) { /* if InkType does not match selected mode ink type*/ - stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both): No match found---InkType changed to %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Color): No match found---InkType changed to %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); stp_set_string_parameter(v, "InkType", canon_inktypes[i].name); ink_type = stp_get_string_parameter(v, "InkType"); inkfound=1; /* set */ @@ -1462,7 +1524,6 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ if (printing_mode && !strcmp(printing_mode,"Color")) { stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both) PrintingMode Color\n"); /* must skip K-only inksets if they exist: they only exist if the option "BW" is also declared but we cannot check if an option exists or not */ - /*if ( (duplex_mode) || (mode->flags & MODE_FLAG_NODUPLEX) ) {*/ i=0; quality = mode->quality; modefound=0; @@ -1470,10 +1531,11 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ for(j=0;j<caps->modelist->count;j++){ if(!strcmp(muse->mode_name_list[i],caps->modelist->modes[j].name)){/* find right place in canon-modes list */ if ( (caps->modelist->modes[j].quality >= quality) ) { - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check */ if (caps->modelist->modes[j].ink_types > CANON_INK_K) { mode = &caps->modelist->modes[j]; + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (check_current_mode, Both/Color, printmode color): picked first mode with color inkset (%s)\n",mode->name); modefound=1; } } @@ -1483,12 +1545,10 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ } i++; } - /*}*/ } else if (printing_mode && !strcmp(printing_mode,"BW")) { stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both) PrintingMode BW\n"); /* need to find K-only inksets: they must exist since we declared the printer to have this capability! */ - /*if ( (duplex_mode) || (mode->flags & MODE_FLAG_NODUPLEX) ) {*/ i=0; quality = mode->quality; modefound=0; @@ -1496,10 +1556,11 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ for(j=0;j<caps->modelist->count;j++){ if(!strcmp(muse->mode_name_list[i],caps->modelist->modes[j].name)){/* find right place in canon-modes list */ if ( (caps->modelist->modes[j].quality >= quality) ) { - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check */ if (caps->modelist->modes[j].ink_types & CANON_INK_K) { /* AND means support for CANON_IN_K is included */ mode = &caps->modelist->modes[j]; + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (check_current_mode, Both/Color, printmode BW): picked first mode with mono inkset (%s)\n",mode->name); modefound=1; } } @@ -1509,12 +1570,10 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ } i++; } - /*}*/ } else { /* no restriction from PrintingMode if not set yet */ stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both) PrintingMode not set yet\n"); /* if mode is not a matching duplex mode, need to find a new one */ - /*if ( (duplex_mode) || (mode->flags & MODE_FLAG_NODUPLEX) ) {*/ i=0; quality = mode->quality; modefound=0; @@ -1525,6 +1584,7 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check */ mode = &caps->modelist->modes[j]; + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (check_current_mode, Both/Color, printmode unset): picked first mode with quality match (%s)\n",mode->name); modefound=1; } } @@ -1533,10 +1593,8 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ } i++; } - /*}*/ } /* if no mode was found yet, repeat with no restrictions --- since some media may not allow PrintingMode to be what was selected */ - /*if ( (duplex_mode) || (mode->flags & MODE_FLAG_NODUPLEX) ) {*/ if (modefound==0) { i=0; quality = mode->quality; @@ -1544,9 +1602,10 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ for(j=0;j<caps->modelist->count;j++){ if(!strcmp(muse->mode_name_list[i],caps->modelist->modes[j].name)){/* find right place in canon-modes list */ if ( (caps->modelist->modes[j].quality >= quality) ) { - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check */ mode = &caps->modelist->modes[j]; + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (check_current_mode, Both/Color, no printmode): picked first mode with quality match (%s)\n",mode->name); modefound=1; /* set PrintingMode to whatever the mode is capable of */ if (caps->modelist->modes[j].ink_types > CANON_INK_K) { @@ -1596,7 +1655,7 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ for(i=0;i<sizeof(canon_inktypes)/sizeof(canon_inktypes[0]);i++){ if (mode->ink_types & canon_inktypes[i].ink_type) { /* a mode can have several ink_types: must compare with ink_type if set */ if ((!ink_type) || (strcmp(ink_type,canon_inktypes[i].name))) { /* if InkType does not match selected mode ink type*/ - stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both): No match found---InkType changed to %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both): No match found---choosing first available. InkType changed to %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); stp_set_string_parameter(v, "InkType", canon_inktypes[i].name); ink_type = stp_get_string_parameter(v, "InkType"); inkfound=1; /* set */ @@ -1611,8 +1670,6 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ /* end of cartridge option block */ stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: mode searching: replaced mode with: '%s'\n",mode->name); - if (ERRPRINT) - stp_eprintf(v,"mode searching: replaced mode with: '%s'\n",mode->name); #if 0 /* set InkType for the mode decided upon */ @@ -1629,7 +1686,8 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ #endif } - }/* added one here */ + } + /* -------------------------------------- modecheck returned 0 for compare_mode_valid ------------------------------------------*/ else { /* we did find the mode in the list for media, so it should take precedence over other settings, as it is more specific. */ stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (check_current_mode): mode exists, need to check for consistency (%s)\n",mode->name); @@ -2132,7 +2190,6 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ if (printing_mode && !strcmp(printing_mode,"Color")) { stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both) PrintingMode Color\n"); /* must skip K-only inksets if they exist: they only exist if the option "BW" is also declared but we cannot check if an option exists or not */ - /*if ( (duplex_mode) || (mode->flags & MODE_FLAG_NODUPLEX) ) {*/ i=0; quality = mode->quality; modefound=0; @@ -2140,7 +2197,7 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ for(j=0;j<caps->modelist->count;j++){ if(!strcmp(muse->mode_name_list[i],caps->modelist->modes[j].name)){/* find right place in canon-modes list */ if ( (caps->modelist->modes[j].quality >= quality) ) { - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check */ if (caps->modelist->modes[j].ink_types > CANON_INK_K) { if (!strcmp(mode->name,caps->modelist->modes[j].name)) { @@ -2156,12 +2213,10 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ } i++; } - /*}*/ } else if (printing_mode && !strcmp(printing_mode,"BW")) { stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both) PrintingMode BW\n"); /* need to find K-only inksets: they must exist since we declared the printer to have this capability! */ - /*if ( (duplex_mode) || (mode->flags & MODE_FLAG_NODUPLEX) ) {*/ i=0; quality = mode->quality; modefound=0; @@ -2169,7 +2224,7 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ for(j=0;j<caps->modelist->count;j++){ if(!strcmp(muse->mode_name_list[i],caps->modelist->modes[j].name)){/* find right place in canon-modes list */ if ( (caps->modelist->modes[j].quality >= quality) ) { - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check */ if (caps->modelist->modes[j].ink_types & CANON_INK_K) { /* AND means CANON_INK_K is included in the support */ if (!strcmp(mode->name,caps->modelist->modes[j].name)) { @@ -2185,12 +2240,9 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ } i++; } - /*}*/ } else { /* no restriction from PrintingMode if not set yet */ stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both) PrintingMode not set yet\n"); - /* if mode is not a matching duplex mode, need to find a new one */ - /*if ( (duplex_mode) || (mode->flags & MODE_FLAG_NODUPLEX) ) {*/ i=0; quality = mode->quality; modefound=0; @@ -2198,7 +2250,7 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ for(j=0;j<caps->modelist->count;j++){ if(!strcmp(muse->mode_name_list[i],caps->modelist->modes[j].name)){/* find right place in canon-modes list */ if ( (caps->modelist->modes[j].quality >= quality) ) { - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check */ if (!strcmp(mode->name,caps->modelist->modes[j].name)) { mode = &caps->modelist->modes[j]; @@ -2212,10 +2264,8 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ } i++; } - /*}*/ } /* if no mode was found yet, repeat with no restrictions --- since some media may not allow PrintingMode to be what was selected */ - /*if ( (duplex_mode) || (mode->flags & MODE_FLAG_NODUPLEX) ) {*/ if (modefound==0) { i=0; quality = mode->quality; @@ -2223,7 +2273,7 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ for(j=0;j<caps->modelist->count;j++){ if(!strcmp(muse->mode_name_list[i],caps->modelist->modes[j].name)){/* find right place in canon-modes list */ if ( (caps->modelist->modes[j].quality >= quality) ) { - if ( !(duplex_mode) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { + if ( (duplex_mode && strncmp(duplex_mode,"Duplex",6)) || !(muse->use_flags & DUPLEX_SUPPORT) || !(caps->modelist->modes[j].flags & MODE_FLAG_NODUPLEX) ) { /* duplex check */ mode = &caps->modelist->modes[j]; stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both) No mode previously found---catch-all: Decided on first matching mode (%s)\n",mode->name); @@ -2276,7 +2326,7 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ for(i=0;i<sizeof(canon_inktypes)/sizeof(canon_inktypes[0]);i++){ if (mode->ink_types & canon_inktypes[i].ink_type) { /* a mode can have several ink_types: must compare with ink_type if set */ if ((!ink_type) || (strcmp(ink_type,canon_inktypes[i].name))) { /* if InkType does not match selected mode ink type*/ - stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both): No match found---InkType changed to %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint (InkSet:Both): No match found---choosing first available. InkType changed to %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); stp_set_string_parameter(v, "InkType", canon_inktypes[i].name); ink_type = stp_get_string_parameter(v, "InkType"); inkfound=1; /* set */ @@ -2322,13 +2372,9 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ if (mode) { stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: check_current_mode --- Final returned mode: '%s'\n",mode->name); - if (ERRPRINT) - stp_eprintf(v,"check_current_mode --- Final returned mode: '%s'\n",mode->name); } else { stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: check_current_mode --- Final returned mode is NULL \n"); - if (ERRPRINT) - stp_eprintf(v,"check_current_mode --- Final returned mode is NULL \n"); } /* set PrintingMode in case of Inkset precedence */ @@ -2345,20 +2391,22 @@ const canon_mode_t* canon_check_current_mode(stp_vars_t *v){ stp_set_string_parameter(v, "PrintingMode", "Color"); } - if (printing_mode) + if (printing_mode) { stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: Final PrintingMode %s\n",printing_mode); - else /* should not happen */ + } else { /* should not happen */ stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: Final PrintingMode is NULL\n"); - - if (ink_set) + } + if (ink_set) { stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: Final InkSet value (high priority): '%s'\n",ink_set); - else + } else { stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: Final InkSet value is NULL\n"); + } - if (ink_type) + if (ink_type) { stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: Final InkType value (low priority): '%s'\n",ink_type); - else + } else { stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: Final InkType value is NULL\n"); + } return mode; } @@ -2375,12 +2423,9 @@ canon_printhead_colors(const stp_vars_t*v) const char *ink_set = stp_get_string_parameter(v, "InkSet"); stp_dprintf(STP_DBG_CANON, v,"Entered canon_printhead_colors: got PrintingMode %s\n",print_mode); - if (ERRPRINT) - stp_eprintf(v,"entered canon_printhead_colors: got PrintingMode %s\n",print_mode); /* if a mode is available, use it. Else mode is NULL */ - if (ERRPRINT) - stp_eprintf(v,"Calling get_current_parameter from canon_printhead_colors"); + stp_dprintf(STP_DBG_CANON, v,"Calling get_current_parameter from canon_printhead_colors\n"); mode = canon_get_current_mode(v); /* get the printing mode again */ @@ -2390,17 +2435,11 @@ canon_printhead_colors(const stp_vars_t*v) if(print_mode && !strcmp(print_mode, "BW") && !(caps->features & CANON_CAP_NOBLACK) ){ /* workaround in case BW is a default */ stp_dprintf(STP_DBG_CANON, v,"(canon_printhead_colors[BW]) Found InkType %u (CANON_INK_K)\n",CANON_INK_K); stp_dprintf(STP_DBG_CANON, v,"(canon_printhead_colors[BW]) NOBLACK? %lu\n",(caps->features & CANON_CAP_NOBLACK)); - if (ERRPRINT) { - stp_eprintf(v,"(canon_printhead_colors[BW]) Found InkType %u (CANON_INK_K)\n",CANON_INK_K); - stp_eprintf(v,"(canon_printhead_colors[BW]) NOBLACK? %lu\n",(caps->features & CANON_CAP_NOBLACK)); - } return CANON_INK_K; } /* alternatively, if the cartridge selection is in force, and black cartride is selected, accept it */ if(ink_set && !strcmp(ink_set, "Black")){ stp_dprintf(STP_DBG_CANON, v,"(canon_printhead_colors[BW]) Found InkSet black selection\n"); - if (ERRPRINT) - stp_eprintf(v,"(canon_printhead_colors[BW]) Found InkSet black selection\n"); return CANON_INK_K; } @@ -2416,8 +2455,6 @@ canon_printhead_colors(const stp_vars_t*v) for(i=0;i<sizeof(canon_inktypes)/sizeof(canon_inktypes[0]);i++){ if (mode->ink_types & canon_inktypes[i].ink_type) { stp_dprintf(STP_DBG_CANON, v,"(canon_printhead_colors[inktype]) Found InkType %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); - if (ERRPRINT) - stp_eprintf(v,"(canon_printhead_colors[inktype]) Found InkType %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); return canon_inktypes[i].ink_type; } } @@ -2428,8 +2465,6 @@ canon_printhead_colors(const stp_vars_t*v) for(i=0;i<sizeof(canon_inktypes)/sizeof(canon_inktypes[0]);i++){ if(mode->ink_types & canon_inktypes[i].ink_type) { stp_dprintf(STP_DBG_CANON, v,"(canon_printhead_colors[mode]) Found InkType %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); - if (ERRPRINT) - stp_eprintf(v,"(canon_printhead_colors[mode]) Found InkType %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); return canon_inktypes[i].ink_type; } } @@ -2441,22 +2476,17 @@ canon_printhead_colors(const stp_vars_t*v) for(i=0;i<sizeof(canon_inktypes)/sizeof(canon_inktypes[0]);i++){ if(ink_type && !strcmp(canon_inktypes[i].name,ink_type)) { stp_dprintf(STP_DBG_CANON, v,"(canon_printhead_colors[inktype]) Found InkType %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); - if (ERRPRINT) - stp_eprintf(v,"(canon_printhead_colors[inktype]) Found InkType %i(%s)\n",canon_inktypes[i].ink_type,canon_inktypes[i].name); return canon_inktypes[i].ink_type; } } } else { /* no ink type selected yet */ - if (ERRPRINT) - stp_eprintf(v,"canon_printhead_colors: no mode and no inktype: we have to choose the highest one to return\n"); + stp_dprintf(STP_DBG_CANON, v,"canon_printhead_colors: no mode and no inktype: we have to choose the highest one to return\n"); /* loop through all modes, and return the highest inktype found */ for(i=0;i<sizeof(canon_inktypes)/sizeof(canon_inktypes[0]);i++){ for(j=0;j<caps->modelist->count;j++){ if(caps->modelist->modes[j].ink_types & canon_inktypes[i].ink_type){ stp_dprintf(STP_DBG_CANON, v," highest inktype found --- %s(%s)\n",canon_inktypes[i].name,canon_inktypes[i].text); - if (ERRPRINT) - stp_eprintf(v,"highest inktype found --- %s(%s)\n",canon_inktypes[i].name,canon_inktypes[i].text); return canon_inktypes[i].ink_type; } } @@ -2469,8 +2499,6 @@ canon_printhead_colors(const stp_vars_t*v) /* However, some Canon printers do not have monochrome mode at all, only color meta ink modes, like iP6000 series */ #if 0 stp_dprintf(STP_DBG_CANON, v,"(canon_printhead_colors[fall-through]) Returning InkType %i(CANON_INK_K)\n",CANON_INK_K); - if (ERRPRINT) - stp_eprintf(v,"(canon_printhead_colors[fall-through]) Found InkType %i(CANON_INK_K)\n",CANON_INK_K); return CANON_INK_K; #endif /* new fallback: loop through ink type in reverse order, picking first one found, which if CANON_INK_K is supported will be that, else the lowest amount of color */ @@ -2478,8 +2506,6 @@ canon_printhead_colors(const stp_vars_t*v) for(j=0;j<caps->modelist->count;j++){ if(caps->modelist->modes[j].ink_types & canon_inktypes[i].ink_type){ stp_dprintf(STP_DBG_CANON, v," lowest inktype found --- %s(%s)\n",canon_inktypes[i].name,canon_inktypes[i].text); - if (ERRPRINT) - stp_eprintf(v,"lowest inktype found --- %s(%s)\n",canon_inktypes[i].name,canon_inktypes[i].text); return canon_inktypes[i].ink_type; } } @@ -2522,28 +2548,63 @@ canon_size_type(const stp_vars_t *v, const canon_cap_t * caps) if (!strcmp(name,"w252h360J")) return 0x32; /* L --- similar to US 3.5x5 size */ if (!strcmp(name,"w360h504J")) return 0x33; /* 2L --- similar to US5x7 */ if (!strcmp(name,"w288h432J")) return 0x34; /* KG --- same size as US 4x6 */ + /* if (!strcmp(name,"CD5Inch")) return 0x35; */ /* CD Custom Tray */ if (!strcmp(name,"w155h257")) return 0x36; /* Japanese Business Card 55mm x 91mm */ if (!strcmp(name,"w360h504")) return 0x37; /* US5x7 */ if (!strcmp(name,"w420h567")) return 0x39; /* Ofuku Hagaki */ if (!strcmp(name,"w340h666")) return 0x3a; /* Japanese Long Env #3 (chou3) */ if (!strcmp(name,"w255h581")) return 0x3b; /* Japanese Long Env #4 (chou4) */ + /* if (!strcmp(name,"CD5Inch")) return 0x3f; */ /* CD Tray A */ + /* if (!strcmp(name,"CD5Inch")) return 0x40; */ /* CD Tray B */ if (!strcmp(name,"w155h244")) return 0x41; /* Business/Credit Card 54mm x 86mm */ + + /* Fine Art paper codes */ + /* iP6700D, iP7100, iP7500, iP8100, iP8600, iP9910 */ + /* iX7000 */ + /* MG6100, M6200, MG8100, MG8200 */ + /* MX7600 */ + /* MP950, MP960, MP970, MP980, MP990 */ /* if (!strcmp(name,"A4")) return 0x42; */ /* FineArt A4 35mm border --- iP7100: gap is 18 */ - /* if (!strcmp(name,"A3")) return 0x43; */ /* FineArt A3 35mm border --- iP7100: gap is 18 */ - /* if (!strcmp(name,"Letter")) return 0x44; */ /* FineArt Letter 35mm border --- iP7100: gap is 18 */ + /* if (!strcmp(name,"A3")) return 0x43; */ /* FineArt A3 35mm border */ + /* if (!strcmp(name,"A3plus")) return 0x44; */ /* FineArt A3plus 35mm border */ + /* if (!strcmp(name,"Letter")) return 0x45; */ /* FineArt Letter 35mm border */ + if (!strcmp(name,"w288h576")) return 0x46; /* US4x8 */ if (!strcmp(name,"w1008h1224J")) return 0x47; /* HanKire --- 14in x 17in */ if (!strcmp(name,"720h864J")) return 0x48; /* YonKire --- 10in x 12 in*/ if (!strcmp(name,"c8x10J")) return 0x49; /* RokuKire --- same size as 8x10 */ - /* if (!strcmp(name,"A4")) return 0x4d; */ /* ArtA4 35mm border */ - /* if (!strcmp(name,"A3")) return 0x4e; */ /* ArtA3 35mm border */ - /* if (!strcmp(name,"Letter")) return 0x4f; */ /* ArtLetter 35mm border */ + + /* if (!strcmp(name,"CD5Inch")) return 0x4a; */ /* CD Tray C */ + /* if (!strcmp(name,"CD5Inch")) return 0x4b; */ /* CD Tray D */ + /* if (!strcmp(name,"CD5Inch")) return 0x4c; */ /* CD Tray E */ + + /* Fine Art paper codes */ + /* Pro series (9000, 9000 Mk.2, 9500, 9500 Mk.2, PRO-1) */ + /* if (!strcmp(name,"A4")) return 0x4d; */ /* FineArt A4 35mm border */ + /* if (!strcmp(name,"A3")) return 0x4e; */ /* FineArt A3 35mm border */ + /* if (!strcmp(name,"Letter")) return 0x4f; */ /* FineArt Letter 35mm border */ + /* if (!strcmp(name,"A3plus")) return 0x50; */ /* FineArt A3plus 35mm border */ + + /* if (!strcmp(name,"CD5Inch")) return 0x51; */ /* CD Tray F */ if (!strcmp(name,"w288h512")) return 0x52; /* Wide101.6x180.6 */ /* w283h566 Wide postcard 148mm x 200mm */ /* media size codes for CD (and other media depending on printer model */ - if (!strcmp(name,"CD5Inch")) return 0x53; /* CD --- arbitrary choice here, modify in ESC (P command */ - /* similar needed for FineArt media which have common sizes but different codes */ + + if (!strcmp(name,"CD5Inch")) return 0x53; /* CD Tray G --- arbitrary choice here, modify in ESC (P command */ + /* if (!strcmp(name,"CD5Inch")) return 0x56; */ /* CD Tray G-late */ + /* if (!strcmp(name,"CD5Inch")) return 0x57; */ /* CD Tray H */ + + /* Fine Art paper codes */ + /* MG6300, MG6500, MG7100 (only A4) */ + /* iP8700, iX6800 (A3 */ + /* if (!strcmp(name,"A4")) return 0x58; */ /* FineArt A4 35mm border */ + /* if (!strcmp(name,"Letter")) return 0x5a; */ /* FineArt Letter 35mm border */ + /* if (!strcmp(name,"A3")) return 0x59; */ /* FineArt A3 35mm border */ + /* if (!strcmp(name,"A3plus")) return 0x5d; */ /* FineArt A3plus 35mm border */ + + /* if (!strcmp(name,"CD5Inch")) return 0x5b; */ /* CD Tray J */ + /* if (!strcmp(name,"CD5Inch")) return 0x62; */ /* CD Tray L */ /* custom */ @@ -2562,8 +2623,7 @@ canon_describe_resolution(const stp_vars_t *v, int *x, int *y) const canon_cap_t * caps = canon_get_model_capabilities(v); /* if mode is not yet set, it remains NULL */ - if (ERRPRINT) - stp_eprintf(v,"Calling get_current_parameter from canon_describe_resolution"); + stp_dprintf(STP_DBG_CANON, v,"Calling get_current_parameter from canon_describe_resolution\n"); mode = canon_get_current_mode(v); if(!mode) @@ -2646,7 +2706,7 @@ canon_parameters(const stp_vars_t *v, const char *name, if (strcmp(name, "PageSize") == 0) { const char* input_slot = stp_get_string_parameter(v, "InputSlot"); - int height_limit, width_limit; + unsigned int height_limit, width_limit; int papersizes = stp_known_papersizes(); description->bounds.str = stp_string_list_create(); @@ -2669,6 +2729,21 @@ canon_parameters(const stp_vars_t *v, const char *name, 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; @@ -2752,8 +2827,7 @@ canon_parameters(const stp_vars_t *v, const char *name, { const canon_mode_t* mode = NULL; - if (ERRPRINT) - stp_eprintf(v,"Calling get_current_parameter from InkType block in canon_parameters"); + stp_dprintf(STP_DBG_CANON, v,"Calling get_current_parameter from InkType block in canon_parameters\n"); mode=canon_get_current_mode(v); description->bounds.str= stp_string_list_create(); @@ -2762,8 +2836,6 @@ canon_parameters(const stp_vars_t *v, const char *name, if(mode->ink_types & canon_inktypes[i].ink_type){ stp_string_list_add_string(description->bounds.str,canon_inktypes[i].name,_(canon_inktypes[i].text)); stp_dprintf(STP_DBG_CANON, v," mode known --- Added InkType %s(%s) for mode %s (inktype %u)\n",canon_inktypes[i].name,canon_inktypes[i].text,mode->name,mode->ink_types); - if (ERRPRINT) - stp_eprintf(v,"mode known --- Added InkType %s(%s) for mode %s (inktype %u)\n",canon_inktypes[i].name,canon_inktypes[i].text,mode->name,mode->ink_types); } } description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; @@ -2775,8 +2847,6 @@ canon_parameters(const stp_vars_t *v, const char *name, if(caps->modelist->modes[j].ink_types & canon_inktypes[i].ink_type){ stp_string_list_add_string(description->bounds.str,canon_inktypes[i].name,_(canon_inktypes[i].text)); stp_dprintf(STP_DBG_CANON, v," no mode --- Added InkType %s(%s) for mode (%s) inktypes %u\n",canon_inktypes[i].name,canon_inktypes[i].text,caps->modelist->modes[j].name,caps->modelist->modes[j].ink_types); - if (ERRPRINT) - stp_eprintf(v,"no mode --- Added InkType %s(%s) for mode (%s) inktypes %u\n",canon_inktypes[i].name,canon_inktypes[i].text,caps->modelist->modes[j].name,caps->modelist->modes[j].ink_types); break; } } @@ -2800,8 +2870,6 @@ canon_parameters(const stp_vars_t *v, const char *name, if(ink_type == canon_inktypes[i].ink_type){ description->deflt.integer = canon_inktypes[i].num_channels; stp_dprintf(STP_DBG_CANON, v,"Added %d InkChannels\n",canon_inktypes[i].num_channels); - if (ERRPRINT) - stp_eprintf(v,"Added %d InkChannels\n",canon_inktypes[i].num_channels); } } description->bounds.integer.lower = -1; @@ -2840,37 +2908,31 @@ canon_parameters(const stp_vars_t *v, const char *name, const canon_mode_t* mode = NULL; /* mode remains NULL if not yet set */ - if (ERRPRINT) - stp_eprintf(v,"Calling get_current_mode from PrintingMode block in canon_parameter"); + stp_dprintf(STP_DBG_CANON, v,"Calling get_current_mode from PrintingMode block in canon_parameter\n"); mode = canon_get_current_mode(v); /* If mode is not set need to search ink types for all modes and see whether we have any color there */ - if (ERRPRINT) - stp_eprintf(v,"PrintingMode---entered enumeration block in canon_printers\n"); + stp_dprintf(STP_DBG_CANON, v,"PrintingMode---entered enumeration block in canon_printers\n"); description->bounds.str = stp_string_list_create(); - if (ERRPRINT) - stp_eprintf(v,"PrintingMode---created list\n"); + stp_dprintf(STP_DBG_CANON, v,"PrintingMode---created list\n"); if (mode) { - if (ERRPRINT) - stp_eprintf(v,"PrintingMode: (mode known) what is the current mode inktype value: %i\n",mode->ink_types); + stp_dprintf(STP_DBG_CANON, v,"PrintingMode: (mode known) what is the current mode inktype value: %i\n",mode->ink_types); /* e.g., ink_types is 21 = 16 + 4 + 1 */ if (mode->ink_types > 1) { stp_string_list_add_string (description->bounds.str, "Color", _("Color")); - if (ERRPRINT) - stp_eprintf(v,"PrintingMode: (mode known) added Color\n"); + stp_dprintf(STP_DBG_CANON, v,"PrintingMode: (mode known) added Color\n"); } if (mode->ink_types & CANON_INK_K) { stp_string_list_add_string (description->bounds.str, "BW", _("Black and White")); - if (ERRPRINT) - stp_eprintf(v,"PrintingMode: (mode known) added BW\n"); + stp_dprintf(STP_DBG_CANON, v,"PrintingMode: (mode known) added BW\n"); } } #if 0 @@ -2879,14 +2941,12 @@ canon_parameters(const stp_vars_t *v, const char *name, if (mode->ink_types != CANON_INK_K) { stp_string_list_add_string (description->bounds.str, "Color", _("Color")); - if (ERRPRINT) - stp_eprintf(v,"PrintingMode: (mode known) added Color\n"); + stp_dprintf(STP_DBG_CANON, v,"PrintingMode: (mode known) added Color\n"); } #endif else { /* mode not known yet --- needed for PPD generation */ - if (ERRPRINT) - stp_eprintf(v,"PrintingMode: entered mode not known conditional block\n"); + stp_dprintf(STP_DBG_CANON, v,"PrintingMode: entered mode not known conditional block\n"); /* add code to find color inks */ /* default type must be deduced from the default mode */ /* use color if available, so break after first (color) is found, since ink types ordered with gray last */ @@ -2897,8 +2957,7 @@ canon_parameters(const stp_vars_t *v, const char *name, stp_string_list_add_string (description->bounds.str, "Color", _("Color")); found_color=1; - if (ERRPRINT) - stp_eprintf(v,"PrintingMode: (mode not known) added Color\n"); + stp_dprintf(STP_DBG_CANON, v,"PrintingMode: (mode not known) added Color\n"); break; } } @@ -2912,8 +2971,7 @@ canon_parameters(const stp_vars_t *v, const char *name, stp_string_list_add_string (description->bounds.str, "BW", _("Black and White")); found_mono=1; - if (ERRPRINT) - stp_eprintf(v,"PrintingMode: (mode not known) added BW\n"); + stp_dprintf(STP_DBG_CANON, v,"PrintingMode: (mode not known) added BW\n"); break; } } @@ -2926,22 +2984,19 @@ canon_parameters(const stp_vars_t *v, const char *name, if(caps->modelist->modes[caps->modelist->default_mode].ink_types > 1){ stp_string_list_add_string (description->bounds.str, "Color", _("Color")); - if (ERRPRINT) - stp_eprintf(v,"PrintingMode: (mode not known) added Color\n"); + stp_dprintf(STP_DBG_CANON, v,"PrintingMode: (mode not known) added Color\n"); } if(caps->modelist->modes[caps->modelist->default_mode].ink_types & CANON_INK_K){ stp_string_list_add_string (description->bounds.str, "BW", _("Black and White")); - if (ERRPRINT) - stp_eprintf(v,"PrintingMode: (mode not known) added BW\n"); + stp_dprintf(STP_DBG_CANON, v,"PrintingMode: (mode not known) added BW\n"); } #endif #if 0 /* original code */ stp_string_list_add_string (description->bounds.str, "BW", _("Black and White")); - if (ERRPRINT) - stp_eprintf(v,"PrintingMode: added BW\n"); + stp_dprintf(STP_DBG_CANON, v,"PrintingMode: added BW\n"); #endif } @@ -3116,29 +3171,24 @@ internal_imageable_area(const stp_vars_t *v, /* I */ } /* temporarily limit to non-CD media until page size code moved here from do_print */ - /* Note: written beloe code to handle CD case as well */ + /* Note: written below code to handle CD case as well */ if(!cd){ - if (ERRPRINT) { - stp_eprintf(v,"internal_imageable_area: about to enter the borderless condition block\n"); - stp_eprintf(v,"internal_imageable_area: is borderless available? %016lx\n",caps->features & CANON_CAP_BORDERLESS); - stp_eprintf(v,"internal_imageable_area: is borderless selected? %d\n",stp_get_boolean_parameter(v, "FullBleed")); - } + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: about to enter the borderless condition block\n"); + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: is borderless available? %016lx\n",caps->features & CANON_CAP_BORDERLESS); + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: is borderless selected? %d\n",stp_get_boolean_parameter(v, "FullBleed")); if ( (caps->features & CANON_CAP_BORDERLESS) && (use_maximum_area || (!cd && stp_get_boolean_parameter(v, "FullBleed")))) { - if (ERRPRINT) - stp_eprintf(v,"internal_imageable_area: entered borderless condition\n"); + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: entered borderless condition\n"); if (pt) { - if (ERRPRINT) - stp_eprintf(v,"internal_imageable_area: entered pt condition\n"); + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: entered pt condition\n"); if (pt->left <= 0 && pt->right <= 0 && pt->top <= 0 && pt->bottom <= 0) { - if (ERRPRINT) - stp_eprintf(v,"internal_imageable_area: enetered margin<=0 condition\n"); + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: entered margin<=0 condition\n"); if (use_paper_margins) { unsigned width_limit = caps->max_width; @@ -3149,8 +3199,7 @@ internal_imageable_area(const stp_vars_t *v, /* I */ top_margin = -6; bottom_margin = -15; - if (ERRPRINT) - stp_eprintf(v,"internal_imageable_area: use_paper_margins so set margins all to -7\n"); + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: use_paper_margins so set margins all to -7\n"); } else { @@ -3159,8 +3208,7 @@ internal_imageable_area(const stp_vars_t *v, /* I */ top_margin = 0; bottom_margin = 0; - if (ERRPRINT) - stp_eprintf(v,"internal_imageable_area: does not use paper margins so set margins all to 0\n"); + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: does not use paper margins so set margins all to 0\n"); } } @@ -3168,26 +3216,20 @@ internal_imageable_area(const stp_vars_t *v, /* I */ } } - if (ERRPRINT) - { - stp_eprintf(v,"internal_imageable_area: left_margin %d\n",left_margin); - stp_eprintf(v,"internal_imageable_area: right_margin %d\n",right_margin); - stp_eprintf(v,"internal_imageable_area: top_margin %d\n",top_margin); - stp_eprintf(v,"internal_imageable_area: bottom_margin %d\n",bottom_margin); - } + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: left_margin %d\n",left_margin); + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: right_margin %d\n",right_margin); + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: top_margin %d\n",top_margin); + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: bottom_margin %d\n",bottom_margin); *left = left_margin; *right = width - right_margin; *top = top_margin; *bottom = length - bottom_margin; - if (ERRPRINT) - { - stp_eprintf(v,"internal_imageable_area: page_left %d\n",*left); - stp_eprintf(v,"internal_imageable_area: page_right %d\n",*right); - stp_eprintf(v,"internal_imageable_area: page_top %d\n",*top); - stp_eprintf(v,"internal_imageable_area: page_bottom %d\n",*bottom); - } + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: page_left %d\n",*left); + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: page_right %d\n",*right); + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: page_top %d\n",*top); + stp_dprintf(STP_DBG_CANON, v,"internal_imageable_area: page_bottom %d\n",*bottom); } @@ -3545,7 +3587,7 @@ canon_init_setESC_M(const stp_vars_t *v, const canon_privdata_t *init) /* ESC (p -- 0x70 -- cmdSetPageMargins2 --: */ static void -canon_init_setPageMargins2(const stp_vars_t *v, const canon_privdata_t *init) +canon_init_setPageMargins2(const stp_vars_t *v, canon_privdata_t *init) { unsigned char arg_70_1,arg_70_2,arg_70_3,arg_70_4; @@ -3554,6 +3596,28 @@ canon_init_setPageMargins2(const stp_vars_t *v, const canon_privdata_t *init) int border_right2; int border_bottom2; int area_right,area_top; + int test_cd; /* variable for activating experimental adjustments */ + /* CD tray size adjustments for paper dimensions */ + int adjust_tray_custom_length, adjust_tray_custom_width; + int adjust_tray_A_length, adjust_tray_A_width; + int adjust_tray_BCD_length, adjust_tray_BCD_width; + int adjust_tray_E_length, adjust_tray_E_width; + int adjust_tray_F_length, adjust_tray_F_width; + int adjust_tray_G_length, adjust_tray_G_width; + int adjust_tray_H_length, adjust_tray_H_width; + int adjust_tray_J_length, adjust_tray_J_width; + int adjust_tray_L_length, adjust_tray_L_width; + /* CD tray border adjustments */ + int adjust_tray_custom_left, adjust_tray_custom_right, adjust_tray_custom_top, adjust_tray_custom_bottom; + int adjust_tray_A_left, adjust_tray_A_right, adjust_tray_A_top, adjust_tray_A_bottom; + int adjust_tray_BCD_left, adjust_tray_BCD_right, adjust_tray_BCD_top, adjust_tray_BCD_bottom; + int adjust_tray_E_left, adjust_tray_E_right, adjust_tray_E_top, adjust_tray_E_bottom; + int adjust_tray_F_left, adjust_tray_F_right, adjust_tray_F_top, adjust_tray_F_bottom; + int adjust_tray_G_left, adjust_tray_G_right, adjust_tray_G_top, adjust_tray_G_bottom; + int adjust_tray_H_left, adjust_tray_H_right, adjust_tray_H_top, adjust_tray_H_bottom; + int adjust_tray_J_left, adjust_tray_J_right, adjust_tray_J_top, adjust_tray_J_bottom; + int adjust_tray_L_left, adjust_tray_L_right, adjust_tray_L_top, adjust_tray_L_bottom; + /* TOFIX: what exactly is to be sent? * Is it the printable length or the bottom border? @@ -3567,32 +3631,401 @@ canon_init_setPageMargins2(const stp_vars_t *v, const canon_privdata_t *init) const char* input_slot = stp_get_string_parameter(v, "InputSlot"); int print_cd= (input_slot && (!strcmp(input_slot, "CD"))); - if (ERRPRINT) { - stp_eprintf(v,"canon_init_setPageMargins2: borderless capability? %016lx\n", init->caps->features & CANON_CAP_BORDERLESS); - stp_eprintf(v,"canon_init_setPageMargins2: borderless active? %d\n", stp_get_boolean_parameter(v, "FullBleed")); + stp_dprintf(STP_DBG_CANON, v,"setPageMargins2: print_cd = %d\n",print_cd); + + test_cd = 1; + /* + Adjustments for different CD trays: + All based on the following settings: + CANON_CD_X = 176 + CANON_CD_Y = 405 + + Custom: + printable_width = init->page_width + 24; + printable_length = init->page_height + 132; + + A: + printable_width = init->page_width + 44; + printable_length = init->page_height + 151; + + B/C/D: + printable_width = init->page_width + 10; + printable_length = init->page_height + 84; + + E: + printable_width = init->page_width + 127; + printable_length = init->page_height + 186; + + F: + printable_width = init->page_width + 10; + printable_length = init->page_height + 95; + + G: + printable_width = init->page_width + 10; + printable_length = init->page_height + 127; + + H: + printable_width = init->page_width + 68; + printable_length = init->page_height + 481; + + J: + printable_width = init->page_width + 8; + printable_length = init->page_height + 44; + + L: + printable_width = init->page_width + 10; + printable_length = init->page_height + 263; + */ + + /* adjust paper dimensions for CD in points */ + adjust_tray_custom_length = 132; + adjust_tray_custom_width = 24; + adjust_tray_A_length = 151; + adjust_tray_A_width = 44; + adjust_tray_BCD_length = 84; + adjust_tray_BCD_width = 10; + adjust_tray_E_length = 186; + adjust_tray_E_width = 127; + adjust_tray_F_length = 95; + adjust_tray_F_width = 10; /* 10 calculated, but empirically 11 */ + adjust_tray_G_length = 127; + adjust_tray_G_width = 10; /* 10 calculated, but empirically 11 */ + adjust_tray_H_length = 481; + adjust_tray_H_width = 68; + adjust_tray_J_length = 44; + adjust_tray_J_width = 8; + adjust_tray_L_length = 263; + adjust_tray_L_width = 10; + + /* ensure less than or equal to Windows measurements by border adjustments in points */ + adjust_tray_custom_left = 0; + adjust_tray_custom_right = 0; + adjust_tray_custom_top = 0; + adjust_tray_custom_bottom = 0; + adjust_tray_A_left = 0; + adjust_tray_A_right = 0; + adjust_tray_A_top = 0; + adjust_tray_A_bottom = 0; + adjust_tray_BCD_left = 0; + adjust_tray_BCD_right = 0; + adjust_tray_BCD_top = 0; + adjust_tray_BCD_bottom = 0; + adjust_tray_E_left = 0; + adjust_tray_E_right = 0; + adjust_tray_E_top = 0; + adjust_tray_E_bottom = 0; + adjust_tray_F_left = 0; + adjust_tray_F_right = 0; + adjust_tray_F_top = 0; + adjust_tray_F_bottom = 0; + adjust_tray_G_left = 0; + adjust_tray_G_right = 0; + adjust_tray_G_top = 0; + adjust_tray_G_bottom = 0; + adjust_tray_H_left = 0; + adjust_tray_H_right = 0; + adjust_tray_H_top = 0; + adjust_tray_H_bottom = 0; + adjust_tray_J_left = 0; + adjust_tray_J_right = 0; + adjust_tray_J_top = 0; + adjust_tray_J_bottom = 0; + adjust_tray_L_left = 0; + adjust_tray_L_right = 0; + adjust_tray_L_top = 0; + adjust_tray_L_bottom = 0; + + if ((print_cd) && test_cd) { + /* test all of the parameters for CD */ + stp_dprintf(STP_DBG_CANON, v,"==========Start Test Printout=========='\n"); + + stp_dprintf(STP_DBG_CANON, v, "Tray Custom original init->page_width (pts): '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray Custom original init->page_height (pts): '%d'\n",init->page_height); + stp_dprintf(STP_DBG_CANON, v, "Tray Custom modified init->page_width (pts): '%d'\n",init->page_width + adjust_tray_custom_width); + stp_dprintf(STP_DBG_CANON, v, "Tray Custom modified init->page_height (pts): '%d'\n",init->page_height + adjust_tray_custom_length); + stp_dprintf(STP_DBG_CANON, v, "Tray Custom printable width (pts): '%d'\n",(init->page_width + adjust_tray_custom_width + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray Custom printable length (pts): '%d'\n",(init->page_height + adjust_tray_custom_length + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray Custom page_width (1/600): '%d'\n",(init->page_width + adjust_tray_custom_width) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray Custom page_height (1/600): '%d'\n",(init->page_height + adjust_tray_custom_length) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray Custom paper_width (1/600): '%d'\n",(init->page_width + adjust_tray_custom_width + 20 + adjust_tray_custom_left + adjust_tray_custom_right) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray Custom paper_height (1/600): '%d'\n",(init->page_height + adjust_tray_custom_length + 24 + adjust_tray_custom_top + adjust_tray_custom_bottom) * unit / 72); + + stp_dprintf(STP_DBG_CANON, v, "Tray A original init->page_width (pts): '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray A original init->page_height (pts): '%d'\n",init->page_height); + stp_dprintf(STP_DBG_CANON, v, "Tray A modified init->page_width (pts): '%d'\n",init->page_width + adjust_tray_A_width); + stp_dprintf(STP_DBG_CANON, v, "Tray A modified init->page_height (pts): '%d'\n",init->page_height + adjust_tray_A_length); + stp_dprintf(STP_DBG_CANON, v, "Tray A printable width (pts): '%d'\n",(init->page_width + adjust_tray_A_width + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray A printable length (pts): '%d'\n",(init->page_height + adjust_tray_A_length + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray A page_width (1/600): '%d'\n",(init->page_width + adjust_tray_A_width) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray A page_height (1/600): '%d'\n",(init->page_height + adjust_tray_A_length) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray A paper_width (1/600): '%d'\n",(init->page_width + adjust_tray_A_width + 20 + adjust_tray_A_left + adjust_tray_A_right ) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray A paper_height (1/600): '%d'\n",(init->page_height + adjust_tray_A_length + 24 + adjust_tray_A_top + adjust_tray_A_bottom) * unit / 72); + + stp_dprintf(STP_DBG_CANON, v, "Tray B/C/D original init->page_width (pts): '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray B/C/D original init->page_height (pts): '%d'\n",init->page_height); + stp_dprintf(STP_DBG_CANON, v, "Tray B/C/D modified init->page_width (pts): '%d'\n",init->page_width + adjust_tray_BCD_width); + stp_dprintf(STP_DBG_CANON, v, "Tray B/C/D modified init->page_height (pts): '%d'\n",init->page_height + adjust_tray_BCD_length); + stp_dprintf(STP_DBG_CANON, v, "Tray B/C/D printable width (pts): '%d'\n",(init->page_width + adjust_tray_BCD_width + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray B/C/D printable length (pts): '%d'\n",(init->page_height + adjust_tray_BCD_length + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray B/C/D page_width (1/600): '%d'\n",(init->page_width + adjust_tray_BCD_width) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray B/C/D page_height (1/600): '%d'\n",(init->page_height + adjust_tray_BCD_length) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray B/C/D paper_width (1/600): '%d'\n",(init->page_width + adjust_tray_BCD_width + 20 + adjust_tray_BCD_left + adjust_tray_BCD_right) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray B/C/D paper_height (1/600): '%d'\n",(init->page_height + adjust_tray_BCD_length + 24 + adjust_tray_BCD_top + adjust_tray_BCD_bottom) * unit / 72); + + stp_dprintf(STP_DBG_CANON, v, "Tray E original init->page_width (pts): '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray E original init->page_height (pts): '%d'\n",init->page_height); + stp_dprintf(STP_DBG_CANON, v, "Tray E modified init->page_width (pts): '%d'\n",init->page_width + adjust_tray_E_width); + stp_dprintf(STP_DBG_CANON, v, "Tray E modified init->page_height (pts): '%d'\n",init->page_height + adjust_tray_E_length); + stp_dprintf(STP_DBG_CANON, v, "Tray E printable width (pts): '%d'\n",(init->page_width + adjust_tray_E_width + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray E printable length (pts): '%d'\n",(init->page_height + adjust_tray_E_length + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray E page_width (1/600): '%d'\n",(init->page_width + adjust_tray_E_width) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray E page_height (1/600): '%d'\n",(init->page_height + adjust_tray_E_length) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray E paper_width (1/600): '%d'\n",(init->page_width + adjust_tray_E_width + 20 + adjust_tray_E_left + adjust_tray_E_right) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray E paper_height (1/600): '%d'\n",(init->page_height + adjust_tray_E_length + 24 + adjust_tray_E_top + adjust_tray_E_bottom) * unit / 72); + + stp_dprintf(STP_DBG_CANON, v, "Tray F original init->page_width (pts): '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray F original init->page_height (pts): '%d'\n",init->page_height); + stp_dprintf(STP_DBG_CANON, v, "Tray F modified init->page_width (pts): '%d'\n",init->page_width + adjust_tray_F_width); + stp_dprintf(STP_DBG_CANON, v, "Tray F modified init->page_height (pts): '%d'\n",init->page_height + adjust_tray_F_length); + stp_dprintf(STP_DBG_CANON, v, "Tray F printable width (pts): '%d'\n",(init->page_width + adjust_tray_F_width + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray F printable length (pts): '%d'\n",(init->page_height + adjust_tray_F_length + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray F page_width (1/600): '%d'\n",(init->page_width + adjust_tray_F_width) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray F page_height (1/600): '%d'\n",(init->page_height + adjust_tray_F_length) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray F paper_width (1/600): '%d'\n",(init->page_width + adjust_tray_F_width + 20 + adjust_tray_F_left + adjust_tray_F_right) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray F paper_height (1/600): '%d'\n",(init->page_height + adjust_tray_F_length + 24 + adjust_tray_F_top + adjust_tray_F_bottom) * unit / 72); + + stp_dprintf(STP_DBG_CANON, v, "Tray G original init->page_width (pts): '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray G original init->page_height (pts): '%d'\n",init->page_height); + stp_dprintf(STP_DBG_CANON, v, "Tray G modified init->page_width (pts): '%d'\n",init->page_width + adjust_tray_G_width); + stp_dprintf(STP_DBG_CANON, v, "Tray G modified init->page_height (pts): '%d'\n",init->page_height + adjust_tray_G_length); + stp_dprintf(STP_DBG_CANON, v, "Tray G printable width (pts): '%d'\n",(init->page_width + adjust_tray_G_width + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray G printable length (pts): '%d'\n",(init->page_height + adjust_tray_G_length + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray G page_width (1/600): '%d'\n",(init->page_width + adjust_tray_G_width) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray G page_height (1/600): '%d'\n",(init->page_height + adjust_tray_G_length) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray G paper_width (1/600): '%d'\n",(init->page_width + adjust_tray_G_width + 20 + adjust_tray_G_left + adjust_tray_G_right) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray G paper_height (1/600): '%d'\n",(init->page_height + adjust_tray_G_length + 24 + adjust_tray_G_top + adjust_tray_G_bottom) * unit / 72); + + stp_dprintf(STP_DBG_CANON, v, "Tray H original init->page_width (pts): '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray H original init->page_height (pts): '%d'\n",init->page_height); + stp_dprintf(STP_DBG_CANON, v, "Tray H modified init->page_width (pts): '%d'\n",init->page_width + adjust_tray_H_width); + stp_dprintf(STP_DBG_CANON, v, "Tray H modified init->page_height (pts): '%d'\n",init->page_height + adjust_tray_H_length); + stp_dprintf(STP_DBG_CANON, v, "Tray H printable width (pts): '%d'\n",(init->page_width + adjust_tray_H_width + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray H printable length (pts): '%d'\n",(init->page_height + adjust_tray_H_length + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray H page_width (1/600): '%d'\n",(init->page_width + adjust_tray_H_width) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray H page_height (1/600): '%d'\n",(init->page_height + adjust_tray_H_length) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray H paper_width (1/600): '%d'\n",(init->page_width + adjust_tray_H_width + 20 + adjust_tray_H_left + adjust_tray_H_right) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray H paper_height (1/600): '%d'\n",(init->page_height + adjust_tray_H_length + 24 + adjust_tray_H_top + adjust_tray_H_bottom) * unit / 72); + + stp_dprintf(STP_DBG_CANON, v, "Tray J original init->page_width (pts): '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray J original init->page_height (pts): '%d'\n",init->page_height); + stp_dprintf(STP_DBG_CANON, v, "Tray J modified init->page_width (pts): '%d'\n",init->page_width + adjust_tray_J_width); + stp_dprintf(STP_DBG_CANON, v, "Tray J modified init->page_height (pts): '%d'\n",init->page_height + adjust_tray_J_length); + stp_dprintf(STP_DBG_CANON, v, "Tray J printable width (pts): '%d'\n",(init->page_width + adjust_tray_J_width + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray J printable length (pts): '%d'\n",(init->page_height + adjust_tray_J_length + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray J page_width (1/600): '%d'\n",(init->page_width + adjust_tray_J_width) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray J page_height (1/600): '%d'\n",(init->page_height + adjust_tray_J_length) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray J paper_width (1/600): '%d'\n",(init->page_width + adjust_tray_J_width + 20 + adjust_tray_J_left + adjust_tray_J_right) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray J paper_height (1/600): '%d'\n",(init->page_height + adjust_tray_J_length + 24 + adjust_tray_J_top + adjust_tray_J_bottom) * unit / 72); + + stp_dprintf(STP_DBG_CANON, v, "Tray L original init->page_width (pts): '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray L original init->page_height (pts): '%d'\n",init->page_height); + stp_dprintf(STP_DBG_CANON, v, "Tray L modified init->page_width (pts): '%d'\n",init->page_width + adjust_tray_L_width); + stp_dprintf(STP_DBG_CANON, v, "Tray L modified init->page_height (pts): '%d'\n",init->page_height + adjust_tray_L_length); + stp_dprintf(STP_DBG_CANON, v, "Tray L printable width (pts): '%d'\n",(init->page_width + adjust_tray_L_width + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray L printable length (pts): '%d'\n",(init->page_height + adjust_tray_L_length + 1) * 5 / 6); + stp_dprintf(STP_DBG_CANON, v, "Tray L page_width (1/600): '%d'\n",(init->page_width + adjust_tray_L_width) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray L page_height (1/600): '%d'\n",(init->page_height + adjust_tray_L_length) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray L paper_width (1/600): '%d'\n",(init->page_width + adjust_tray_L_width + 20 + adjust_tray_L_left + adjust_tray_L_right) * unit / 72); + stp_dprintf(STP_DBG_CANON, v, "Tray L paper_height (1/600): '%d'\n",(init->page_height + adjust_tray_L_length + 24 + adjust_tray_L_top + adjust_tray_L_bottom) * unit / 72); + + stp_dprintf(STP_DBG_CANON, v,"==========End Test Printout=========='\n"); + } + + /* Tray Custom */ + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA MP710")) && (test_cd==1) ) { + + init->page_width +=24; + init->page_height +=132; + + stp_dprintf(STP_DBG_CANON, v, "Tray Custom modified init->page_width: '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray Custom modified init->page_height: '%d'\n",init->page_height); + + printable_width= (init->page_width+ 1)*5/6; + printable_length= (init->page_height + 1)*5/6; + + stp_dprintf(STP_DBG_CANON, v, "Tray Custom modified printable_width: '%d'\n",printable_width); + stp_dprintf(STP_DBG_CANON, v, "Tray Custom modified printable_length: '%d'\n",printable_length); + + } + + /* Tray A */ + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA iP9910")) && (test_cd==1) ) { + + init->page_width +=44; + init->page_height +=151; + + stp_dprintf(STP_DBG_CANON, v, "Tray A modified init->page_width: '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray A modified init->page_height: '%d'\n",init->page_height); + + printable_width= (init->page_width+ 1)*5/6; + printable_length= (init->page_height + 1)*5/6; + + stp_dprintf(STP_DBG_CANON, v, "Tray A modified printable_width: '%d'\n",printable_width); + stp_dprintf(STP_DBG_CANON, v, "Tray A modified printable_length: '%d'\n",printable_length); + + } + + /* Tray B,C,D */ + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA iP3000")) && (test_cd==1) ) { + + init->page_width +=10; + init->page_height +=84; + + stp_dprintf(STP_DBG_CANON, v, "Tray B/C/D modified init->page_width: '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray B/C/B modified init->page_height: '%d'\n",init->page_height); + + printable_width= (init->page_width+ 1)*5/6; + printable_length= (init->page_height + 1)*5/6; + + stp_dprintf(STP_DBG_CANON, v, "Tray B/C/D modified printable_width: '%d'\n",printable_width); + stp_dprintf(STP_DBG_CANON, v, "Tray B/C/D modified printable_length: '%d'\n",printable_length); + + } + + /* Tray E */ + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA Pro9000")) && (test_cd==1) ) { + + init->page_width +=127; + init->page_height +=186; + + stp_dprintf(STP_DBG_CANON, v, "Tray E modified init->page_width: '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray E modified init->page_height: '%d'\n",init->page_height); + + printable_width= (init->page_width+ 1)*5/6; + printable_length= (init->page_height + 1)*5/6; + + stp_dprintf(STP_DBG_CANON, v, "Tray E modified printable_width: '%d'\n",printable_width); + stp_dprintf(STP_DBG_CANON, v, "Tray E modified printable_length: '%d'\n",printable_length); + + } + + /* Tray F */ + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA iP4500")) && (test_cd==1) ) { + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: Tray F init->page_width: '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: Tray F init->page_height: '%d'\n",init->page_height); + + stp_dprintf(STP_DBG_CANON, v, "Tray F init->page_width: '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray F init->page_height: '%d'\n",init->page_height); + stp_dprintf(STP_DBG_CANON, v, "Tray F initial printable_width: '%d'\n",printable_width); + stp_dprintf(STP_DBG_CANON, v, "Tray F initial printable_length: '%d'\n",printable_length); + + init->page_width +=10; + init->page_height +=95; + + stp_dprintf(STP_DBG_CANON, v, "Tray F modified init->page_width: '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray F modified init->page_height: '%d'\n",init->page_height); + + printable_width= (init->page_width+ 1)*5/6; + printable_length= (init->page_height + 1)*5/6; + + stp_dprintf(STP_DBG_CANON, v, "Tray F modified printable_width: '%d'\n",printable_width); + stp_dprintf(STP_DBG_CANON, v, "Tray F modified printable_length: '%d'\n",printable_length); + + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: Tray F modified printable_width: '%d'\n",printable_width); + stp_dprintf(STP_DBG_CANON, v,"DEBUG: Gutenprint: Tray F modified printable_length: '%d'\n",printable_length); + } + + /* Tray G */ + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA iP4700")) && (test_cd==1) ) { + + init->page_width +=10; + init->page_height +=127; + + stp_dprintf(STP_DBG_CANON, v, "Tray G modified init->page_width: '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray G modified init->page_height: '%d'\n",init->page_height); + + printable_width= (init->page_width+ 1)*5/6; + printable_length= (init->page_height + 1)*5/6; + + stp_dprintf(STP_DBG_CANON, v, "Tray G modified printable_width: '%d'\n",printable_width); + stp_dprintf(STP_DBG_CANON, v, "Tray G modified printable_length: '%d'\n",printable_length); + + } + + /* Tray H */ + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA PRO-1")) && (test_cd==1) ) { + + init->page_width +=68; + init->page_height +=481; + + stp_dprintf(STP_DBG_CANON, v, "Tray H modified init->page_width: '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray H modified init->page_height: '%d'\n",init->page_height); + + printable_width= (init->page_width+ 1)*5/6; + printable_length= (init->page_height + 1)*5/6; + + stp_dprintf(STP_DBG_CANON, v, "Tray H modified printable_width: '%d'\n",printable_width); + stp_dprintf(STP_DBG_CANON, v, "Tray H modified printable_length: '%d'\n",printable_length); + + } + + /* Tray J */ + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA iP7200")) && (test_cd==1) ) { + + init->page_width +=8; + init->page_height +=44; + + stp_dprintf(STP_DBG_CANON, v, "Tray J modified init->page_width: '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray J modified init->page_height: '%d'\n",init->page_height); + + printable_width= (init->page_width+ 1)*5/6; + printable_length= (init->page_height + 1)*5/6; + + stp_dprintf(STP_DBG_CANON, v, "Tray J modified printable_width: '%d'\n",printable_width); + stp_dprintf(STP_DBG_CANON, v, "Tray J modified printable_length: '%d'\n",printable_length); + + } + + /* Tray L */ + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA iP8700")) && (test_cd==1) ) { + + init->page_width +=10; + init->page_height +=263; + + stp_dprintf(STP_DBG_CANON, v, "Tray L modified init->page_width: '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "Tray L modified init->page_height: '%d'\n",init->page_height); + + printable_width= (init->page_width+ 1)*5/6; + printable_length= (init->page_height + 1)*5/6; + + stp_dprintf(STP_DBG_CANON, v, "Tray L modified printable_width: '%d'\n",printable_width); + stp_dprintf(STP_DBG_CANON, v, "Tray L modified printable_length: '%d'\n",printable_length); + } if ( (init->caps->features & CANON_CAP_BORDERLESS) && !(print_cd) && stp_get_boolean_parameter(v, "FullBleed") ) { - if (ERRPRINT) - stp_eprintf(v,"canon_init_setPageMargins2: for borderless set printable length and width to 0\n"); + stp_dprintf(STP_DBG_CANON, v,"canon_init_setPageMargins2: for borderless set printable length and width to 0\n"); /* set to 0 for borderless */ printable_width = 0; printable_length = 0; } + /* arguments for short form of Esc (p command */ arg_70_1= (printable_length >> 8) & 0xff; arg_70_2= (printable_length) & 0xff; arg_70_3= (printable_width >> 8) & 0xff; arg_70_4= (printable_width) & 0xff; + if (!(init->caps->features & CANON_CAP_px) && !(init->caps->features & CANON_CAP_p)) return; 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 iP4600")) || !(strcmp(init->caps->name,"PIXMA iP4700")) || !(strcmp(init->caps->name,"PIXMA iP4800")) || !(strcmp(init->caps->name,"PIXMA iP4900")) || !(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 MG8100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) ) + if ( !( input_slot && !(strcmp(input_slot,"CD")) ) || !(strcmp(init->caps->name,"PIXMA iP4500")) || !(strcmp(init->caps->name,"PIXMA iP4600")) || !(strcmp(init->caps->name,"PIXMA iP4700")) || !(strcmp(init->caps->name,"PIXMA iP4800")) || !(strcmp(init->caps->name,"PIXMA iP4900")) || !(strcmp(init->caps->name,"PIXMA iP7200")) || !(strcmp(init->caps->name,"PIXMA MP980")) || !(strcmp(init->caps->name,"PIXMA MP990")) || !(strcmp(init->caps->name,"PIXMA MG5200")) || !(strcmp(init->caps->name,"PIXMA MG5300")) || !(strcmp(init->caps->name,"PIXMA MG6100")) || !(strcmp(init->caps->name,"PIXMA MG6200")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA MG8100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) || !(strcmp(init->caps->name,"PIXMA iP9910")) || !(strcmp(init->caps->name,"PIXMA MP710")) || !(strcmp(init->caps->name,"PIXMA iP3000")) || !(strcmp(init->caps->name,"PIXMA Pro9000")) || !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) ) + /* need to check if iP9910, MP710, iP3000, Pro9000 use Esc (p */ { /* original borders */ @@ -3603,7 +4036,7 @@ canon_init_setPageMargins2(const stp_vars_t *v, const canon_privdata_t *init) if (print_cd) { border_top=9; - border_bottom=9; + border_bottom=15; /* was 9 originally */ } /* modified borders */ @@ -3612,8 +4045,72 @@ canon_init_setPageMargins2(const stp_vars_t *v, const canon_privdata_t *init) border_right2=border_right; border_bottom2=border_bottom; - area_right = border_left2 * unit / 72; - area_top = border_top2 * unit / 72; + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA MP710")) && (test_cd==1) ) { + border_left2 = border_left + adjust_tray_custom_left; + border_right2 = border_right + adjust_tray_custom_right; + border_top2 = border_top + adjust_tray_custom_top; + border_bottom2 = border_bottom + adjust_tray_custom_bottom; + } + + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA iP9910")) && (test_cd==1) ) { + border_left2 = border_left + adjust_tray_A_left; + border_right2 = border_right + adjust_tray_A_right; + border_top2 = border_top + adjust_tray_A_top; + border_bottom2 = border_bottom + adjust_tray_A_bottom; + } + + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA iP3000")) && (test_cd==1) ) { + border_left2 = border_left + adjust_tray_BCD_left; + border_right2 = border_right + adjust_tray_BCD_right; + border_top2 = border_top + adjust_tray_BCD_top; + border_bottom2 = border_bottom + adjust_tray_BCD_bottom; + } + + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA Pro9000")) && (test_cd==1) ) { + border_left2 = border_left + adjust_tray_E_left; + border_right2 = border_right + adjust_tray_E_right; + border_top2 = border_top + adjust_tray_E_top; + border_bottom2 = border_bottom + adjust_tray_E_bottom; + } + + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA iP4500")) && (test_cd==1) ) { + border_left2 = border_left + adjust_tray_F_left; + border_right2 = border_right + adjust_tray_F_right; + border_top2 = border_top + adjust_tray_F_top; + border_bottom2 = border_bottom + adjust_tray_F_bottom; + } + + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA iP4700")) && (test_cd==1) ) { + border_left2 = border_left + adjust_tray_G_left; + border_right2 = border_right + adjust_tray_G_right; + border_top2 = border_top + adjust_tray_G_top; + border_bottom2 = border_bottom + adjust_tray_G_bottom; + } + + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA PRO-1")) && (test_cd==1) ) { + border_left2 = border_left + adjust_tray_H_left; + border_right2 = border_right + adjust_tray_H_right; + border_top2 = border_top + adjust_tray_H_top; + border_bottom2 = border_bottom + adjust_tray_H_bottom; + } + + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA iP7200")) && (test_cd==1) ) { + border_left2 = border_left + adjust_tray_J_left; + border_right2 = border_right + adjust_tray_J_right; + border_top2 = border_top + adjust_tray_J_top; + border_bottom2 = border_bottom + adjust_tray_J_bottom; + } + + if ( (print_cd) && !(strcmp(init->caps->name,"PIXMA iP8700")) && (test_cd==1) ) { + border_left2 = border_left + adjust_tray_L_left; + border_right2 = border_right + adjust_tray_L_right; + border_top2 = border_top + adjust_tray_L_top; + border_bottom2 = border_bottom + adjust_tray_L_bottom; + } + + /* this does not seem to need adjustment, so use original borders */ + area_right = border_left * unit / 72; + area_top = border_top * unit / 72; if ( (init->caps->features & CANON_CAP_BORDERLESS) && !(print_cd) && stp_get_boolean_parameter(v, "FullBleed") ) { @@ -3625,21 +4122,24 @@ canon_init_setPageMargins2(const stp_vars_t *v, const canon_privdata_t *init) area_top = border_top2 * unit / 72; } - if (ERRPRINT) { - stp_eprintf(v,"setPageMargins2: init->page_height = %d\n",init->page_height); - stp_eprintf(v,"setPageMargins2: printable_length = %d\n",printable_length); - stp_eprintf(v,"setPageMargins2: paper_height = %d\n",(init->page_height + border_top + border_bottom) * unit / 72); - } + stp_dprintf(STP_DBG_CANON, v,"setPageMargins2: init->page_height = %d\n",init->page_height); + stp_dprintf(STP_DBG_CANON, v,"setPageMargins2: printable_length = %d\n",printable_length); + stp_dprintf(STP_DBG_CANON, v,"setPageMargins2: paper_height = %d\n",(init->page_height + border_top + border_bottom) * unit / 72); + + stp_dprintf(STP_DBG_CANON, v, "final init->page_width: '%d'\n",init->page_width); + stp_dprintf(STP_DBG_CANON, v, "final init->page_height: '%d'\n",init->page_height); + stp_dprintf(STP_DBG_CANON, v, "final printable_width: '%d'\n",printable_width); + stp_dprintf(STP_DBG_CANON, v, "final printable_length: '%d'\n",printable_length); stp_zfwrite(ESC28,2,1,v); /* ESC( */ stp_putc(0x70,v); /* p */ stp_put16_le(46, v); /* len */ /* 0 for borderless, calculated otherwise */ - stp_put16_be(printable_length,v); /* Windows 698, gutenprint 570 */ + stp_put16_be(printable_length,v); /* printable_length */ stp_put16_be(0,v); /* 0 for borderless, calculated otherwise */ - stp_put16_be(printable_width,v); /* Windows 352, gutenprint 342 */ + stp_put16_be(printable_width,v); /* printable_width */ stp_put16_be(0,v); stp_put32_be(0,v); stp_put16_be(unit,v); @@ -3647,15 +4147,47 @@ canon_init_setPageMargins2(const stp_vars_t *v, const canon_privdata_t *init) /* depends on borderless or not: uses modified borders */ stp_put32_be(area_right,v); /* area_right : Windows seems to use 9.6, gutenprint uses 10 */ stp_put32_be(area_top,v); /* area_top : Windows seems to use 8.4, gutenprint uses 15 */ + /* calculated depending on borderless or not: uses modified borders */ - stp_put32_be((init->page_width + (border_left - border_left2) + (border_right - border_right2) ) * unit / 72,v); /* area_width : Windows seems to use 352 for Tray G, gutenprint uses 340.92 */ - stp_put32_be((init->page_height + (border_top - border_top2) + (border_bottom - border_bottom2) ) * unit / 72,v); /* area_length : Windows seems to use 698.28 for Tray G, gutenprint uses 570 */ + if ( (init->caps->features & CANON_CAP_BORDERLESS) && + !(print_cd) && stp_get_boolean_parameter(v, "FullBleed") ) { + stp_put32_be((init->page_width - border_left2 - border_right2 ) * unit / 72,v); /* area_width */ + stp_put32_be((init->page_height - border_top2 - border_bottom2 ) * unit / 72,v); /* area_length */ + } + else { + /* for CD */ + if ( (print_cd) && (test_cd==1) ) { + stp_put32_be(init->page_width * unit / 72,v); /* area_width */ + stp_put32_be(init->page_height * unit / 72,v); /* area_length */ + } + else { /* no CD */ + stp_put32_be((init->page_width) * unit / 72,v); /* area_width */ + stp_put32_be((init->page_height) * unit / 72,v); /* area_length */ + } + } + /* 0 under all currently known circumstances */ stp_put32_be(0,v); /* paper_right : Windows also 0 here for all Trays */ stp_put32_be(0,v); /* paper_top : Windows also 0 here for all Trays */ + /* standard paper sizes, unchanged for borderless so use original borders */ - stp_put32_be((init->page_width + border_left + border_right) * unit / 72,v); /* paper_width : Windows 371.4, gutenprint 360.96 */ - stp_put32_be((init->page_height + border_top + border_bottom) * unit / 72,v); /* paper_height : Windows 720.96, gutenprint 600 */ + if ( (init->caps->features & CANON_CAP_BORDERLESS) && + !(print_cd) && stp_get_boolean_parameter(v, "FullBleed") ) { + stp_put32_be((init->page_width) * unit / 72,v); /* paper_width */ + stp_put32_be((init->page_height) * unit / 72,v); /* paper_length */ + } + else { + /* for CD */ + if ( (print_cd) && (test_cd==1) ) { + stp_put32_be((init->page_width + border_left2 + border_right2) * unit / 72,v); /* paper_width */ + stp_put32_be((init->page_height + border_top2 + border_bottom2) * unit / 72,v); /* paper_length */ + } + else { /* not CD */ + stp_put32_be((init->page_width + border_left + border_right) * unit / 72,v); /* paper_width */ + stp_put32_be((init->page_height + border_top + border_bottom) * unit / 72,v); /* paper_length */ + } + } + return; } } @@ -3670,12 +4202,23 @@ canon_init_setPageMargins2(const stp_vars_t *v, const canon_privdata_t *init) static void canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init) { - unsigned char arg_ESCP_1, arg_ESCP_2; + unsigned char arg_ESCP_1, arg_ESCP_2, arg_ESCP_9; if(!(init->caps->features & CANON_CAP_P)) return; 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")) ) { + arg_ESCP_9 = 0x02; + } + else if ( !(strcmp(init->caps->name,"PIXMA MG3500")) || !(strcmp(init->caps->name,"PIXMA MG5500")) || !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) ) { + arg_ESCP_9 = 0xff; + } + + else { + arg_ESCP_9 = 0x00; + } + /* workaround for CD media */ @@ -3711,10 +4254,19 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init) if ( !(strcmp(init->caps->name,"PIXMA MP600")) || !(strcmp(init->caps->name,"PIXMA MP610")) || !(strcmp(init->caps->name,"PIXMA MP810")) || !(strcmp(init->caps->name,"PIXMA MP960")) || !(strcmp(init->caps->name,"PIXMA MP970")) || !(strcmp(init->caps->name,"PIXMA MX850")) || !(strcmp(init->caps->name,"PIXMA iP4300")) || !(strcmp(init->caps->name,"PIXMA iP4500")) || !(strcmp(init->caps->name,"PIXMA iP5300")) ) { arg_ESCP_1 = 0x51; } - /* Tray G from iP4800 onwards */ - if ( !(strcmp(init->caps->name,"PIXMA iP4800")) || !(strcmp(init->caps->name,"PIXMA iP4900")) || !(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 MG8100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) ) { + /* Tray G from iP4600 onwards */ + if ( !(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 MG5200")) || !(strcmp(init->caps->name,"PIXMA MG5300")) || !(strcmp(init->caps->name,"PIXMA MG6100")) || !(strcmp(init->caps->name,"PIXMA MG6200")) || !(strcmp(init->caps->name,"PIXMA MG8100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) ) { arg_ESCP_1 = 0x56; } + /* Tray J from iP7200 onwards */ + if ( !(strcmp(init->caps->name,"PIXMA iP7200")) || !(strcmp(init->caps->name,"PIXMA MG5400")) || !(strcmp(init->caps->name,"PIXMA MG6300")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA MX920")) ) { + arg_ESCP_1 = 0x5b; + arg_ESCP_9 = 0x00; + } + /* Tray J from iP8700 onwards */ + if ( !(strcmp(init->caps->name,"PIXMA iP8700")) ) { + arg_ESCP_1 = 0x62; + } } } /* 850i: CD Tray custom: none --- no ESC (P */ @@ -3744,6 +4296,7 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init) /* MP980: CD Tray G : 0x53 */ /* MP990: CD Tray G : 0x53 */ /* MX850: CD Tray F : 0x51 */ + /* MX920: CD Tray J : 0x5b */ /* iP3000: CD Tray B : 0x40 */ /* iP3100: CD Tray B : 0x40 */ /* iP4000: CD Tray B : 0x40 */ @@ -3762,15 +4315,20 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init) /* iP6100D:CD Tray B : 0x40 */ /* iP6700D:CD Tray C : 0x4a */ /* iP7100: CD Tray B : 0x40 */ + /* iP7200: CD Tray J : 0x5b */ /* iP7500: CD Tray C : 0x4a */ /* iP8100: CD Tray B : 0x40 */ /* iP8500 :CD Tray B : 0x40 */ /* iP8600: CD Tray B : 0x40 */ + /* iP8700: CD Tray L : 0x62 */ /* iP9910: CD Tray A : 0x3f */ /* MG5200: CD Tray G : 0x56 */ /* MG5300: CD Tray G : 0x56 */ + /* MG5400: CD Tray J : 0x5b */ /* MG6100: CD Tray G : 0x56 */ /* MG6200: CD Tray G : 0x56 */ + /* MG6300: CD Tray J : 0x5b */ + /* MG6500: CD Tray J : 0x5b */ /* MG8100: CD Tray G : 0x56 */ /* MG8200: CD Tray G : 0x56 */ /* pro9000:CD Tray E : 0x4c */ @@ -3779,60 +4337,140 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init) /* pro9500mk2:CD Tray E : 0x4c */ /* PRO-1: CD Tray H : 0x57 */ - - /* workaround for FineArt media having same size as non-FineArt media */ - /* MP950: FineArtA4 : 0x42 */ - /* MP960: FineArtA4 : 0x42 */ - /* MP970: FineArtA4 : 0x42 */ - /* MP980: FineArtA4 : 0x42 */ - /* MP990: FineArtA4 : 0x42 */ - /* MX7600: FineArtA4 : 0x42 */ - /* iP6700D:FineArtA4 : 0x42 */ - /* iP7100: FineArtA4 : 0x42 */ - /* iP7500: FineArtA4 : 0x42 */ - /* iP8100: FineArtA4 : 0x42 */ - /* iP8600: FineArtA4 : 0x42 */ - /* iP9910: FineArtA4 : 0x42 */ - /* iX7000: FineArtA4 : 0x42 */ - /* MG6100: FineArtA4 : 0x42 */ - /* MG6200: FineArtA4 : 0x42 */ - /* MG8100: FineArtA4 : 0x42 */ - /* MG8200: FineArtA4 : 0x42 */ - /* pro9000:FineArtA4 : 0x4d */ - /* pro9000mk2:FineArtA4 : 0x4d */ - /* pro9500:FineArtA4 : 0x4d */ - /* pro9500mk2:FineArtA4 : 0x4d */ - /* PRO-1: FineArtA4 : 0x4d */ + /* Fine Art paper codes */ + /* iP6700D, iP7100, iP7500, iP8100, iP8600, iP9910 */ + /* iX7000 */ + /* MG6100, M6200, MG8100, MG8200 */ + /* MX7600 */ + /* MP950, MP960, MP970, MP980, MP990 */ + /* if (!strcmp(name,"A4")) return 0x42; */ /* FineArt A4 35mm border --- iP7100: gap is 18 */ + /* if (!strcmp(name,"A3")) return 0x43; */ /* FineArt A3 35mm border */ + /* if (!strcmp(name,"A3plus")) return 0x44; */ /* FineArt A3plus 35mm border */ + /* if (!strcmp(name,"Letter")) return 0x45; */ /* FineArt Letter 35mm border */ + + /* Fine Art paper codes */ + /* Pro series (9000, 9000 Mk.2, 9500, 9500 Mk.2, PRO-1) */ + /* if (!strcmp(name,"A4")) return 0x4d; */ /* FineArt A4 35mm border */ + /* if (!strcmp(name,"A3")) return 0x4e; */ /* FineArt A3 35mm border */ + /* if (!strcmp(name,"A3plus")) return 0x50; */ /* FineArt A3plus 35mm border */ + /* if (!strcmp(name,"Letter")) return 0x4f; */ /* FineArt Letter 35mm border */ + + /* Fine Art paper codes */ + /* MG6300, MG6500, MG7100 */ + /* if (!strcmp(name,"A4")) return 0x58; */ /* FineArt A4 35mm border */ + /* if (!strcmp(name,"Letter")) return 0x5a; */ /* FineArt Letter 35mm border */ + + /* Fine Art paper codes */ + /* iP8700, iX6800 */ + /* if (!strcmp(name,"A4")) return 0x58; */ /* FineArt A4 35mm border */ + /* if (!strcmp(name,"A3")) return 0x59; */ /* FineArt A3 35mm border */ + /* if (!strcmp(name,"A3plus")) return 0x5d; */ /* FineArt A3plus 35mm border */ + /* if (!strcmp(name,"Letter")) return 0x5a; */ /* FineArt Letter 35mm border */ + /* iP7100 is an exception needing yet another papersize code */ if ( (arg_ESCP_2 == 0x28) || ( arg_ESCP_2 == 0x29) || (arg_ESCP_2 == 0x2c) || (arg_ESCP_2 == 0x31) ) { - /* A4 */ + /* A4 FineArt */ if ( arg_ESCP_1 == 0x03 ) { - /* default */ - arg_ESCP_1 = 0x4d; - if ( !(strcmp(init->caps->name,"PIXMA MP950")) || !(strcmp(init->caps->name,"PIXMA MP960")) || !(strcmp(init->caps->name,"PIXMA MP970")) || !(strcmp(init->caps->name,"PIXMA MP980")) || !(strcmp(init->caps->name,"PIXMA MP990")) || !(strcmp(init->caps->name,"PIXMA MX7600")) || !(strcmp(init->caps->name,"PIXMA iP6700")) || !(strcmp(init->caps->name,"PIXMA iP7100")) || !(strcmp(init->caps->name,"PIXMA iP7500")) || !(strcmp(init->caps->name,"PIXMA iP8100")) || !(strcmp(init->caps->name,"PIXMA iP8600")) || !(strcmp(init->caps->name,"PIXMA iP9910")) || !(strcmp(init->caps->name,"PIXMA iX7000")) || !(strcmp(init->caps->name,"PIXMA MG6100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) || !(strcmp(init->caps->name,"PIXMA MG8100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) ) { + if ( !(strcmp(init->caps->name,"PIXMA MP950")) || !(strcmp(init->caps->name,"PIXMA MP960")) || !(strcmp(init->caps->name,"PIXMA MP970")) || !(strcmp(init->caps->name,"PIXMA MP980")) || !(strcmp(init->caps->name,"PIXMA MP990")) || !(strcmp(init->caps->name,"PIXMA MX7600")) || !(strcmp(init->caps->name,"PIXMA iP6700")) || !(strcmp(init->caps->name,"PIXMA iP7100")) || !(strcmp(init->caps->name,"PIXMA iP7500")) || !(strcmp(init->caps->name,"PIXMA iP8100")) || !(strcmp(init->caps->name,"PIXMA iP8600")) || !(strcmp(init->caps->name,"PIXMA iP9910")) || !(strcmp(init->caps->name,"PIXMA iX7000")) || !(strcmp(init->caps->name,"PIXMA MG6100")) || !(strcmp(init->caps->name,"PIXMA MG6200")) || !(strcmp(init->caps->name,"PIXMA MG8200")) || !(strcmp(init->caps->name,"PIXMA MG8100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) ) { arg_ESCP_1 = 0x42; } + else if ( !(strcmp(init->caps->name,"PIXMA Pro9000")) || !(strcmp(init->caps->name,"PIXMA Pro9002")) || !(strcmp(init->caps->name,"PIXMA Pro9500")) || !(strcmp(init->caps->name,"PIXMA Pro9502")) ) { + arg_ESCP_1 = 0x4d; + } + else if ( !(strcmp(init->caps->name,"PIXMA MG6300")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) ) { + arg_ESCP_1 = 0x58; + } + else { + /* default back to non-FineArt */ + arg_ESCP_1 = 0x03; + } } - /* A3 */ + /* A3 FineArt */ if ( arg_ESCP_1 == 0x05 ) { - arg_ESCP_1 = 0x4e; - if ( !(strcmp(init->caps->name,"PIXMA MP950")) || !(strcmp(init->caps->name,"PIXMA MP960")) || !(strcmp(init->caps->name,"PIXMA MP970")) || !(strcmp(init->caps->name,"PIXMA MP980")) || !(strcmp(init->caps->name,"PIXMA MP990")) || !(strcmp(init->caps->name,"PIXMA MX7600")) || !(strcmp(init->caps->name,"PIXMA iP6700")) || !(strcmp(init->caps->name,"PIXMA iP7100")) || !(strcmp(init->caps->name,"PIXMA iP7500")) || !(strcmp(init->caps->name,"PIXMA iP8100")) || !(strcmp(init->caps->name,"PIXMA iP8600")) || !(strcmp(init->caps->name,"PIXMA iP9910")) || !(strcmp(init->caps->name,"PIXMA iX7000")) || !(strcmp(init->caps->name,"PIXMA MG6100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) || !(strcmp(init->caps->name,"PIXMA MG8100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) ) { + if ( !(strcmp(init->caps->name,"PIXMA MP950")) || !(strcmp(init->caps->name,"PIXMA MP960")) || !(strcmp(init->caps->name,"PIXMA MP970")) || !(strcmp(init->caps->name,"PIXMA MP980")) || !(strcmp(init->caps->name,"PIXMA MP990")) || !(strcmp(init->caps->name,"PIXMA MX7600")) || !(strcmp(init->caps->name,"PIXMA iP6700")) || !(strcmp(init->caps->name,"PIXMA iP7100")) || !(strcmp(init->caps->name,"PIXMA iP7500")) || !(strcmp(init->caps->name,"PIXMA iP8100")) || !(strcmp(init->caps->name,"PIXMA iP8600")) || !(strcmp(init->caps->name,"PIXMA iP9910")) || !(strcmp(init->caps->name,"PIXMA iX7000")) || !(strcmp(init->caps->name,"PIXMA MG6100")) || !(strcmp(init->caps->name,"PIXMA MG6200")) || !(strcmp(init->caps->name,"PIXMA MG8200")) || !(strcmp(init->caps->name,"PIXMA MG8100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) ) { arg_ESCP_1 = 0x43; } + else if ( !(strcmp(init->caps->name,"PIXMA Pro9000")) || !(strcmp(init->caps->name,"PIXMA Pro9002")) || !(strcmp(init->caps->name,"PIXMA Pro9500")) || !(strcmp(init->caps->name,"PIXMA Pro9502")) ) { + arg_ESCP_1 = 0x4e; + } +#if 0 + /* no known papersize code yet, since these printers do not handle A3 */ + else if ( !(strcmp(init->caps->name,"PIXMA MG6300")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) ) { + arg_ESCP_1 = 0x59; + } +#endif + else { + /* default back to non-FineArt */ + arg_ESCP_1 = 0x05; + } } - /* Letter */ + /* Letter FineArt */ if ( arg_ESCP_1 == 0x0d ) { - arg_ESCP_1 = 0x4f; - if ( !(strcmp(init->caps->name,"PIXMA MP950")) || !(strcmp(init->caps->name,"PIXMA MP960")) || !(strcmp(init->caps->name,"PIXMA MP970")) || !(strcmp(init->caps->name,"PIXMA MP980")) || !(strcmp(init->caps->name,"PIXMA MP990")) || !(strcmp(init->caps->name,"PIXMA MX7600")) || !(strcmp(init->caps->name,"PIXMA iP6700")) || !(strcmp(init->caps->name,"PIXMA iP7100")) || !(strcmp(init->caps->name,"PIXMA iP7500")) || !(strcmp(init->caps->name,"PIXMA iP8100")) || !(strcmp(init->caps->name,"PIXMA iP8600")) || !(strcmp(init->caps->name,"PIXMA iP9910")) || !(strcmp(init->caps->name,"PIXMA iX7000")) || !(strcmp(init->caps->name,"PIXMA MG6100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) || !(strcmp(init->caps->name,"PIXMA MG8100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) ) { + if ( !(strcmp(init->caps->name,"PIXMA MP950")) || !(strcmp(init->caps->name,"PIXMA MP960")) || !(strcmp(init->caps->name,"PIXMA MP970")) || !(strcmp(init->caps->name,"PIXMA MP980")) || !(strcmp(init->caps->name,"PIXMA MP990")) || !(strcmp(init->caps->name,"PIXMA MX7600")) || !(strcmp(init->caps->name,"PIXMA iP6700")) || !(strcmp(init->caps->name,"PIXMA iP7100")) || !(strcmp(init->caps->name,"PIXMA iP7500")) || !(strcmp(init->caps->name,"PIXMA iP8100")) || !(strcmp(init->caps->name,"PIXMA iP8600")) || !(strcmp(init->caps->name,"PIXMA iP9910")) || !(strcmp(init->caps->name,"PIXMA iX7000")) || !(strcmp(init->caps->name,"PIXMA MG6100")) || !(strcmp(init->caps->name,"PIXMA MG6200")) || !(strcmp(init->caps->name,"PIXMA MG8200")) || !(strcmp(init->caps->name,"PIXMA MG8100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) ) { + arg_ESCP_1 = 0x45; + } + else if ( !(strcmp(init->caps->name,"PIXMA Pro9000")) || !(strcmp(init->caps->name,"PIXMA Pro9002")) || !(strcmp(init->caps->name,"PIXMA Pro9500")) || !(strcmp(init->caps->name,"PIXMA Pro9502")) ) { + arg_ESCP_1 = 0x4f; + } + else if ( !(strcmp(init->caps->name,"PIXMA MG6300")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) ) { + arg_ESCP_1 = 0x5a; + } + else { + /* default back to non-FineArt */ + arg_ESCP_1 = 0x0d; + } + } + /* A3plus FineArt */ + if ( arg_ESCP_1 == 0x2c ) { + if ( !(strcmp(init->caps->name,"PIXMA MP950")) || !(strcmp(init->caps->name,"PIXMA MP960")) || !(strcmp(init->caps->name,"PIXMA MP970")) || !(strcmp(init->caps->name,"PIXMA MP980")) || !(strcmp(init->caps->name,"PIXMA MP990")) || !(strcmp(init->caps->name,"PIXMA MX7600")) || !(strcmp(init->caps->name,"PIXMA iP6700")) || !(strcmp(init->caps->name,"PIXMA iP7100")) || !(strcmp(init->caps->name,"PIXMA iP7500")) || !(strcmp(init->caps->name,"PIXMA iP8100")) || !(strcmp(init->caps->name,"PIXMA iP8600")) || !(strcmp(init->caps->name,"PIXMA iP9910")) || !(strcmp(init->caps->name,"PIXMA iX7000")) || !(strcmp(init->caps->name,"PIXMA MG6100")) || !(strcmp(init->caps->name,"PIXMA MG6200")) || !(strcmp(init->caps->name,"PIXMA MG8200")) || !(strcmp(init->caps->name,"PIXMA MG8100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) ) { arg_ESCP_1 = 0x44; } + else if ( !(strcmp(init->caps->name,"PIXMA Pro9000")) || !(strcmp(init->caps->name,"PIXMA Pro9002")) || !(strcmp(init->caps->name,"PIXMA Pro9500")) || !(strcmp(init->caps->name,"PIXMA Pro9502")) ) { + arg_ESCP_1 = 0x50; + } +#if 0 + else if ( !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) ) { + arg_ESCP_1 = 0x5d; + } +#endif + else { + /* default back to non-FineArt */ + arg_ESCP_1 = 0x2c; + } } } - if ( init->caps->ESC_P_len == 8 ) /* support for new devices from 2012. TODO: check if XML contents are identical to 6-byte devices */ + /* 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 */ + 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;; + } + } + + if ( init->caps->ESC_P_len == 9 ) /* support for new devices from October 2012. */ + {/* the 4th of the 6 bytes is the media type. 2nd byte is media size. Both read from canon-media array. */ + + /* arg_ESCP_1 = 0x03; */ /* A4 size */ + /* arg_ESCP_2 = 0x00; */ /* plain media */ + /* size media tray */ + canon_cmd( v,ESC28,0x50,9,0x00,arg_ESCP_1,0x00,arg_ESCP_2,0x01,0x00,0x01,0x00,arg_ESCP_9); + } + else if ( init->caps->ESC_P_len == 8 ) /* support for new devices from 2012. */ {/* the 4th of the 6 bytes is the media type. 2nd byte is media size. Both read from canon-media array. */ /* arg_ESCP_1 = 0x03; */ /* A4 size */ @@ -4092,6 +4730,10 @@ canon_init_setImage(const stp_vars_t *v, const canon_privdata_t *init) buf[3+i*3+1]=0x01; buf[3+i*3+0]=init->mode->inks[i].ink->bits; }*/ + else if(init->mode->inks[i].ink->flags & INK_FLAG_3pixel5level_in_1byte) + buf[3+i*3+0]=(1<<5)|init->mode->inks[i].ink->bits; /*info*/ + else if(init->mode->inks[i].ink->flags & INK_FLAG_3pixel6level_in_1byte) + buf[3+i*3+0]=(1<<5)|init->mode->inks[i].ink->bits; /*info*/ else buf[3+i*3+0]=init->mode->inks[i].ink->bits; @@ -4193,7 +4835,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 iP2700")) || !(strcmp(init->caps->name,"PIXMA MG2100")) ) + if ( !(strcmp(init->caps->name,"PIXMA MP140")) || !(strcmp(init->caps->name,"PIXMA MP150")) || !(strcmp(init->caps->name,"PIXMA MP160")) || !(strcmp(init->caps->name,"PIXMA MP170")) || !(strcmp(init->caps->name,"PIXMA MP180")) || !(strcmp(init->caps->name,"PIXMA MP190")) || !(strcmp(init->caps->name,"PIXMA MP210")) || !(strcmp(init->caps->name,"PIXMA MP220")) || !(strcmp(init->caps->name,"PIXMA MP240")) || !(strcmp(init->caps->name,"PIXMA MP250")) || !(strcmp(init->caps->name,"PIXMA MP270")) || !(strcmp(init->caps->name,"PIXMA MP280")) || !(strcmp(init->caps->name,"PIXMA MP450")) || !(strcmp(init->caps->name,"PIXMA MP460")) || !(strcmp(init->caps->name,"PIXMA MP470")) || !(strcmp(init->caps->name,"PIXMA MP480")) || !(strcmp(init->caps->name,"PIXMA MP490")) || !(strcmp(init->caps->name,"PIXMA MP495")) || !(strcmp(init->caps->name,"PIXMA MX300")) || !(strcmp(init->caps->name,"PIXMA MX310")) || !(strcmp(init->caps->name,"PIXMA MX330")) || !(strcmp(init->caps->name,"PIXMA MX340")) || !(strcmp(init->caps->name,"PIXMA MX350")) || !(strcmp(init->caps->name,"PIXMA MX360")) || !(strcmp(init->caps->name,"PIXMA MX370")) || !(strcmp(init->caps->name,"PIXMA MX410")) || !(strcmp(init->caps->name,"PIXMA MX510")) || !(strcmp(init->caps->name,"PIXMA MX520")) || !(strcmp(init->caps->name,"PIXMA iP2700")) || !(strcmp(init->caps->name,"PIXMA MG2100")) || !(strcmp(init->caps->name,"PIXMA MG2400")) || !(strcmp(init->caps->name,"PIXMA MG3500")) ) { /* if cmy there, add 0x60 to each --- all modes using cmy require it */ for(i=0;i<init->num_channels;i++){ @@ -4260,9 +4902,20 @@ canon_init_setMultiRaster(const stp_vars_t *v, const canon_privdata_t *init){ +/* ESC (v -- 0x76 -- */ +static void +canon_init_setESC_v(const stp_vars_t *v, const canon_privdata_t *init) +{ + if (!(init->caps->features & CANON_CAP_v)) + return; + + canon_cmd(v,ESC28,0x76, 1, 0x00); +} + + static void -canon_init_printer(const stp_vars_t *v, const canon_privdata_t *init) +canon_init_printer(const stp_vars_t *v, canon_privdata_t *init) { unsigned int mytop; /* init printer */ @@ -4285,6 +4938,7 @@ canon_init_printer(const stp_vars_t *v, const canon_privdata_t *init) canon_init_setESC_S(v,init); /* ESC (S */ canon_init_setTray(v,init); /* ESC (l */ canon_init_setX72(v,init); /* ESC (r */ + canon_init_setESC_v(v,init); /* ESC (v */ canon_init_setMultiRaster(v,init); /* ESC (I (J (L */ /* some linefeeds */ @@ -4446,6 +5100,7 @@ static int canon_setup_channel(stp_vars_t *v,canon_privdata_t* privdata,int chan canon_channel_t* current; stp_dprintf(STP_DBG_CANON, v, "canon_setup_channel: (start) privdata->num_channels %d\n", privdata->num_channels); stp_dprintf(STP_DBG_CANON, v, "canon_setup_channel: (start) privdata->channel_order %s\n", privdata->channel_order); + /* create a new channel */ privdata->channels = stp_realloc(privdata->channels,sizeof(canon_channel_t) * (privdata->num_channels + 1)); privdata->channel_order = stp_realloc(privdata->channel_order,privdata->num_channels + 2); @@ -4578,7 +5233,7 @@ static void canon_setup_channels(stp_vars_t *v,canon_privdata_t* privdata){ -/* FIXME move this to printercaps */ +/* FIXME move this to printercaps, and/or Esc (p command */ #define CANON_CD_X 176 #define CANON_CD_Y 405 @@ -4638,31 +5293,18 @@ static void setup_page(stp_vars_t* v,canon_privdata_t* privdata){ privdata->top -= page_top; /* checked in Epson: matches */ privdata->page_width = page_right - page_left; /* checked in Epson: matches */ privdata->page_height = page_bottom - page_top; /* checked in Epson: matches */ - - if (ERRPRINT) { - stp_eprintf(v,"============================set_imageable_area========================\n"); - stp_eprintf(v,"setup_page page_top = %i\n",page_top); - stp_eprintf(v,"setup_page page_bottom = %i\n",page_bottom); - stp_eprintf(v,"setup_page page_left = %i\n",page_left); - stp_eprintf(v,"setup_page page_right = %i\n",page_right); - stp_eprintf(v,"setup_page top = %i\n",privdata->top); - stp_eprintf(v,"setup_page left = %i\n",privdata->left); - stp_eprintf(v,"setup_page out_height = %i\n",privdata->out_height); - stp_eprintf(v,"setup_page page_height = %i\n",privdata->page_height); - stp_eprintf(v,"setup_page page_width = %i\n",privdata->page_width); - } - - stp_dprintf(STP_DBG_CANON, v, "setup_page page_top = %i\n",page_top); - stp_dprintf(STP_DBG_CANON, v, "setup_page page_bottom = %i\n",page_bottom); - stp_dprintf(STP_DBG_CANON, v, "setup_page page_left = %i\n",page_left); - stp_dprintf(STP_DBG_CANON, v, "setup_page page_right = %i\n",page_right); - stp_dprintf(STP_DBG_CANON, v, "setup_page top = %i\n",privdata->top); - stp_dprintf(STP_DBG_CANON, v, "setup_page left = %i\n",privdata->left); - stp_dprintf(STP_DBG_CANON, v, "setup_page out_height = %i\n",privdata->out_height); - stp_dprintf(STP_DBG_CANON, v, "setup_page page_height = %i\n",privdata->page_height); - stp_dprintf(STP_DBG_CANON, v, "setup_page page_width = %i\n",privdata->page_width); - } + + stp_dprintf(STP_DBG_CANON, v, "setup_page page_top = %i\n",page_top); + stp_dprintf(STP_DBG_CANON, v, "setup_page page_bottom = %i\n",page_bottom); + stp_dprintf(STP_DBG_CANON, v, "setup_page page_left = %i\n",page_left); + stp_dprintf(STP_DBG_CANON, v, "setup_page page_right = %i\n",page_right); + stp_dprintf(STP_DBG_CANON, v, "setup_page top = %i\n",privdata->top); + stp_dprintf(STP_DBG_CANON, v, "setup_page left = %i\n",privdata->left); + stp_dprintf(STP_DBG_CANON, v, "setup_page out_height = %i\n",privdata->out_height); + stp_dprintf(STP_DBG_CANON, v, "setup_page page_height = %i\n",privdata->page_height); + stp_dprintf(STP_DBG_CANON, v, "setup_page page_width = %i\n",privdata->page_width); + } @@ -4836,7 +5478,7 @@ canon_do_print(stp_vars_t *v, stp_image_t *image) /* --- no current restrictions for Duplex setting --- */ - /* in particular, we do not constraint duplex printing to certain media */ + /* in particular, we do not constrain duplex printing to certain media */ privdata.duplex_str = duplex_mode; /* --- make adjustment to InkType to comply with InkSet --- */ @@ -4860,8 +5502,6 @@ canon_do_print(stp_vars_t *v, stp_image_t *image) /* --- make adjustments to mode --- */ /* find the wanted print mode: NULL if not yet set */ - if (ERRPRINT) - stp_eprintf(v,"Calling get_current_parameter from canon_do_print routine (before default set)"); stp_dprintf(STP_DBG_CANON, v, "canon_do_print: calling canon_get_current_mode\n"); privdata.mode = canon_get_current_mode(v); @@ -4870,8 +5510,6 @@ canon_do_print(stp_vars_t *v, stp_image_t *image) } /* then call get_current_mode again to sort out the correct matching of parameters and mode selection */ - if (ERRPRINT) - stp_eprintf(v,"Calling cannon_check_current_parameter from canon_do_print routine (after default set)"); stp_dprintf(STP_DBG_CANON, v, "canon_do_print: calling canon_check_current_mode\n"); @@ -5097,13 +5735,13 @@ canon_do_print(stp_vars_t *v, stp_image_t *image) stp_compute_uncompressed_linewidth); privdata.last_pass_offset = 0; - if (ERRPRINT) { + if (stp_get_debug_level() & STP_DBG_CANON) { for(x=0;x<4;x++){ - stp_eprintf(v, "DEBUG print-canon weave: weave_color_order[%d]: %u\n", + stp_dprintf(STP_DBG_CANON, v, "DEBUG print-canon weave: weave_color_order[%d]: %u\n", x, (unsigned int)weave_color_order[x]); } for(x=0;x<privdata.num_channels;x++){ - stp_eprintf(v, "DEBUG print-canon weave: channel_order[%d]: %u\n", + stp_dprintf(STP_DBG_CANON, v, "DEBUG print-canon weave: channel_order[%d]: %u\n", x, (unsigned int)privdata.channel_order[x]); } } @@ -5117,8 +5755,7 @@ canon_do_print(stp_vars_t *v, stp_image_t *image) if(weave_color_order[i] == privdata.channel_order[x]){ weave_cols[i] = privdata.channels[x].buf; privdata.weave_bits[i] = privdata.channels[x].props->bits; - if (ERRPRINT) - stp_eprintf(v, "DEBUG print-canon weave: set weave_cols[%d] to privdata.channels[%d].buf\n", + stp_dprintf(STP_DBG_CANON, v, "DEBUG print-canon weave: set weave_cols[%d] to privdata.channels[%d].buf\n", i, x); } } @@ -5303,7 +5940,7 @@ canon_shift_buffer(unsigned char *line,int length,int bits) } -/* fold, apply 5 pixel in 1 byte compression, pack tiff and return the compressed length */ +/* fold, apply the necessary compression, pack tiff and return the compressed length */ static int canon_compress(stp_vars_t *v, canon_privdata_t *pd, unsigned char* line,int length,int offset,unsigned char* comp_buf,int bits, int ink_flags) { unsigned char @@ -5329,17 +5966,17 @@ static int canon_compress(stp_vars_t *v, canon_privdata_t *pd, unsigned char* li pixels_per_byte = 5; stp_fold(line,length,pd->fold_buf); - in_ptr= pd->fold_buf; - length= (length*8/4); /* 4 pixels in 8bit */ + in_ptr = pd->fold_buf; + length = (length*8/4); /* 4 pixels in 8bit */ /* calculate the number of compressed bytes that can be sent directly */ - offset2 = offset / pixels_per_byte; + offset2 = offset / pixels_per_byte; /* calculate the number of (uncompressed) bits that have to be added to the raster data */ bitoffset = (offset % pixels_per_byte) * 2; } else if (bits==3) { stp_fold_3bit_323(line,length,pd->fold_buf); - in_ptr= pd->fold_buf; - length= (length*8)/3; + in_ptr = pd->fold_buf; + length = (length*8)/3; offset2 = offset/3; #if 0 switch(offset%3){ @@ -5351,11 +5988,19 @@ static int canon_compress(stp_vars_t *v, canon_privdata_t *pd, unsigned char* li bitoffset= 0; } else if (bits==4) { + int pixels_per_byte = 2; + if(ink_flags & INK_FLAG_3pixel5level_in_1byte) + pixels_per_byte = 3; + else if(ink_flags & INK_FLAG_3pixel6level_in_1byte) + pixels_per_byte = 3; + stp_fold_4bit(line,length,pd->fold_buf); - in_ptr= pd->fold_buf; - length= (length*8)/2; - offset2 = offset / 2; - bitoffset= offset % 2; + in_ptr = pd->fold_buf; + length = (length*8)/2; /* 2 pixels in 8 bits */ + /* calculate the number of compressed bytes that can be sent directly */ + offset2 = offset / pixels_per_byte; + /* calculate the number of (uncompressed) bits that have to be added to the raster data */ + bitoffset = (offset % pixels_per_byte) * 2; /* not sure what this value means */ } else if (bits==8) { stp_fold_8bit(line,length,pd->fold_buf); @@ -5394,6 +6039,11 @@ static int canon_compress(stp_vars_t *v, canon_privdata_t *pd, unsigned char* li if(ink_flags & INK_FLAG_5pixel_in_1byte) length = pack_pixels(in_ptr,length); + else if(ink_flags & INK_FLAG_3pixel5level_in_1byte) + length = pack_pixels3_5(in_ptr,length); + else if(ink_flags & INK_FLAG_3pixel6level_in_1byte) + length = pack_pixels3_6(in_ptr,length); + stp_pack_tiff(v, in_ptr, length, comp_data, &comp_ptr, NULL, NULL); diff --git a/src/main/print-canon.h b/src/main/print-canon.h index 3baeb2c..0382446 100644 --- a/src/main/print-canon.h +++ b/src/main/print-canon.h @@ -146,6 +146,526 @@ static const unsigned char tentoeight[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +static const unsigned char twelve2eight[] = +{ + 0, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 16, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 21, 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 26, 27, 28, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 36, 37, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 40, 41, 42, 43, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 50, 51, 52, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 55, 56, 57, 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 60, 61, 62, 63, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 65, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 70, 71, 72, 73, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 75, 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 85, 86, 87, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 90, 91, 92, 93, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 95, 96, 97, 98, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 100,101,102,103,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 105,106,107,108,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 110,111,112,113,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 115,116,117,118,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 120,121,122,123,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const unsigned char twelve2eight2[] = +{ + 0, 1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 13, 14, 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 18, 19, 20, 21, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 25, 26, 27, 28, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 31, 32, 33, 34, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 36, 37, 38, 39, 40, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 42, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 49, 50, 51, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 54, 55, 56, 57, 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 60, 61, 62, 63, 64, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 67, 68, 69, 70, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 73, 74, 75, 76, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 78, 79, 80, 81, 82, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 85, 86, 87, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 90, 91, 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 97, 98, 99,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 102,103,104,105,106,107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 108,109,110,111,112,113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 114,115,116,117,118,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 120,121,122,123,124,125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126,127,128,129,130,131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 132,133,134,135,136,137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 138,139,140,141,142,143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 144,145,146,147,148,149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 150,151,152,153,154,155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 156,157,158,159,160,161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 162,163,164,165,166,167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 168,169,170,171,172,173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 174,175,176,177,178,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 180,181,182,183,184,185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 186,187,188,189,190,191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192,193,194,195,196,197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 198,199,200,201,202,203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 204,205,206,207,208,209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210,211,212,213,214,215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + const char* prexml_iP2700 ="<?xml version=\"1.0\" encoding=\"utf-8\" ?><cmd xmlns:ivec=\"http://www.canon.com/ns/cmd/2008/07/common/\"><ivec:contents><ivec:operation>StartJob</ivec:operation><ivec:param_set servicetype=\"print\"><ivec:jobID>00000001</ivec:jobID><ivec:bidi>0</ivec:bidi></ivec:param_set></ivec:contents></cmd><?xml version=\"1.0\" encoding=\"utf-8\" ?><cmd xmlns:ivec=\"http://www.canon.com/ns/cmd/2008/07/common/\" xmlns:vcn=\"http://www.canon.com/ns/cmd/2008/07/canon/\"><ivec:contents><ivec:operation>VendorCmd</ivec:operation><ivec:param_set servicetype=\"print\"><vcn:ijoperation>ModeShift</vcn:ijoperation><vcn:ijmode>1</vcn:ijmode><ivec:jobID>00000001</ivec:jobID></ivec:param_set></ivec:contents></cmd>"; const char* postxml_iP2700 ="<?xml version=\"1.0\" encoding=\"utf-8\" ?><cmd xmlns:ivec=\"http://www.canon.com/ns/cmd/2008/07/common/\"><ivec:contents><ivec:operation>EndJob</ivec:operation><ivec:param_set servicetype=\"print\"><ivec:jobID>00000001</ivec:jobID></ivec:param_set></ivec:contents></cmd>"; diff --git a/src/main/print-color.c b/src/main/print-color.c index e7d5f4f..8318187 100644 --- a/src/main/print-color.c +++ b/src/main/print-color.c @@ -1,5 +1,5 @@ /* - * "$Id: print-color.c,v 1.145 2012/01/19 13:25:40 m0m Exp $" + * "$Id: print-color.c,v 1.148 2014/01/24 01:55:56 rlk Exp $" * * Gutenprint color management module - traditional Gutenprint algorithm. * @@ -110,6 +110,38 @@ static const channel_param_t raw_channel_params[] = { 29, "GammaCh29", "CurveCh29", "GammaCh29", "CurveCh29" }, { 30, "GammaCh30", "CurveCh30", "GammaCh30", "CurveCh30" }, { 31, "GammaCh31", "CurveCh31", "GammaCh31", "CurveCh31" }, + { 32, "GammaCh32", "CurveCh32", "GammaCh32", "CurveCh32" }, + { 33, "GammaCh33", "CurveCh33", "GammaCh33", "CurveCh33" }, + { 34, "GammaCh34", "CurveCh34", "GammaCh34", "CurveCh34" }, + { 35, "GammaCh35", "CurveCh35", "GammaCh35", "CurveCh35" }, + { 36, "GammaCh36", "CurveCh36", "GammaCh36", "CurveCh36" }, + { 37, "GammaCh37", "CurveCh37", "GammaCh37", "CurveCh37" }, + { 38, "GammaCh38", "CurveCh38", "GammaCh38", "CurveCh38" }, + { 39, "GammaCh39", "CurveCh39", "GammaCh39", "CurveCh39" }, + { 40, "GammaCh40", "CurveCh40", "GammaCh40", "CurveCh40" }, + { 41, "GammaCh41", "CurveCh41", "GammaCh41", "CurveCh41" }, + { 42, "GammaCh42", "CurveCh42", "GammaCh42", "CurveCh42" }, + { 43, "GammaCh43", "CurveCh43", "GammaCh43", "CurveCh43" }, + { 44, "GammaCh44", "CurveCh44", "GammaCh44", "CurveCh44" }, + { 45, "GammaCh45", "CurveCh45", "GammaCh45", "CurveCh45" }, + { 46, "GammaCh46", "CurveCh46", "GammaCh46", "CurveCh46" }, + { 47, "GammaCh47", "CurveCh47", "GammaCh47", "CurveCh47" }, + { 48, "GammaCh48", "CurveCh48", "GammaCh48", "CurveCh48" }, + { 49, "GammaCh49", "CurveCh49", "GammaCh49", "CurveCh49" }, + { 50, "GammaCh50", "CurveCh50", "GammaCh50", "CurveCh50" }, + { 51, "GammaCh51", "CurveCh51", "GammaCh51", "CurveCh51" }, + { 52, "GammaCh52", "CurveCh52", "GammaCh52", "CurveCh52" }, + { 53, "GammaCh53", "CurveCh53", "GammaCh53", "CurveCh53" }, + { 54, "GammaCh54", "CurveCh54", "GammaCh54", "CurveCh54" }, + { 55, "GammaCh55", "CurveCh55", "GammaCh55", "CurveCh55" }, + { 56, "GammaCh56", "CurveCh56", "GammaCh56", "CurveCh56" }, + { 57, "GammaCh57", "CurveCh57", "GammaCh57", "CurveCh57" }, + { 58, "GammaCh58", "CurveCh58", "GammaCh58", "CurveCh58" }, + { 59, "GammaCh59", "CurveCh59", "GammaCh59", "CurveCh59" }, + { 60, "GammaCh60", "CurveCh60", "GammaCh60", "CurveCh60" }, + { 61, "GammaCh61", "CurveCh61", "GammaCh61", "CurveCh61" }, + { 62, "GammaCh62", "CurveCh62", "GammaCh62", "CurveCh62" }, + { 63, "GammaCh63", "CurveCh63", "GammaCh63", "CurveCh63" }, }; static const int raw_channel_param_count = @@ -416,6 +448,38 @@ static const float_param_t float_parameters[] = RAW_GAMMA_CHANNEL(29), RAW_GAMMA_CHANNEL(30), RAW_GAMMA_CHANNEL(31), + RAW_GAMMA_CHANNEL(32), + RAW_GAMMA_CHANNEL(33), + RAW_GAMMA_CHANNEL(34), + RAW_GAMMA_CHANNEL(35), + RAW_GAMMA_CHANNEL(36), + RAW_GAMMA_CHANNEL(37), + RAW_GAMMA_CHANNEL(38), + RAW_GAMMA_CHANNEL(39), + RAW_GAMMA_CHANNEL(40), + RAW_GAMMA_CHANNEL(41), + RAW_GAMMA_CHANNEL(42), + RAW_GAMMA_CHANNEL(43), + RAW_GAMMA_CHANNEL(44), + RAW_GAMMA_CHANNEL(45), + RAW_GAMMA_CHANNEL(46), + RAW_GAMMA_CHANNEL(47), + RAW_GAMMA_CHANNEL(48), + RAW_GAMMA_CHANNEL(49), + RAW_GAMMA_CHANNEL(50), + RAW_GAMMA_CHANNEL(51), + RAW_GAMMA_CHANNEL(52), + RAW_GAMMA_CHANNEL(53), + RAW_GAMMA_CHANNEL(54), + RAW_GAMMA_CHANNEL(55), + RAW_GAMMA_CHANNEL(56), + RAW_GAMMA_CHANNEL(57), + RAW_GAMMA_CHANNEL(58), + RAW_GAMMA_CHANNEL(59), + RAW_GAMMA_CHANNEL(60), + RAW_GAMMA_CHANNEL(61), + RAW_GAMMA_CHANNEL(62), + RAW_GAMMA_CHANNEL(63), { { "LUTDumpFile", N_("LUT dump file"), N_("Advanced Output Control"), @@ -589,6 +653,38 @@ static curve_param_t curve_parameters[] = RAW_CURVE_CHANNEL(29), RAW_CURVE_CHANNEL(30), RAW_CURVE_CHANNEL(31), + RAW_CURVE_CHANNEL(32), + RAW_CURVE_CHANNEL(33), + RAW_CURVE_CHANNEL(34), + RAW_CURVE_CHANNEL(35), + RAW_CURVE_CHANNEL(36), + RAW_CURVE_CHANNEL(37), + RAW_CURVE_CHANNEL(38), + RAW_CURVE_CHANNEL(39), + RAW_CURVE_CHANNEL(40), + RAW_CURVE_CHANNEL(41), + RAW_CURVE_CHANNEL(42), + RAW_CURVE_CHANNEL(43), + RAW_CURVE_CHANNEL(44), + RAW_CURVE_CHANNEL(45), + RAW_CURVE_CHANNEL(46), + RAW_CURVE_CHANNEL(47), + RAW_CURVE_CHANNEL(48), + RAW_CURVE_CHANNEL(49), + RAW_CURVE_CHANNEL(50), + RAW_CURVE_CHANNEL(51), + RAW_CURVE_CHANNEL(52), + RAW_CURVE_CHANNEL(53), + RAW_CURVE_CHANNEL(54), + RAW_CURVE_CHANNEL(55), + RAW_CURVE_CHANNEL(56), + RAW_CURVE_CHANNEL(57), + RAW_CURVE_CHANNEL(58), + RAW_CURVE_CHANNEL(59), + RAW_CURVE_CHANNEL(60), + RAW_CURVE_CHANNEL(61), + RAW_CURVE_CHANNEL(62), + RAW_CURVE_CHANNEL(63), }; static const int curve_parameter_count = @@ -1734,7 +1830,7 @@ static const stp_colorfuncs_t stpi_color_traditional_colorfuncs = &stpi_color_traditional_describe_parameter }; -static const stp_color_t stpi_color_traditional_module_data = +static stp_color_t stpi_color_traditional_module_data = { "traditional", N_("Traditional Gutenprint color conversion"), diff --git a/src/main/print-dither-matrices.c b/src/main/print-dither-matrices.c index 70648e0..45ee656 100644 --- a/src/main/print-dither-matrices.c +++ b/src/main/print-dither-matrices.c @@ -1,5 +1,5 @@ /* - * "$Id: print-dither-matrices.c,v 1.38 2010/08/04 00:33:56 rlk Exp $" + * "$Id: print-dither-matrices.c,v 1.39 2014/01/04 00:31:38 rlk Exp $" * * Print plug-in driver utility functions for the GIMP. * @@ -544,7 +544,7 @@ stp_xml_process_dither_matrix(stp_mxml_node_t *dm, /* The dither matrix node } static stp_array_t * -stpi_dither_array_create_from_xmltree(stp_mxml_node_t *dm) /* Dither matrix node */ +stpi_dither_array_create_from_xmltree(stp_mxml_node_t *dm, int x, int y) /* Dither matrix node */ { const char *stmp; stp_mxml_node_t *child; @@ -573,6 +573,13 @@ stpi_dither_array_create_from_xmltree(stp_mxml_node_t *dm) /* Dither matrix node goto error; } + if (x * y_aspect != y * x_aspect) + { + stp_erprintf("stpi_dither_array_create_from_xmltree: requested aspect of (%d, %d), found (%d, %d)\n", + x, y, x_aspect, y_aspect); + goto error; + } + /* Now read in the array */ child = stp_mxmlFindElement(dm, dm, "array", NULL, NULL, STP_MXML_DESCEND); if (child) @@ -584,7 +591,7 @@ stpi_dither_array_create_from_xmltree(stp_mxml_node_t *dm) /* Dither matrix node } static stp_array_t * -xml_doc_get_dither_array(stp_mxml_node_t *doc) +xml_doc_get_dither_array(stp_mxml_node_t *doc, int x, int y) { stp_mxml_node_t *cur; stp_mxml_node_t *xmlseq; @@ -610,11 +617,11 @@ xml_doc_get_dither_array(stp_mxml_node_t *doc) return NULL; } - return stpi_dither_array_create_from_xmltree(xmlseq); + return stpi_dither_array_create_from_xmltree(xmlseq, x, y); } static stp_array_t * -stpi_dither_array_create_from_file(const char* file) +stpi_dither_array_create_from_file(const char* file, int x, int y) { stp_mxml_node_t *doc; stp_array_t *ret = NULL; @@ -637,7 +644,7 @@ stpi_dither_array_create_from_file(const char* file) if (doc) { - ret = xml_doc_get_dither_array(doc); + ret = xml_doc_get_dither_array(doc, x, y); stp_mxmlDelete(doc); } @@ -669,7 +676,7 @@ stp_xml_get_dither_array(int x, int y) } } - ret = stpi_dither_array_create_from_file(cachedval->filename); + ret = stpi_dither_array_create_from_file(cachedval->filename, x, y); cachedval->dither_array = ret; return stp_array_create_copy(ret); diff --git a/src/main/print-escp2-data.c b/src/main/print-escp2-data.c index 1537adf..8e7d6e3 100644 --- a/src/main/print-escp2-data.c +++ b/src/main/print-escp2-data.c @@ -1,5 +1,5 @@ /* - * "$Id: print-escp2-data.c,v 1.273 2010/08/04 00:33:56 rlk Exp $" + * "$Id: print-escp2-data.c,v 1.275 2013/12/14 19:36:29 rlk Exp $" * * Print plug-in EPSON ESC/P2 driver for the GIMP. * @@ -353,7 +353,8 @@ load_model_from_file(const stp_vars_t *v, stp_mxml_node_t *xmod, int model) !strcmp(child->value.element.name, "ChannelName")) { const char *cname = stp_mxmlElementGetAttr(child, "name"); - stp_string_list_add_string(p->channel_names, cname, cname); + const char *ctext = stp_mxmlElementGetAttr(child, "text"); + stp_string_list_add_string(p->channel_names, cname, ctext); } child = child->next; } @@ -405,7 +406,7 @@ stp_escp2_load_model(const stp_vars_t *v, int model) if (doc) { stp_mxml_node_t *node = - stp_mxmlFindElement(doc, doc, "escp2:model", NULL, NULL, + stp_mxmlFindElement(doc, doc, "escp2Model", NULL, NULL, STP_MXML_DESCEND); if (node) { diff --git a/src/main/print-escp2.c b/src/main/print-escp2.c index 07effa8..2a5b03e 100644 --- a/src/main/print-escp2.c +++ b/src/main/print-escp2.c @@ -1,5 +1,5 @@ /* - * "$Id: print-escp2.c,v 1.439 2012/06/16 03:10:56 rlk Exp $" + * "$Id: print-escp2.c,v 1.442 2014/01/23 13:22:41 rlk Exp $" * * Print plug-in EPSON ESC/P2 driver for the GIMP. * @@ -89,6 +89,14 @@ static const channel_count_t escp2_channel_counts[] = { 30, "30" }, { 31, "31" }, { 32, "32" }, + { 33, "33" }, + { 34, "34" }, + { 35, "35" }, + { 36, "36" }, + { 37, "37" }, + { 38, "38" }, + { 39, "39" }, + { 40, "40" }, }; static stp_curve_t *hue_curve_bounds = NULL; @@ -385,6 +393,12 @@ static const stp_parameter_t the_parameters[] = STP_PARAMETER_TYPE_CURVE, STP_PARAMETER_CLASS_OUTPUT, STP_PARAMETER_LEVEL_ADVANCED4, 0, 1, 5, 1, 0 }, + { + "GreenHueCurve", N_("Green Map"), "Color=Yes,Category=Advanced Output Control", + N_("Adjust the green map"), + STP_PARAMETER_TYPE_CURVE, STP_PARAMETER_CLASS_OUTPUT, + STP_PARAMETER_LEVEL_ADVANCED4, 0, 1, 5, 1, 0 + }, PARAMETER_INT(max_hres), PARAMETER_INT(max_vres), PARAMETER_INT(min_hres), @@ -483,24 +497,32 @@ static const float_param_t float_parameters[] = }, { { - "RedDensity", N_("Red Density"), "Color=Yes,Category=Output Level Adjustment", - N_("Adjust the red density"), + "BlueDensity", N_("Blue Density"), "Color=Yes,Category=Output Level Adjustment", + N_("Adjust the blue density"), STP_PARAMETER_TYPE_DOUBLE, STP_PARAMETER_CLASS_OUTPUT, STP_PARAMETER_LEVEL_ADVANCED, 0, 1, 4, 1, 0 }, 0.0, 2.0, 1.0, 1 }, { { - "BlueDensity", N_("Blue Density"), "Color=Yes,Category=Output Level Adjustment", - N_("Adjust the blue density"), + "OrangeDensity", N_("Orange Density"), "Color=Yes,Category=Output Level Adjustment", + N_("Adjust the orange density"), + STP_PARAMETER_TYPE_DOUBLE, STP_PARAMETER_CLASS_OUTPUT, + STP_PARAMETER_LEVEL_ADVANCED, 0, 1, 4, 1, 0 + }, 0.0, 2.0, 1.0, 1 + }, + { + { + "RedDensity", N_("Red Density"), "Color=Yes,Category=Output Level Adjustment", + N_("Adjust the red density"), STP_PARAMETER_TYPE_DOUBLE, STP_PARAMETER_CLASS_OUTPUT, STP_PARAMETER_LEVEL_ADVANCED, 0, 1, 5, 1, 0 }, 0.0, 2.0, 1.0, 1 }, { { - "OrangeDensity", N_("Orange Density"), "Color=Yes,Category=Output Level Adjustment", - N_("Adjust the orange density"), + "GreenDensity", N_("Green Density"), "Color=Yes,Category=Output Level Adjustment", + N_("Adjust the green density"), STP_PARAMETER_TYPE_DOUBLE, STP_PARAMETER_CLASS_OUTPUT, STP_PARAMETER_LEVEL_ADVANCED, 0, 1, 5, 1, 0 }, 0.0, 2.0, 1.0, 1 @@ -1007,7 +1029,7 @@ get_privdata(stp_vars_t *v) } #define DEF_SIMPLE_ACCESSOR(f, t) \ -static inline t \ +static t \ escp2_##f(const stp_vars_t *v) \ { \ if (stp_check_int_parameter(v, "escp2_" #f, STP_PARAMETER_ACTIVE)) \ @@ -1020,7 +1042,7 @@ escp2_##f(const stp_vars_t *v) \ } #define DEF_RAW_ACCESSOR(f, t) \ -static inline t \ +static t \ escp2_##f(const stp_vars_t *v) \ { \ if (stp_check_raw_parameter(v, "escp2_" #f, STP_PARAMETER_ACTIVE)) \ @@ -1033,7 +1055,7 @@ escp2_##f(const stp_vars_t *v) \ } #define DEF_ROLL_ACCESSOR(f, t) \ -static inline t \ +static t \ escp2_##f(const stp_vars_t *v, int rollfeed) \ { \ if (stp_check_int_parameter(v, "escp2_" #f, STP_PARAMETER_ACTIVE)) \ @@ -1244,25 +1266,25 @@ escp2_density(const stp_vars_t *v) return 0; } -static int +static inline int escp2_bits(const stp_vars_t *v) { return escp2_res_param(v, "escp2_bits", NULL); } -static int +static inline int escp2_base_res(const stp_vars_t *v) { return escp2_res_param(v, "escp2_base_res", NULL); } -static int +static inline int escp2_ink_type_by_res(const stp_vars_t *v, const res_t *res) { return escp2_res_param(v, "escp2_ink_type", res); } -static double +static inline double escp2_density_by_res(const stp_vars_t *v, const res_t *res) { if (res) @@ -1274,13 +1296,13 @@ escp2_density_by_res(const stp_vars_t *v, const res_t *res) return 0.0; } -static int +static inline int escp2_bits_by_res(const stp_vars_t *v, const res_t *res) { return escp2_res_param(v, "escp2_bits", res); } -static int +static inline int escp2_base_res_by_res(const stp_vars_t *v, const res_t *res) { return escp2_res_param(v, "escp2_base_res", res); @@ -2526,6 +2548,7 @@ escp2_parameters(const stp_vars_t *v, const char *name, strcmp(name, "BlackDensity") == 0 || strcmp(name, "RedDensity") == 0 || strcmp(name, "BlueDensity") == 0 || + strcmp(name, "GreenDensity") == 0 || strcmp(name, "OrangeDensity") == 0) set_density_parameter(v, description, name); else if (strcmp(name, "CyanHueCurve") == 0 || @@ -2533,6 +2556,7 @@ escp2_parameters(const stp_vars_t *v, const char *name, strcmp(name, "YellowHueCurve") == 0 || strcmp(name, "RedHueCurve") == 0 || strcmp(name, "BlueHueCurve") == 0 || + strcmp(name, "GreenHueCurve") == 0 || strcmp(name, "OrangeHueCurve") == 0) set_hue_map_parameter(v, description, name); else if (strcmp(name, "UseGloss") == 0) @@ -4087,7 +4111,10 @@ setup_page(stp_vars_t *v) pd->page_management_units / escp2_base_separation(v); else pd->page_extra_height = 0; - pd->paper_extra_bottom = escp2_paper_extra_bottom(v); + if (pd->duplex) + pd->paper_extra_bottom = 0; + else + pd->paper_extra_bottom = escp2_paper_extra_bottom(v); } internal_imageable_area(v, 0, 0, &pd->page_left, &pd->page_right, &pd->page_bottom, &pd->page_top); diff --git a/src/main/print-escp2.h b/src/main/print-escp2.h index 7280629..976ffd6 100644 --- a/src/main/print-escp2.h +++ b/src/main/print-escp2.h @@ -1,5 +1,5 @@ /* - * "$Id: print-escp2.h,v 1.139 2010/12/19 02:51:37 rlk Exp $" + * "$Id: print-escp2.h,v 1.140 2014/01/23 13:22:41 rlk Exp $" * * Print plug-in EPSON ESC/P2 driver for the GIMP. * @@ -28,8 +28,8 @@ * Maximum number of channels in a printer. If Epson comes out with an * 8-head printer, this needs to be increased. */ -#define PHYSICAL_CHANNEL_LIMIT 8 #define MAX_DROP_SIZES 3 +#define PHYSICAL_CHANNEL_LIMIT ((STP_CHANNEL_LIMIT) / ((MAX_DROP_SIZES)+1)) #define XCOLOR_R (STP_NCOLORS + 0) #define XCOLOR_B (STP_NCOLORS + 1) @@ -624,5 +624,5 @@ extern void stpi_escp2_terminate_page(stp_vars_t *v); #endif /* GUTENPRINT_INTERNAL_ESCP2_H */ /* - * End of "$Id: print-escp2.h,v 1.139 2010/12/19 02:51:37 rlk Exp $". + * End of "$Id: print-escp2.h,v 1.140 2014/01/23 13:22:41 rlk Exp $". */ diff --git a/src/main/print-lexmark.c b/src/main/print-lexmark.c index e43d9b4..95b2881 100644 --- a/src/main/print-lexmark.c +++ b/src/main/print-lexmark.c @@ -1,6 +1,6 @@ /* - * "$Id: print-lexmark.c,v 1.161 2012/01/19 13:25:51 m0m Exp $" + * "$Id: print-lexmark.c,v 1.163 2014/01/04 23:07:22 rlk Exp $" * * Print plug-in Lexmark driver for the GIMP. * @@ -37,7 +37,7 @@ * lexmark_cap_t which defines positions are in 1/72 DPI. At * lexmark_print the unit will be changed dependent on the printer, * according to the value defined at lexmark_cap_t.x_raster_res and - * lexmark_cap_t.y_raster_res. These two parameters are specifing the + * lexmark_cap_t.y_raster_res. These two parameters are specifying the * resolution used for positioning the printer head (it is not the * resolution used for printing!). */ @@ -466,8 +466,8 @@ typedef lexmark_res_t lexmark_res_t_array[LEXM_RES_COUNT]; typedef struct { int ncolors; unsigned int used_colors; /* specifies the head colors to be used (e.g. COLOR_MODE_K */ - unsigned int pass_length; /* avaliable jets for one color */ - int v_top_head_offset; /* offset from top, wehere the first jet will be found */ + unsigned int pass_length; /* available jets for one color */ + int v_top_head_offset; /* offset from top, where the first jet will be found */ int h_catridge_offset; /* horizontal offset of cartridges */ int h_direction_offset; /* Offset when printing in the other direction */ const int *head_offset; /* specifies the offset of head colors */ @@ -555,7 +555,7 @@ static const unsigned char outbufHeader_z52[LXM_Z52_HEADERSIZE]= 0x03,0x60, /* 0xd-0xe HE */ 0x04,0xe0, /* 0xf-0x10 HS vertical pos */ 0x19,0x5c, /* 0x11-0x12 */ - 0x0,0x0, /* 0x13-0x14 VO between packges*/ + 0x0,0x0, /* 0x13-0x14 VO between packages*/ 0x0,0x80, /* 0x15-0x16 */ 0x0,0x0,0x0,0x0,0x1,0x2,0x0,0x0,0x0,0x0,0x0 /* 0x17-0x21 */ }; @@ -595,21 +595,21 @@ static const lexmark_res_t_array lexmark_reslist_z52 = /* LEXM_RES_COUNT entrie static const lexmark_inkname_t ink_types_z52[] = { /* output_type ncolors used_colors pass_length v_top_head_offset - * h_catridge_offset + * h_cartridge_offset * h_direction_offset * head_offset */ { "CMYK", N_("Four Color Standard"), {{ 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cmyk }, { 4, COLOR_MODE_CMYK, 192/3, 0, 0, 10, head_offset_cmyk }}}, { "RGB", N_("Three Color Composite"), - {{ 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cmyk }, /* we ignor CMY, use black */ + {{ 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cmyk }, /* we ignore CMY, use black */ { 4, COLOR_MODE_CMY, 192/3, 0, 0, 10, head_offset_cmy }}}, { "PhotoCMYK", N_("Six Color Photo"), {{ 1, COLOR_MODE_K, 192/3, 0, 0, 10, head_offset_cCmMyk }, { 6, COLOR_MODE_CcMcYK, 192/3, 0, 0, 10, head_offset_cCmMyk }}}, { "PhotoCMY", N_("Five Color Photo Composite"), {{ 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cCmMyk }, - { 5, COLOR_MODE_CcMcY, 192/3, 0, 0, 10, head_offset_cCmMyk }}}, /* we ignor CMY, use black */ + { 5, COLOR_MODE_CcMcY, 192/3, 0, 0, 10, head_offset_cCmMyk }}}, /* we ignore CMY, use black */ { "Gray", N_("Black"), {{ 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cmyk }, { 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cmyk }}}, @@ -619,7 +619,7 @@ static const lexmark_inkname_t ink_types_z52[] = /* - * 3200 sepecific stuff + * 3200 specific stuff */ #define LXM3200_LEFTOFFS 6254 #define LXM3200_RIGHTOFFS (LXM3200_LEFTOFFS-2120) @@ -665,20 +665,20 @@ static const lexmark_res_t_array lexmark_reslist_3200 = /* LEXM_RES_COUNT entr static const lexmark_inkname_t ink_types_3200[] = { /* output_type ncolors used_colors pass_length v_top_head_offset - * h_catridge_offset + * h_cartridge_offset * h_direction_offset * head_offset */ { "CMYK", N_("Four Color Standard"), {{ 1, COLOR_MODE_K, 208, 20, 0, 12, head_offset_cmyk }, { 4, COLOR_MODE_CMYK, 192/3, 0, 0, 12, head_offset_cmyk }}}, { "RGB", N_("Three Color Composite"), - {{ 1, COLOR_MODE_K, 208, 20, 0, 12, head_offset_cmyk }, /* we ignor CMY, use black */ + {{ 1, COLOR_MODE_K, 208, 20, 0, 12, head_offset_cmyk }, /* we ignore CMY, use black */ { 4, COLOR_MODE_CMY, 192/3, 0, 0, 12, head_offset_cmy }}}, { "PhotoCMYK", N_("Six Color Photo"), {{ 1, COLOR_MODE_K, 192/3, 0, 0, 12, head_offset_cCmMyk }, { 6, COLOR_MODE_CcMcYK, 192/3, 0, 0, 12, head_offset_cCmMyk }}}, { "PhotoCMY", N_("Five Color Photo Composite"), - {{ 1, COLOR_MODE_K, 208, 20, 0, 12, head_offset_cCmMyk }, /* we ignor CMY, use black */ + {{ 1, COLOR_MODE_K, 208, 20, 0, 12, head_offset_cCmMyk }, /* we ignore CMY, use black */ { 5, COLOR_MODE_CcMcY, 192/3, 0, 0, 12, head_offset_cCmMyk }}}, { NULL, NULL } }; @@ -690,7 +690,7 @@ static const lexmark_inkname_t ink_types_3200[] = /* main structure */ static const lexmark_cap_t lexmark_model_capabilities[] = { - /* default settings for unkown models */ + /* default settings for unknown models */ { (Lex_model)-1, 8*72,11*72,180,180,20,20,20,20, LEXMARK_INK_K, LEXMARK_SLOT_ASF1, 0 }, @@ -762,7 +762,7 @@ static const lexmark_cap_t lexmark_model_capabilities[] = /*** printer internal parameters ***/ 0, /* real left paper border */ 300, /* real top paper border */ - 1200, /* horizontal resolutio of ??? dpi for positioning */ + 1200, /* horizontal resolution of ??? dpi for positioning */ 1200, /* use a vertical resolution of 1200 dpi for positioning */ &lexmark_reslist_3200, /* resolution specific parameters of ?? */ ink_types_3200, /* supported inks */ @@ -950,7 +950,10 @@ get_media_type(const char *name, const lexmark_cap_t * caps) return NULL; } -static int +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic ignored "-pedantic" +static inline int lexmark_source_type(const char *name, const lexmark_cap_t * caps) { if (name) @@ -965,6 +968,7 @@ lexmark_source_type(const char *name, const lexmark_cap_t * caps) return 4; } +#pragma GCC diagnostic pop @@ -980,7 +984,7 @@ lexmark_head_offset(int ydpi, /* i */ { int i; - stp_deprintf(STP_DBG_LEXMARK, " sizie %d, size_v %d, size_v[0] %d\n", (int)sizeof(*lineoff_buffer), (int)sizeof(lineoff_buffer->v), (int)sizeof(lineoff_buffer->v[0])); + stp_deprintf(STP_DBG_LEXMARK, " size %d, size_v %d, size_v[0] %d\n", (int)sizeof(*lineoff_buffer), (int)sizeof(lineoff_buffer->v), (int)sizeof(lineoff_buffer->v[0])); memcpy(lineoff_buffer, ink_parameter->head_offset, sizeof(*lineoff_buffer)); for (i=0; i < (sizeof(lineoff_buffer->v) / sizeof(lineoff_buffer->v[0])); i++) { @@ -1569,7 +1573,7 @@ get_double_param(stp_vars_t *v, const char *param) /********************************************************** * lexmark_print() - Print an image to a LEXMARK printer. **********************************************************/ -/* This method should not be printer dependent (mybe it is because of nozzle count and other things) */ +/* This method should not be printer dependent (maybe it is because of nozzle count and other things) */ /* The method will set the printing method depending on the selected printer. It will define the colors to be used and the resolution. Additionally the pass_length will be defined. @@ -1590,9 +1594,8 @@ lexmark_do_print(stp_vars_t *v, stp_image_t *image) page_right, page_bottom, page_true_height, /* True length of page */ - out_width, /* Width of image on page in pixles */ + out_width, /* Width of image on page in pixels */ out_height, /* Length of image on page */ - out_channels, /* Output bytes per pixel */ length, /* Length of raster data in bytes*/ buf_length, /* Length of raster data buffer (dmt) */ errdiv, /* Error dividend */ @@ -1601,14 +1604,12 @@ lexmark_do_print(stp_vars_t *v, stp_image_t *image) errline, /* Current raster line */ errlast; /* Last raster line loaded */ unsigned zero_mask; - int image_height, - image_width; + int image_height; int use_dmt = 0; int pass_length=0; /* count of inkjets for one pass */ int add_top_offset=0; /* additional top offset */ int printMode = 0; - int source; - /* Lexmark do not have differnet pixel sizes. We have to correct the density according the print resolution. */ + /* Lexmark do not have different pixel sizes. We have to correct the density according the print resolution. */ double densityDivisor; /* This parameter is will adapt the density according the resolution */ double k_lower, k_upper; int physical_xdpi = 0; @@ -1672,8 +1673,6 @@ lexmark_do_print(stp_vars_t *v, stp_image_t *image) stp_image_init(image); - source= lexmark_source_type(media_source,caps); - /* force grayscale if image is grayscale * or single black cartridge installed */ @@ -1732,7 +1731,7 @@ lexmark_do_print(stp_vars_t *v, stp_image_t *image) #endif if ((printMode & COLOR_MODE_PHOTO) == COLOR_MODE_PHOTO) { - /* in case of photo mode we have to go a bit ligther */ + /* in case of photo mode we have to go a bit lighter */ densityDivisor /= 1.2; } @@ -1768,7 +1767,6 @@ densityDivisor /= 1.2; stp_dprintf(STP_DBG_LEXMARK, v, "page_right %d, page_left %d, page_top %d, page_bottom %d, left %d, top %d\n",page_right, page_left, page_top, page_bottom,left, top); image_height = stp_image_height(image); - image_width = stp_image_width(image); stp_default_media_size(v, &n, &page_true_height); lxm3200_linetoeject = (page_true_height * 1200) / 72; @@ -1788,7 +1786,7 @@ densityDivisor /= 1.2; out_height = ydpi * out_height / 72; - stp_dprintf(STP_DBG_LEXMARK, v, "border: left %d, x_raster_res %d, offser_left %d\n", left, caps->x_raster_res, caps->offset_left_border); + stp_dprintf(STP_DBG_LEXMARK, v, "border: left %d, x_raster_res %d, offset_left %d\n", left, caps->x_raster_res, caps->offset_left_border); left = ((caps->x_raster_res * left) / 72) + caps->offset_left_border; @@ -1879,7 +1877,7 @@ densityDivisor /= 1.2; (cols.p.Y) ? 'Y' : ' ', (cols.p.k) ? 'k' : ' '); - /* initialize soft weaveing */ + /* initialize soft weaving */ privdata.ink_parameter = ink_parameter; privdata.bidirectional = lexmark_print_bidirectional(model, resolution); privdata.outbuf = stp_malloc((((((pass_length/8)*11))+40) * out_width)+2000); @@ -1890,7 +1888,7 @@ densityDivisor /= 1.2; stp_initialize_weave(v, pass_length, /* jets */ nozzle_separation, /* separation */ - horizontal_passes, /* h overample */ + horizontal_passes, /* h oversample */ res_para_ptr->vertical_passes, /* v passes */ res_para_ptr->vertical_oversample, /* v oversample */ ncolors, /* colors */ @@ -1926,7 +1924,7 @@ densityDivisor /= 1.2; stp_get_float_parameter(v, "Density") / densityDivisor, densityDivisor); - /* Lexmark do not have differnet pixel sizes. We have to correct the density according the print resolution. */ + /* Lexmark do not have different pixel sizes. We have to correct the density according the print resolution. */ stp_scale_float_parameter(v, "Density", 1.0 / densityDivisor); @@ -2077,7 +2075,7 @@ densityDivisor /= 1.2; stp_curve_destroy(sat_adjustment); } - out_channels = stp_color_init(v, image, 65536); + (void) stp_color_init(v, image, 65536); /* calculate the memory we need for one line of the printer image (hopefully we are right) */ stp_dprintf(STP_DBG_LEXMARK, v, "---------- buffer mem size = %d\n", (((((pass_length/8)*11)/10)+40) * out_width)+200); @@ -2179,7 +2177,7 @@ static const stp_printfuncs_t print_lexmark_printfuncs = This method is printer type dependent code. This method initializes the line to be printed. It will set - the printer specific initialization which has to be done bofor + the printer specific initialization which has to be done before the pixels of the image could be printed. */ static unsigned char * @@ -2199,7 +2197,7 @@ lexmark_init_line(int mode, unsigned char *prnBuf, /* stp_erprintf("#### width %d, length %d, pass_length %d\n", width, length, pass_length);*/ - /* first, we wirte the line header */ + /* first, we write the line header */ switch(caps->model) { case m_z52: case m_z42: @@ -2216,7 +2214,7 @@ lexmark_init_line(int mode, unsigned char *prnBuf, /* K could only be present if black is printed only. */ if ((mode & COLOR_MODE_K) || (mode & (COLOR_MODE_K | COLOR_MODE_LC | COLOR_MODE_LM))) { - stp_deprintf(STP_DBG_LEXMARK, "set photo/black catridge \n"); + stp_deprintf(STP_DBG_LEXMARK, "set photo/black cartridge \n"); prnBuf[LX_Z52_COLOR_MODE_POS] = LX_Z52_BLACK_PRINT; if (direction) { @@ -2386,7 +2384,7 @@ typedef struct Lexmark_head_colors { /* lexmark_write This method is has NO printer type dependent code. - This method writes a single line of the print. The line consits of "pass_length" + This method writes a single line of the print. The line consists of "pass_length" pixel lines (pixels, which could be printed with one pass by the printer. */ @@ -2405,7 +2403,7 @@ lexmark_write(const stp_vars_t *v, /* I - Print file or command */ int length, /* I - Length of bitmap data in bytes */ int mode, /* I - Which color */ int ydpi, /* I - Vertical resolution */ - int width, /* I - Printed width in pixles */ + int width, /* I - Printed width in pixels */ int offset, /* I - Offset from left side in lexmark_cap_t.x_raster_res DPI */ int dmt) { @@ -2413,7 +2411,7 @@ lexmark_write(const stp_vars_t *v, /* I - Print file or command */ int clen; int x; /* actual vertical position */ int y; /* actual horizontal position */ - int dy; /* horiz. inkjet posintion */ + int dy; /* horiz. inkjet position */ int x1; unsigned short pixelline; /* byte to be written */ unsigned int valid_bytes; /* bit list which tells the present bytes */ @@ -2579,7 +2577,7 @@ lexmark_write(const stp_vars_t *v, /* I - Print file or command */ if (anyDots) { anyCol = 1; } else { - /* there are no dots, make empy package */ + /* there are no dots, make empty package */ /* stp_dprintf(STP_DBG_LEXMARK, v, "-- empty col %i\n", x); */ } } @@ -2711,11 +2709,11 @@ flush_pass(stp_vars_t *v, int passno, int vertical_subpass) prn_mode = PRINT_MODE_1200; break; default: - stp_dprintf(STP_DBG_LEXMARK, v, "Eror: Unsupported phys resolution (%d)\n", physical_xdpi); + stp_dprintf(STP_DBG_LEXMARK, v, "Error: Unsupported phys resolution (%d)\n", physical_xdpi); return; break; } - /* calculate paper shift and adapt actual resoution to physical positioning resolution */ + /* calculate paper shift and adapt actual resolution to physical positioning resolution */ paperShift = (pass->logicalpassstart - pd->last_pass_offset) * (caps->y_raster_res/ydpi); for (j = 0; j < pd->ncolors; j++) stp_dprintf(STP_DBG_LEXMARK, v, "Color %d: active %d line %p jets %d offset %ld\n", @@ -2774,7 +2772,7 @@ flush_pass(stp_vars_t *v, int passno, int vertical_subpass) (lwidth+7)/8, /* length, I - Length of bitmap data of one line in bytes */ prn_mode | COLOR_MODE_C | COLOR_MODE_Y | COLOR_MODE_M, /* mode, I - Which color */ ydpi, /* ydpi, I - Vertical resolution */ - lwidth, /* width, I - Printed width in pixles*/ + lwidth, /* width, I - Printed width in pixels*/ hoffset+microoffset, /* offset I - Offset from left side in x_raster_res DPI */ 0 /* dmt */); if (pd->bidirectional) @@ -2782,8 +2780,8 @@ flush_pass(stp_vars_t *v, int passno, int vertical_subpass) } - /*** do we have to print somthing with black or photo cartridge ? ***/ - /* we print with the photo or black cartidge */ + /*** do we have to print something with black or photo cartridge ? ***/ + /* we print with the photo or black cartridge */ if (pd->jets != 208) { @@ -2871,7 +2869,7 @@ flush_pass(stp_vars_t *v, int passno, int vertical_subpass) (lwidth+7)/8, /* length, I - Length of bitmap data of one line in bytes */ prn_mode | COLOR_MODE_LC | COLOR_MODE_LM | COLOR_MODE_K, /* mode, I - Which color */ ydpi, /* ydpi, I - Vertical resolution */ - lwidth, /* width, I - Printed width in pixles*/ + lwidth, /* width, I - Printed width in pixels*/ hoffset+microoffset, /* offset I - Offset from left side in x_raster_res DPI */ 0 /* dmt */); if (pd->bidirectional) @@ -2925,7 +2923,7 @@ static void testprint(testdata *td) /* read the colors */ fscanf(td->ifile, "%[^\"]\"%c c %[^\"]\",", dummy1, dummy2, dummy2); /* jump over first color */ - for (icol=0; icol < td->cols; icol++) { /* we ignor the first color. It is "no dot". */ + for (icol=0; icol < td->cols; icol++) { /* we ignore the first color. It is "no dot". */ fscanf(td->ifile, "%[^\"]\"%c c %[^\"]\",", dummy1, &(td->colchar[icol]), dummy2); stp_erprintf("colchar %d <%c>\n", i, td->colchar[icol]); } @@ -2933,12 +2931,12 @@ static void testprint(testdata *td) if (td->cols > 5) { td->cols = 7; - for (icol=0; icol < td->cols; icol++) { /* we ignor the first color. It is "no dot". */ + for (icol=0; icol < td->cols; icol++) { /* we ignore the first color. It is "no dot". */ linebufs.v[icol] = (char *)stp_malloc((td->x+7)/8); /* allocate the color */ } } else if (td->cols > 4) { td->cols = 5; - for (icol=0; icol < td->cols; icol++) { /* we ignor the first color. It is "no dot". */ + for (icol=0; icol < td->cols; icol++) { /* we ignore the first color. It is "no dot". */ linebufs.v[icol] = (char *)stp_malloc((td->x+7)/8); /* allocate the color */ } } else { @@ -3024,4 +3022,3 @@ stp_module_t stp_module_data = print_lexmark_module_exit, (void *) &print_lexmark_module_data }; - diff --git a/src/main/print-list.c b/src/main/print-list.c index 16c24bc..75b5b08 100644 --- a/src/main/print-list.c +++ b/src/main/print-list.c @@ -1,5 +1,5 @@ /* - * "$Id: print-list.c,v 1.26 2012/01/19 13:25:40 m0m Exp $" + * "$Id: print-list.c,v 1.27 2014/01/04 00:31:38 rlk Exp $" * * Gutenprint list functions. A doubly-linked list implementation, * with callbacks for freeing, sorting, and retrieving nodes by name @@ -236,7 +236,7 @@ stp_list_get_end(const stp_list_t *list) static inline stp_list_t * deconst_list(const stp_list_t *list) { - return (stp_list_t *) list; + return (stp_list_t *) stpi_cast_safe(list); } /* get the node by its place in the list */ @@ -568,7 +568,7 @@ stp_list_item_create(stp_list_t *list, ln->prev = ln->next = NULL; if (data) - ln->data = (void *) data; + ln->data = stpi_cast_safe(data); else { stp_free(ln); diff --git a/src/main/print-olympus.c b/src/main/print-olympus.c index a98fea4..a51d7df 100644 --- a/src/main/print-olympus.c +++ b/src/main/print-olympus.c @@ -1,5 +1,5 @@ /* - * "$Id: print-olympus.c,v 1.99 2011/07/06 23:16:23 gernot2270 Exp $" + * "$Id: print-olympus.c,v 1.152 2014/02/01 01:04:21 speachy Exp $" * * Print plug-in DyeSub driver (formerly Olympus driver) for the GIMP. * @@ -29,6 +29,8 @@ * compile on generic platforms that don't support glib, gimp, gtk, etc. */ +/* #define DNPX2 */ + #ifdef HAVE_CONFIG_H #include <config.h> #endif @@ -51,6 +53,10 @@ #define DYESUB_FEATURE_WHITE_BORDER 0x00000010 #define DYESUB_FEATURE_PLANE_INTERLACE 0x00000020 #define DYESUB_FEATURE_PLANE_LEFTTORIGHT 0x00000040 +#define DYESUB_FEATURE_ROW_INTERLACE 0x00000080 +#define DYESUB_FEATURE_12BPP 0x00000100 +#define DYESUB_FEATURE_16BPP 0x00000200 +#define DYESUB_FEATURE_BIGENDIAN 0x00000400 #define DYESUB_PORTRAIT 0 #define DYESUB_LANDSCAPE 1 @@ -73,6 +79,15 @@ #define MAX_BYTES_PER_CHANNEL 2 #define SIZE_THRESHOLD 6 +/* + * Random implementation from POSIX.1-2001 to yield reproducible results. + */ +static int xrand(unsigned long *seed) +{ + *seed = *seed * 1103515245ul + 12345ul; + return ((unsigned) (*seed / 65536ul) % 32768ul); +} + typedef struct { const char *output_type; @@ -138,6 +153,17 @@ typedef struct { size_t n_items; } laminate_list_t; +typedef struct { + const char* name; + const char* text; + const stp_raw_t seq; +} dyesub_media_t; + +typedef struct { + const dyesub_media_t *item; + size_t n_items; +} dyesub_media_list_t; + #define NPUTC_BUFSIZE (4096) typedef struct @@ -149,7 +175,9 @@ typedef struct int block_max_w, block_max_h; const char* pagesize; const laminate_t* laminate; + const dyesub_media_t* media; int print_mode; + int bpp; char nputc_buf[NPUTC_BUFSIZE]; } dyesub_privdata_t; @@ -159,9 +187,11 @@ typedef struct { int out_channels; int ink_channels; const char *ink_order; - int bytes_per_out_channel; int bytes_per_ink_channel; + int bits_per_ink_channel; + int byteswap; int plane_interlacing; + int row_interlacing; char empty_byte; unsigned short **image_data; int outh_px, outw_px, outt_px, outb_px, outl_px, outr_px; @@ -180,7 +210,7 @@ typedef struct /* printer specific parameters */ const dyesub_pagesize_list_t *pages; const dyesub_printsize_list_t *printsize; int block_size; - int features; + int features; void (*printer_init_func)(stp_vars_t *); void (*printer_end_func)(stp_vars_t *); void (*plane_init_func)(stp_vars_t *); @@ -191,11 +221,13 @@ typedef struct /* printer specific parameters */ const char *adj_magenta; const char *adj_yellow; const laminate_list_t *laminate; + const dyesub_media_list_t *media; } dyesub_cap_t; static const dyesub_cap_t* dyesub_get_model_capabilities(int model); static const laminate_t* dyesub_get_laminate_pattern(stp_vars_t *v); +static const dyesub_media_t* dyesub_get_mediatype(stp_vars_t *v); static void dyesub_nputc(stp_vars_t *v, char byte, int count); @@ -742,7 +774,6 @@ static const dyesub_printsize_t cp10_printsize[] = LIST(dyesub_printsize_list_t, cp10_printsize_list, dyesub_printsize_t, cp10_printsize); - /* Canon CP-100 series */ static const dyesub_pagesize_t cpx00_page[] = { @@ -764,6 +795,12 @@ static const dyesub_printsize_t cpx00_printsize[] = LIST(dyesub_printsize_list_t, cpx00_printsize_list, dyesub_printsize_t, cpx00_printsize); +static void cp10_printer_init_func(stp_vars_t *v) +{ + stp_put16_be(0x4000, v); + dyesub_nputc(v, '\0', 10); +} + static void cpx00_printer_init_func(stp_vars_t *v) { char pg = (strcmp(privdata.pagesize, "Postcard") == 0 ? '\1' : @@ -852,16 +889,7 @@ static const dyesub_printsize_t cp220_printsize[] = LIST(dyesub_printsize_list_t, cp220_printsize_list, dyesub_printsize_t, cp220_printsize); -/* Canon SELPHY CP-520 */ -static void cp520_printer_init_func(stp_vars_t *v) -{ - cpx00_printer_init_func(v); - /* The CP520 does not want the printer_init and plane_init command to be sent - in the same USB-packet so we fill up first USB-Packet with '\0'. */ - dyesub_nputc(v, '\0', 1012); -} - -/* Canon SELPHY CP-790 */ +/* Canon SELPHY CP790 */ static void cp790_printer_init_func(stp_vars_t *v) { char pg = (strcmp(privdata.pagesize, "Postcard") == 0 ? '\0' : @@ -981,6 +1009,12 @@ static void es40_printer_init_func(stp_vars_t *v) stp_put32_le(privdata.w_size * privdata.h_size, v); } +/* Canon SELPHY CP900 */ +static void cp900_printer_end_func(stp_vars_t *v) +{ + dyesub_nputc(v, 0x0, 4); +} + /* Sony DPP-EX5, DPP-EX7 */ static const dyesub_resolution_t res_403dpi[] = { @@ -1187,14 +1221,9 @@ LIST(dyesub_printsize_list_t, updr100_printsize_list, dyesub_printsize_t, updr10 static void updr100_printer_init_func(stp_vars_t *v) { - int dim1 = (privdata.print_mode == DYESUB_LANDSCAPE ? - privdata.h_size : privdata.w_size); - int dim2 = (privdata.print_mode == DYESUB_LANDSCAPE ? - privdata.w_size : privdata.h_size); - stp_zfwrite("UPD8D\x00\x00\x00\x10\x03\x00\x00", 1, 12, v); - stp_put32_le(dim1, v); - stp_put32_le(dim2, v); + stp_put32_le(privdata.w_size, v); + stp_put32_le(privdata.h_size, v); stp_zfwrite("\x1e\x00\x03\x00\x01\x00\x4e\x01\x00\x00", 1, 10, v); stp_write_raw(&(privdata.laminate->seq), v); /* laminate pattern */ dyesub_nputc(v, '\0', 13); @@ -1233,11 +1262,11 @@ LIST(dyesub_resolution_list_t, res_334dpi_list, dyesub_resolution_t, res_334dpi) static const dyesub_pagesize_t updr150_page[] = { - { "w288h432", "2UPC-153 (4x6)", 298, 442, 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "B7", "2UPC-154 (3.5x5)", 261, 373, 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "w360h504", "2UPC-155 (5x7)", 373, 514, 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "w432h576", "2UPC-156 (6x8)", 442, 588, 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "Custom", NULL, 298, 442, 0, 0, 0, 0, DYESUB_LANDSCAPE}, + { "w288h432", "2UPC-153 (4x6)", PT(1382,334)+1, PT(2048,334)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE}, + { "B7", "2UPC-154 (3.5x5)", PT(1210,334)+1, PT(1728,334)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE}, + { "w360h504", "2UPC-155 (5x7)", PT(1728,334)+1, PT(2380,334)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, + { "w432h576", "2UPC-156 (6x8)", PT(2048,334)+1, PT(2724,334)+1, 0, 0, 0, DYESUB_PORTRAIT}, + { "Custom", NULL, PT(1382,334)+1, PT(2048,334)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE}, }; LIST(dyesub_pagesize_list_t, updr150_page_list, dyesub_pagesize_t, updr150_page); @@ -1253,13 +1282,9 @@ static const dyesub_printsize_t updr150_printsize[] = LIST(dyesub_printsize_list_t, updr150_printsize_list, dyesub_printsize_t, updr150_printsize); -static void updr150_printer_init_func(stp_vars_t *v) +static void updr150_200_printer_init_func(stp_vars_t *v, int updr200) { char pg = '\0'; - int dim1 = (privdata.print_mode == DYESUB_LANDSCAPE ? - privdata.w_size : privdata.h_size); - int dim2 = (privdata.print_mode == DYESUB_LANDSCAPE ? - privdata.h_size : privdata.w_size); stp_zfwrite("\x6a\xff\xff\xff\xef\xff\xff\xff", 1, 8, v); if (strcmp(privdata.pagesize,"B7") == 0) @@ -1280,35 +1305,71 @@ static void updr150_printer_init_func(stp_vars_t *v) "\x00\x00\x00\x00\x00\x01\x00\xed" "\xff\xff\xff\x07\x00\x00\x00\x1b" "\xee\x00\x00\x00\x02\x00\x02\x00" - "\x00\x00\x00\x01\x07\x00\x00\x00" + "\x00\x00\x00\x01", 1, 67, v); + + if (updr200) { /* UP-DR200-specific! */ + stp_zfwrite("\x07\x00\x00\x00" + "\x1b\xc0\x00\x03\x00\x05", 1, 10, v); + stp_putc(0x00, v); /* 0x02 for doubled-up prints. */ + /* eg 2x6 on 4x6 media, 3.5x5 on 5x7 media, 4x6 on 8x6 media */ + } + + stp_zfwrite("\x05\x00\x00\x00" + "\x02\x03\x00\x01\x00", 1, 9, v); + stp_zfwrite("\x07\x00\x00\x00" "\x1b\x15\x00\x00\x00\x0d\x00\x0d" "\x00\x00\x00\x00\x00\x00\x00\x07" - "\x00\x00\x00\x00", 1, 91, v); - stp_put16_be(dim1, v); - stp_put16_be(dim2, v); + "\x00\x00\x00\x00", 1, 24, v); + stp_put16_be(privdata.w_size, v); + stp_put16_be(privdata.h_size, v); stp_zfwrite("\xf9\xff\xff\xff\x07\x00\x00\x00" "\x1b\xe1\x00\x00\x00\x0b\x00\x0b" - "\x00\x00\x00\x00\x80\x00\x00\x00" - "\x00\x00", 1, 26, v); - stp_put16_be(dim1, v); - stp_put16_be(dim2, v); - stp_zfwrite("\xf8\xff\xff\xff\x0b\x00\x00\x00\x1b\xea" - "\x00\x00\x00\x00", 1, 14, v); + "\x00\x00\x00\x00\x80", 1, 21, v); + + stp_zfwrite((privdata.laminate->seq).data, 1, + (privdata.laminate->seq).bytes, v); /*laminate pattern*/ + + stp_zfwrite("\x00\x00\x00\x00", 1, 4, v); + stp_put16_be(privdata.w_size, v); + stp_put16_be(privdata.h_size, v); + stp_zfwrite("\xf8\xff\xff\xff" + "\xec\xff\xff\xff" + "\x0b\x00\x00\x00\x1b\xea" + "\x00\x00\x00\x00", 1, 18, v); stp_put32_be(privdata.w_size*privdata.h_size*3, v); stp_zfwrite("\x00", 1, 1, v); stp_put32_le(privdata.w_size*privdata.h_size*3, v); } +static void updr150_printer_init_func(stp_vars_t *v) +{ + updr150_200_printer_init_func(v, 0); +} + static void updr150_printer_end_func(stp_vars_t *v) { - stp_zfwrite("\xfc\xff\xff" + stp_zfwrite("\xeb\xff\xff\xff" + "\xfc\xff\xff" "\xff\xfa\xff\xff\xff\x07\x00\x00" "\x00\x1b\x0a\x00\x00\x00\x00\x00" "\x07\x00\x00\x00\x1b\x17\x00\x00" "\x00\x00\x00\xf3\xff\xff\xff" - , 1, 34, v); + , 1, 38, v); } +/* Sony UP-DR200 */ +static const laminate_t updr200_laminate[] = +{ + {"Glossy", N_("Glossy"), {1, "\x00"}}, + {"Matte", N_("Matte"), {1, "\x0c"}}, +}; + +LIST(laminate_list_t, updr200_laminate_list, laminate_t, updr200_laminate); + +static void updr200_printer_init_func(stp_vars_t *v) +{ + updr150_200_printer_init_func(v, 1); +} /* Fujifilm CX-400 */ static const dyesub_pagesize_t cx400_page[] = @@ -1435,6 +1496,1139 @@ static void kodak_dock_plane_init(stp_vars_t *v) dyesub_nputc(v, '\0', 4); } +/* Kodak 6800 */ +static const dyesub_pagesize_t kodak_6800_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 */ + { "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); + +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); + +static const laminate_t kodak_6800_laminate[] = +{ + {"Coated", N_("Coated"), {1, "\x01"}}, + {"None", N_("None"), {1, "\x00"}}, +}; + +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[] = +{ + { "w288h432", "4x6", PT(1240,300)+1, PT(1844,300)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, /* 4x6 */ + { "w360h504", "5x7", PT(1548,300)+1, PT(2140,300)+1, 0, 0, 0, 0, + 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); + +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) +{ + 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 : + privdata.h_size == 1548 ? 0x07 : 0x06, v); + stp_zfwrite((privdata.laminate->seq).data, 1, + (privdata.laminate->seq).bytes, v); + stp_putc(0x00, v); +} + +/* Kodak 605 */ +static void kodak_605_printer_init(stp_vars_t *v) +{ + stp_zfwrite("\x01\x40\x0a\x00\x01", 1, 5, v); + stp_putc(0x01, v); /* Number of copies */ + stp_putc(0x00, v); + stp_put16_le(privdata.w_size, v); + stp_put16_le(privdata.h_size, v); + stp_putc(privdata.h_size == 1240 ? 0x01 : 0x03, v); + stp_zfwrite((privdata.laminate->seq).data, 1, + (privdata.laminate->seq).bytes, v); + stp_putc(0x00, v); +} + +static const laminate_t kodak_605_laminate[] = +{ + {"Coated", N_("Coated"), {1, "\x02"}}, + {"None", N_("None"), {1, "\x01"}}, +}; + +LIST(laminate_list_t, kodak_605_laminate_list, laminate_t, kodak_605_laminate); + +/* Kodak 1400 */ +static const dyesub_resolution_t res_301dpi[] = +{ + { "301x301", 301, 301}, +}; + +LIST(dyesub_resolution_list_t, res_301dpi_list, dyesub_resolution_t, res_301dpi); + +static const dyesub_pagesize_t kodak_1400_page[] = +{ + /* Printer has 1" non-printable area on top and bottom of page, not part of + data sent over. + + Printer requires full-bleed data horizontally. However, not all pixels + are actually printed. 35+35 (8x14 paper) or 76+76 (8x12 paper) are + effectively discarded (ie ~0.125" and ~0.250" respectively). + + 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 */ + { "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); + +static const dyesub_media_t kodak_1400_media[] = +{ + { "Glossy", N_("Glossy"), {2, "\x00\x3c"}}, + { "Matte+5", N_("Matte +5"), {2, "\x01\x28"}}, + { "Matte+4", N_("Matte +4"), {2, "\x01\x2e"}}, + { "Matte+3", N_("Matte +3"), {2, "\x01\x34"}}, + { "Matte+2", N_("Matte +2"), {2, "\x01\x3a"}}, + { "Matte+1", N_("Matte +1"), {2, "\x01\x40"}}, + { "Matte", N_("Matte"), {2, "\x01\x46"}}, + { "Matte-1", N_("Matte -1"), {2, "\x01\x52"}}, + { "Matte-2", N_("Matte -2"), {2, "\x01\x5e"}}, + { "Matte-3", N_("Matte -3"), {2, "\x01\x6a"}}, + { "Matte-4", N_("Matte -4"), {2, "\x01\x76"}}, + { "Matte-5", N_("Matte -5"), {2, "\x01\x82"}}, +}; +LIST(dyesub_media_list_t, kodak_1400_media_list, dyesub_media_t, kodak_1400_media); + +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); + +static void kodak_1400_printer_init(stp_vars_t *v) +{ + stp_zfwrite("PGHD", 1, 4, v); + stp_put16_le(privdata.w_size, v); + dyesub_nputc(v, 0x00, 2); + stp_put16_le(privdata.h_size, v); + dyesub_nputc(v, 0x00, 2); + stp_put32_le(privdata.h_size*privdata.w_size, v); + dyesub_nputc(v, 0x00, 4); + stp_zfwrite((privdata.media->seq).data, 1, 1, v); /* Matte or Glossy? */ + stp_zfwrite((privdata.laminate->seq).data, 1, + (privdata.laminate->seq).bytes, v); + stp_putc(0x01, v); + stp_zfwrite((const char*)((privdata.media->seq).data) + 1, 1, 1, v); /* Lamination intensity */ + dyesub_nputc(v, 0x00, 12); +} + +/* Kodak 805 */ +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}, +}; + +LIST(dyesub_pagesize_list_t, kodak_805_page_list, dyesub_pagesize_t, kodak_805_page); + +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); + +static void kodak_805_printer_init(stp_vars_t *v) +{ + stp_zfwrite("PGHD", 1, 4, v); + stp_put16_le(privdata.w_size, v); + dyesub_nputc(v, 0x00, 2); + stp_put16_le(privdata.h_size, v); + dyesub_nputc(v, 0x00, 2); + stp_put32_le(privdata.h_size*privdata.w_size, v); + dyesub_nputc(v, 0x00, 5); + stp_zfwrite((privdata.laminate->seq).data, 1, + (privdata.laminate->seq).bytes, v); + stp_putc(0x01, v); + stp_putc(0x3c, v); /* Lamination intensity; fixed on glossy media */ + dyesub_nputc(v, 0x00, 12); +} + +/* Kodak 9810 */ +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); + +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); + +static const laminate_t kodak_9810_laminate[] = +{ + {"Coated", N_("Coated"), {3, "\x4f\x6e\x20"}}, + {"None", N_("None"), {3, "\x4f\x66\x66"}}, +}; + +LIST(laminate_list_t, kodak_9810_laminate_list, laminate_t, kodak_9810_laminate); + +static void kodak_9810_printer_init(stp_vars_t *v) +{ + /* Command stream header */ + stp_putc(0x1b, v); + stp_zfwrite("MndROSETTA V001.00100000020525072696E74657242696E4D6F74726C", 1, 59, v); + + /* Begin Job */ + stp_putc(0x1b, v); + stp_zfwrite("MndBgnJob Print ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(8, v); + stp_zfwrite("\x56\x30\x30\x31\x2e\x30\x30\x30", 1, 8, v); + + /* Job Definition Start */ + stp_putc(0x1b, v); + stp_zfwrite("FlsSrtJbDefSetup ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(0, v); + + /* Paper selection */ + stp_putc(0x1b, v); + stp_zfwrite("FlsJbMkMed Name ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(64, v); + if (privdata.h_size == 3624) { + stp_zfwrite("YMCX 8x12 Glossy", 1, 16, v); + } else { + stp_zfwrite("YMCX 8x10 Glossy", 1, 16, v); + } + dyesub_nputc(v, 0x00, 48); + + /* Paper Selection II */ + stp_putc(0x1b, v); + stp_zfwrite("FlsPgMedia Name ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(64, v); + stp_zfwrite("\x38\x22", 1, 2, v); + dyesub_nputc(v, 0x00, 62); + + /* Lamination */ + stp_putc(0x1b, v); + stp_zfwrite("FlsJbLam ", 1, 11, v); + stp_zfwrite((privdata.laminate->seq).data, 1, + (privdata.laminate->seq).bytes, v); + dyesub_nputc(v, 0x20, 5); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(0, v); + + /* Job Definition End */ + stp_putc(0x1b, v); + stp_zfwrite("FlsStpJbDef ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(0, v); + + /* Begin Page */ + stp_putc(0x1b, v); + stp_zfwrite("MndBgnLPageNormal ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(4, v); + stp_put32_be(1, v); + + /* Page dimensions I -- maybe this is physical media size? */ + stp_putc(0x1b, v); + stp_zfwrite("MndSetLPage ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(8, v); + stp_put32_be(privdata.w_size, v); + stp_put32_be(privdata.h_size, v); + + /* Page dimensions II -- maybe this is image data size? */ + stp_putc(0x1b, v); + stp_zfwrite("MndImSpec Size ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(16, v); + stp_put32_be(privdata.w_size, v); + stp_put32_be(privdata.h_size, v); + stp_put32_be(privdata.w_size, v); + stp_put32_be(0, v); + + /* Positioning within page? */ + stp_putc(0x1b, v); + stp_zfwrite("FlsImPositnSpecify ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(8, v); + stp_put32_be(0, v); /* Presumably X */ + stp_put32_be(0, v); /* Presumably Y */ + + /* Sharpening */ + stp_putc(0x1b, v); + stp_zfwrite("FlsImSharp SetLevel", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(2, v); + stp_putc(0xFF, v); + stp_putc(0x12, v); /* SHARPENING -- 0 is off, 0x12 Normal, 0x19 is High */ + + /* Number of Copies */ + stp_putc(0x1b, v); + stp_zfwrite("FlsPgCopies ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(4, v); + stp_put32_be(1, v); /* Number of copies, at least 1 */ + + /* Mirroring */ + stp_putc(0x1b, v); + stp_zfwrite("FlsPgMirrorNone ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(0, v); + + /* Rotation */ + stp_putc(0x1b, v); + stp_zfwrite("FlsPgRotateNone ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(0, v); + + /* Cut list -- seems to be list of be16 row offsets for cuts. */ + stp_putc(0x1b, v); + stp_zfwrite("FlsCutList ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(4, v); + + /* Cut at start/end of sheet */ + if (privdata.h_size == 3624) { + stp_zfwrite("\x00\x0c\x0e\x1c", 1, 4, v); + } else { + stp_zfwrite("\x00\x0c\x0b\xc4", 1, 4, v); + } + +#if 0 /* Additional Known Cut lists */ + /* Single cut, down the center */ + stp_put32_be(6, v); + if (privdata.h_size == 3624) { + stp_zfwrite("\x00\x0c\x07\x14\x0e\x1c", 1, 6, v); + } else { + stp_zfwrite("\x00\x0c\x05\xe8\x0b\xc4", 1, 6, v); + } + /* Double-Slug Cut, down the center */ + stp_put32_be(8, v); + if (privdata.h_size == 3624) { + stp_zfwrite("\x00\x0c\x07\x01\x07\x27\x0e\x1c", 1, 6, v); + } else { + stp_zfwrite("\x00\x0c\x05\xd5\x05\xfb\x0b\xc4", 1, 6, v); + } +#endif + +} + +static void kodak_9810_printer_end(stp_vars_t *v) +{ + /* End Page */ + stp_putc(0x1b, v); + stp_zfwrite("MndEndLPage ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(0, v); + + /* End Job */ + stp_putc(0x1b, v); + stp_zfwrite("MndEndJob ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be(0, v); +} + +static void kodak_9810_plane_init(stp_vars_t *v) +{ + /* Data block */ + stp_putc(0x1b, v); + stp_zfwrite("FlsData Block ", 1, 19, v); + dyesub_nputc(v, 0x00, 4); + stp_put32_be((privdata.w_size * privdata.h_size) + 8, v); + stp_zfwrite("Image ", 1, 8, v); +} + + +/* 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}, +}; + +LIST(dyesub_pagesize_list_t, kodak_8500_page_list, dyesub_pagesize_t, kodak_8500_page); + +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); + +static const dyesub_media_t kodak_8500_media[] = +{ + { "Glossy", N_("Glossy"), {2, "\x00\x00"}}, + { "Matte+5", N_("Matte +5"), {2, "\x01\x05"}}, + { "Matte+4", N_("Matte +4"), {2, "\x01\x04"}}, + { "Matte+3", N_("Matte +3"), {2, "\x01\x03"}}, + { "Matte+2", N_("Matte +2"), {2, "\x01\x02"}}, + { "Matte+1", N_("Matte +1"), {2, "\x01\x01"}}, + { "Matte", N_("Matte"), {2, "\x01\x00"}}, + { "Matte-1", N_("Matte -1"), {2, "\x01\xff"}}, + { "Matte-2", N_("Matte -2"), {2, "\x01\xfe"}}, + { "Matte-3", N_("Matte -3"), {2, "\x01\xfd"}}, + { "Matte-4", N_("Matte -4"), {2, "\x01\xfc"}}, + { "Matte-5", N_("Matte -5"), {2, "\x01\xfb"}}, +}; +LIST(dyesub_media_list_t, kodak_8500_media_list, dyesub_media_t, kodak_8500_media); + +static const laminate_t kodak_8500_laminate[] = +{ + {"Coated", N_("Coated"), {1, "\x00"}}, + {"None", N_("None"), {1, "\x02"}}, +}; + +LIST(laminate_list_t, kodak_8500_laminate_list, laminate_t, kodak_8500_laminate); + +static void kodak_8500_printer_init(stp_vars_t *v) +{ + /* Start with NULL block */ + dyesub_nputc(v, 0x00, 64); + /* Number of copies */ + stp_putc(0x1b, v); + stp_putc(0x4e, v); + stp_putc(1, v); /* XXX always 1 for now, up to 50 */ + dyesub_nputc(v, 0x00, 61); + /* Paper type. Fixed. */ + stp_putc(0x1b, v); + stp_putc(0x5a, v); + stp_putc(0x46, v); + stp_putc(0x00, v); /* Fixed */ + dyesub_nputc(v, 0x00, 60); + /* Print dimensions */ + stp_putc(0x1b, v); + stp_putc(0x5a, v); + stp_putc(0x53, v); + stp_put16_be(privdata.w_size, v); + stp_put16_be(privdata.h_size, v); + dyesub_nputc(v, 0x00, 57); + /* Sharpening -- XXX not exported. */ + stp_putc(0x1b, v); + stp_putc(0x46, v); + stp_putc(0x50, v); + stp_putc(0, v); /* 8-bit signed, range is +- 5. IOW, 0xfb->0x5 */ + dyesub_nputc(v, 0x00, 60); + /* Lamination */ + stp_putc(0x1b, v); + stp_putc(0x59, v); + if (*((const char*)((privdata.laminate->seq).data)) == 0x02) { /* None */ + stp_putc(0x02, v); + stp_putc(0x00, v); + } else { + stp_zfwrite((const char*)((privdata.media->seq).data), 1, + (privdata.media->seq).bytes, v); + } + dyesub_nputc(v, 0x00, 60); + /* Unknown */ + stp_putc(0x1b, v); + stp_putc(0x46, v); + stp_putc(0x47, v); + dyesub_nputc(v, 0x00, 61); + + + /* Data header */ + stp_putc(0x1b, v); + stp_putc(0x5a, v); + stp_putc(0x54, v); + dyesub_nputc(v, 0x00, 2); + stp_put16_be(0, v); /* Starting row for this block */ + stp_put16_be(privdata.w_size, v); + stp_put16_be(privdata.h_size, v); /* Number of rows in this block */ + dyesub_nputc(v, 0x00, 53); +} + +static void kodak_8500_printer_end(stp_vars_t *v) +{ + /* Pad data to 64-byte block */ + unsigned int length = privdata.w_size * privdata.h_size * 3; + length %= 64; + if (length) { + length = 64 - length; + dyesub_nputc(v, 0x00, length); + } + + /* Page Footer */ + stp_putc(0x1b, v); + stp_putc(0x50, v); + dyesub_nputc(v, 0x00, 62); +} + +/* Mitsubishi CP3020D/DU/DE */ +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); + +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); + +static void mitsu_cp3020d_printer_init(stp_vars_t *v) +{ + /* Start with NULL block */ + dyesub_nputc(v, 0x00, 64); + /* Unknown */ + stp_putc(0x1b, v); + stp_putc(0x51, v); + dyesub_nputc(v, 0x00, 62); + /* Paper type */ + stp_putc(0x1b, v); + stp_putc(0x5a, v); + stp_putc(0x46, v); + if (privdata.h_size == 3762) + stp_putc(0x04, v); + else + stp_putc(0x00, v); + dyesub_nputc(v, 0x00, 60); + /* Number of copies */ + stp_putc(0x1b, v); + stp_putc(0x4e, v); + stp_putc(1, v); /* XXX always 1 for now, up to 50 */ + dyesub_nputc(v, 0x00, 61); + /* Unknown */ + stp_putc(0x1b, v); + stp_putc(0x46, v); + stp_putc(0x53, v); + dyesub_nputc(v, 0x00, 61); + /* Lamination. Fixed on. */ + stp_putc(0x1b, v); + stp_putc(0x59, v); + dyesub_nputc(v, 0x00, 62); + /* High Contrast */ + stp_putc(0x1b, v); + stp_putc(0x46, v); + stp_putc(0x43, v); + stp_putc(0x00, v); /* XXX or 0x01 for "High Contrast" */ + dyesub_nputc(v, 0x00, 60); + /* Print dimensions */ + stp_putc(0x1b, v); + stp_putc(0x5a, v); + stp_putc(0x53, v); + stp_put16_be(privdata.w_size, v); + stp_put16_be(privdata.h_size, v); + dyesub_nputc(v, 0x00, 57); +} + +static void mitsu_cp3020d_printer_end(stp_vars_t *v) +{ + /* Page Footer */ + stp_putc(0x1b, v); + stp_putc(0x50, v); + dyesub_nputc(v, 0x00, 62); +} + +static void mitsu_cp3020d_plane_init(stp_vars_t *v) +{ + /* Plane data header */ + stp_putc(0x1b, v); + stp_putc(0x5a, v); + stp_putc(0x30 + 4 - privdata.plane, v); /* Y = x31, M = x32, C = x33 */ + dyesub_nputc(v, 0x00, 2); + stp_put16_be(0, v); /* Starting row for this block */ + stp_put16_be(privdata.w_size, v); + stp_put16_be(privdata.h_size, v); /* Number of rows in this block */ + dyesub_nputc(v, 0x00, 53); +} + +static void mitsu_cp3020d_plane_end(stp_vars_t *v) +{ + /* Pad data to 64-byte block */ + unsigned int length = privdata.w_size * privdata.h_size; + length %= 64; + if (length) { + length = 64 - length; + dyesub_nputc(v, 0x00, length); + } +} + +/* Mitsubishi CP3020DA/DAE */ +static void mitsu_cp3020da_printer_init(stp_vars_t *v) +{ + /* Init */ + stp_putc(0x1b, v); + stp_putc(0x57, v); + stp_putc(0x20, v); + stp_putc(0x2e, v); + stp_putc(0x00, v); + stp_putc(0x0a, v); + stp_putc(0x10, v); + dyesub_nputc(v, 0x00, 7); + stp_put16_be(privdata.w_size, v); + stp_put16_be(privdata.h_size, v); + dyesub_nputc(v, 0x00, 32); + /* Page count */ + stp_putc(0x1b, v); + stp_putc(0x57, v); + stp_putc(0x21, v); + stp_putc(0x2e, v); + stp_putc(0x00, v); + stp_putc(0x80, v); + stp_putc(0x00, v); + stp_putc(0x20, v); + stp_putc(0x00, v); + stp_putc(0x02, v); + dyesub_nputc(v, 0x00, 19); + stp_putc(0x01, v); /* Copies -- 01-50d */ + dyesub_nputc(v, 0x00, 20); + /* Contrast ? */ + stp_putc(0x1b, v); + stp_putc(0x57, v); + stp_putc(0x22, v); + stp_putc(0x2e, v); + stp_putc(0x00, v); + stp_putc(0xf0, v); + dyesub_nputc(v, 0x00, 4); + stp_putc(0x00, v); /* x00 = Photo, x01 = High Contrast, x02 = Natural */ + dyesub_nputc(v, 0x00, 39); + /* Unknown */ + stp_putc(0x1b, v); + stp_putc(0x57, v); + stp_putc(0x26, v); + stp_putc(0x2e, v); + stp_putc(0x00, v); + stp_putc(0x20, v); + dyesub_nputc(v, 0x00, 6); + stp_putc(0x01, v); + dyesub_nputc(v, 0x00, 37); +} + +static void mitsu_cp3020da_printer_end(stp_vars_t *v) +{ + /* Page Footer */ + stp_putc(0x1b, v); + stp_putc(0x50, v); + stp_putc(0x51, v); + stp_putc(0x50, v); +} + +static void mitsu_cp3020da_plane_init(stp_vars_t *v) +{ + /* Plane data header */ + stp_putc(0x1b, v); + stp_putc(0x5a, v); + stp_putc(0x54, v); + stp_putc((privdata.bpp > 8) ? 0x10: 0x00, v); + dyesub_nputc(v, 0x00, 2); + stp_put16_be(0, v); /* Starting row for this block */ + stp_put16_be(privdata.w_size, v); + stp_put16_be(privdata.h_size, v); /* Number of rows in this block */ +} + +/* Mitsubishi 9550D/DW */ +static const dyesub_resolution_t res_346dpi[] = +{ + { "346x346", 346, 346}, +}; + +LIST(dyesub_resolution_list_t, res_346dpi_list, dyesub_resolution_t, res_346dpi); + +static const dyesub_pagesize_t mitsu_cp9550_page[] = +{ + { "B7", "3.5x5", PT(1240,346)+1, PT(1812,346)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, + { "w288h432", "4x6", PT(1416,346)+1, PT(2152,346)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, +#ifdef DNPX2 + { "2x6_x2", "2x6*2", PT(1416,346)+1, PT(2152,346)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, +#endif + { "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, + DYESUB_PORTRAIT}, + { "w432h612", "6x8.5", PT(2152,346)+1, PT(2956,346)+1, 0, 0, 0, 0, + DYESUB_PORTRAIT}, + { "w432h648", "6x9", PT(2152,346)+1, PT(3146,346)+1, 0, 0, 0, 0, + DYESUB_PORTRAIT}, + { "Custom", NULL, PT(1416,346)+1, PT(2152,346)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, +}; + +LIST(dyesub_pagesize_list_t, mitsu_cp9550_page_list, dyesub_pagesize_t, mitsu_cp9550_page); + +static const dyesub_printsize_t mitsu_cp9550_printsize[] = +{ + { "346x346", "B7", 1240, 1812}, + { "346x346", "w288h432", 1416, 2152}, +#ifdef DNPX2 + { "346x346", "2x6_x2", 1416, 2152}, +#endif + { "346x346", "w360h504", 1812, 2402}, + { "346x346", "w432h576", 2152, 2792}, + { "346x346", "w432h612", 2152, 2956}, + { "346x346", "w432h648", 2152, 3146}, + { "346x346", "Custom", 1416, 2152}, +}; + +LIST(dyesub_printsize_list_t, mitsu_cp9550_printsize_list, dyesub_printsize_t, mitsu_cp9550_printsize); + +static void mitsu_cp9550_printer_init(stp_vars_t *v) +{ + /* Init */ + stp_putc(0x1b, v); + stp_putc(0x57, v); + stp_putc(0x20, v); + stp_putc(0x2e, v); + stp_putc(0x00, v); + stp_putc(0x0a, v); + stp_putc(0x10, v); + dyesub_nputc(v, 0x00, 7); + stp_put16_be(privdata.w_size, v); + stp_put16_be(privdata.h_size, v); + dyesub_nputc(v, 0x00, 32); + /* Parameters 1 */ + stp_putc(0x1b, v); + stp_putc(0x57, v); + stp_putc(0x21, v); + stp_putc(0x2e, v); + stp_putc(0x00, v); + stp_putc(0x80, v); + stp_putc(0x00, v); + stp_putc(0x22, v); + stp_putc(0x08, v); + stp_putc(0x03, 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) + stp_putc(0x83, v); + else + stp_putc(0x00, v); + dyesub_nputc(v, 0x00, 5); + stp_putc(0x00, v); /* XXX 00 == normal, 80 = fine */ + dyesub_nputc(v, 0x00, 10); + stp_putc(0x01, v); + /* Parameters 2 */ + stp_putc(0x1b, v); + stp_putc(0x57, v); + stp_putc(0x22, v); + stp_putc(0x2e, v); + stp_putc(0x00, v); + stp_putc(0x40, v); + dyesub_nputc(v, 0x00, 5); + stp_putc(0x00, v); /* XXX 00 == normal, 01 == finedeep (some models only) */ + dyesub_nputc(v, 0x00, 38); + /* Unknown */ + stp_putc(0x1b, v); + stp_putc(0x57, v); + stp_putc(0x26, v); + stp_putc(0x2e, v); + stp_putc(0x00, v); + stp_putc(0x70, v); + dyesub_nputc(v, 0x00, 6); + stp_putc(0x01, v); + stp_putc(0x01, v); + dyesub_nputc(v, 0x00, 36); +} + +static void mitsu_cp9550_printer_end(stp_vars_t *v) +{ + /* Page Footer */ + stp_putc(0x1b, v); + stp_putc(0x50, v); + stp_putc(0x46, v); + stp_putc(0x00, v); +} + +/* Mitsubishi 9810D/DW */ +static const dyesub_pagesize_t mitsu_cp9810_page[] = +{ + { "B7", "3.5x5", PT(1076,300)+1, PT(1572,300)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, + { "w288h432", "4x6", PT(1228,300)+1, PT(1868,300)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, + { "w360h504", "5x7", PT(1572,300)+1, PT(2128,300)+1, 0, 0, 0, 0, + DYESUB_PORTRAIT}, + { "w432h576", "6x8", PT(1868,300)+1, PT(2442,300)+1, 0, 0, 0, 0, + DYESUB_PORTRAIT}, + { "w432h612", "6x8.5", PT(1868,300)+1, PT(2564,300)+1, 0, 0, 0, 0, + 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); + +static const dyesub_printsize_t mitsu_cp9810_printsize[] = +{ + { "300x300", "B7", 1076, 1572}, + { "300x300", "w288h432", 1228, 1868}, + { "300x300", "w360h504", 1572, 2128}, + { "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); + +static const laminate_t mitsu_cp9810_laminate[] = +{ + {"Matte", N_("Matte"), {1, "\x01"}}, + {"None", N_("None"), {1, "\x00"}}, +}; + +LIST(laminate_list_t, mitsu_cp9810_laminate_list, laminate_t, mitsu_cp9810_laminate); + +static void mitsu_cp9810_printer_init(stp_vars_t *v) +{ + /* Init */ + stp_putc(0x1b, v); + stp_putc(0x57, v); + stp_putc(0x20, v); + stp_putc(0x2e, v); + stp_putc(0x00, v); + stp_putc(0x0a, v); + stp_putc(0x90, v); + dyesub_nputc(v, 0x00, 7); + stp_put16_be(privdata.w_size, v); + stp_put16_be(privdata.h_size, v); + stp_zfwrite((privdata.laminate->seq).data, 1, + (privdata.laminate->seq).bytes, v); /* Lamination */ + dyesub_nputc(v, 0x00, 31); + /* Parameters 1 */ + stp_putc(0x1b, v); + stp_putc(0x57, v); + stp_putc(0x21, v); + stp_putc(0x2e, v); + stp_putc(0x00, v); + stp_putc(0x80, v); + stp_putc(0x00, v); + stp_putc(0x22, v); + stp_putc(0x08, v); + stp_putc(0x01, v); + dyesub_nputc(v, 0x00, 19); + stp_putc(0x01, v); /* Copies */ + dyesub_nputc(v, 0x00, 8); + stp_putc(0x80, v); /* XXX 10 == Fine, 80 = SuperFine (required for lamination) */ + dyesub_nputc(v, 0x00, 10); + stp_putc(0x01, v); + /* Unknown */ + stp_putc(0x1b, v); + stp_putc(0x57, v); + stp_putc(0x26, v); + stp_putc(0x2e, v); + stp_putc(0x00, v); + stp_putc(0x70, v); + dyesub_nputc(v, 0x00, 6); + stp_putc(0x01, v); + stp_putc(0x01, v); + dyesub_nputc(v, 0x00, 36); +} + +static void mitsu_cp9810_printer_end(stp_vars_t *v) +{ + /* Job Footer */ + stp_putc(0x1b, v); + stp_putc(0x50, v); + stp_putc(0x4c, v); + stp_putc(0x00, v); + + if (*((const char*)((privdata.laminate->seq).data)) == 0x01) { + + /* Generate a full plane of lamination data */ + + /* The Windows drivers generate a lamination pattern consisting of + four values: 0x0202, 0x01f1, 0x0808, 0x0737 in roughly a 16:10:4:1 + ratio. + + There seem to be some patterns but more analysis is needed. + */ + + int r, c; + unsigned long seed = 1; + + mitsu_cp3020da_plane_init(v); /* First generate plane header */ + + /* Now generate lamination pattern */ + for (c = 0 ; c < privdata.w_size ; c++) { + for (r = 0 ; r < privdata.h_size ; r++) { + int i = xrand(&seed) & 0x1f; + if (i < 16) + stp_put16_be(0x0202, v); + else if (i < 26) + stp_put16_be(0x01f1, v); + else if (i < 30) + stp_put16_be(0x0808, v); + else + stp_put16_be(0x0737, v); + } + } + + /* Lamination Footer */ + stp_putc(0x1b, v); + stp_putc(0x50, v); + stp_putc(0x56, v); + stp_putc(0x00, v); + } +} + +/* Mitsubishi CP-D70D/CP-D707 */ +static const dyesub_pagesize_t mitsu_cpd70x_page[] = +{ + { "B7", "3.5x5", PT(1076,300)+1, PT(1568,300)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, + { "w288h432", "4x6", PT(1228,300)+1, PT(1864,300)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, + { "w360h504", "5x7", PT(1572,300)+1, PT(2128,300)+1, 0, 0, 0, 0, + DYESUB_PORTRAIT}, + { "w432h576", "6x8", PT(1864,300)+1, PT(2422,300)+1, 0, 0, 0, 0, + DYESUB_PORTRAIT}, + { "w432h648", "6x9", PT(1864,300)+1, PT(2730,300)+1, 0, 0, 0, 0, + DYESUB_PORTRAIT}, + { "Custom", NULL, PT(1228,300)+1, PT(1864,300)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, +}; + +LIST(dyesub_pagesize_list_t, mitsu_cpd70x_page_list, dyesub_pagesize_t, mitsu_cpd70x_page); + +static const dyesub_printsize_t mitsu_cpd70x_printsize[] = +{ + { "300x300", "B7", 1076, 1568}, + { "300x300", "w288h432", 1228, 1864}, + { "300x300", "w360h504", 1572, 2128}, + { "300x300", "w432h576", 1864, 2422}, + { "300x300", "w432h648", 1864, 2730}, + { "300x300", "Custom", 1220, 1868}, +}; + +LIST(dyesub_printsize_list_t, mitsu_cpd70x_printsize_list, dyesub_printsize_t, mitsu_cpd70x_printsize); + +static const laminate_t mitsu_cpd70x_laminate[] = +{ + {"Matte", N_("Matte"), {1, "\x02"}}, + {"None", N_("None"), {1, "\x00"}}, +}; + +LIST(laminate_list_t, mitsu_cpd70x_laminate_list, laminate_t, mitsu_cpd70x_laminate); + +static void mitsu_cpd70x_printer_init(stp_vars_t *v) +{ + /* Printer init */ + stp_putc(0x1b, v); + stp_putc(0x45, v); + stp_putc(0x57, v); + stp_putc(0x55, v); + dyesub_nputc(v, 0x00, 508); + + /* Each copy gets this.. */ + stp_putc(0x1b, v); + stp_putc(0x5a, v); + stp_putc(0x54, v); + stp_putc(0x01, v); + dyesub_nputc(v, 0x00, 12); + + stp_put16_be(privdata.w_size, v); + stp_put16_be(privdata.h_size, v); + if (*((const char*)((privdata.laminate->seq).data)) == 0x01) { + /* Laminate a slightly larger boundary */ + stp_put16_be(privdata.w_size, v); + stp_put16_be(privdata.h_size + 12, v); + stp_putc(0x03, v); /* Trigger Superfine */ + } else { + dyesub_nputc(v, 0x00, 4); /* Ie no Lamination */ + stp_putc(0x00, v); + } + dyesub_nputc(v, 0x00, 7); + + stp_putc(0x00, v); /* Auto deck selection, or 0x01 for Lower, 0x02 for Upper */ + dyesub_nputc(v, 0x00, 8); + + stp_zfwrite((privdata.laminate->seq).data, 1, + (privdata.laminate->seq).bytes, v); /* Lamination mode */ + dyesub_nputc(v, 0x00, 6); + + dyesub_nputc(v, 0x00, 464); /* Pad to 512-byte block */ +} + +static void mitsu_cpd70x_printer_end(stp_vars_t *v) +{ + /* If lamination is enabled, generate a lamination plane */ + if (*((const char*)((privdata.laminate->seq).data)) == 0x01) { + + /* The Windows drivers generate a lamination pattern consisting of + four values: 0xab58, 0x286a, 0x6c22 */ + + int r, c; + unsigned long seed = 1; + + /* Now generate lamination pattern */ + for (c = 0 ; c < privdata.w_size ; c++) { + for (r = 0 ; r < privdata.h_size + 12 ; r++) { + int i = xrand(&seed) & 0x1f; + if (i < 24) + stp_put16_be(0xab58, v); + else if (i < 29) + stp_put16_be(0x286a, v); + else + stp_put16_be(0x6c22, v); + } + } + /* Pad up to a 512-byte block */ + dyesub_nputc(v, 0x00, 512 - ((privdata.w_size * (privdata.h_size + 12) * 2) % 512)); + } +} + +static void mitsu_cpd70x_plane_end(stp_vars_t *v) +{ + /* Pad up to a 512-byte block */ + dyesub_nputc(v, 0x00, 512 - ((privdata.h_size * privdata.w_size * 2) % 512)); +} + +/* Mitsubishi CP-K60D */ +static const dyesub_pagesize_t mitsu_cpk60_page[] = +{ + { "B7", "3.5x5", PT(1076,300)+1, PT(1568,300)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, + { "w288h432", "4x6", PT(1218,300)+1, PT(1864,300)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, + { "w360h504", "5x7", PT(1568,300)+1, PT(2128,300)+1, 0, 0, 0, 0, + DYESUB_PORTRAIT}, + { "w432h432", "6x6", PT(1864,300)+1, PT(1820,300)+1, 0, 0, 0, 0, + DYESUB_PORTRAIT}, + { "w432h576", "6x8", PT(1864,300)+1, PT(2422,300)+1, 0, 0, 0, 0, + DYESUB_PORTRAIT}, + { "Custom", NULL, PT(1218,300)+1, PT(1864,300)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, +}; + +LIST(dyesub_pagesize_list_t, mitsu_cpk60_page_list, dyesub_pagesize_t, mitsu_cpk60_page); + +static const dyesub_printsize_t mitsu_cpk60_printsize[] = +{ + { "300x300", "B7", 1076, 1568}, + { "300x300", "w288h432", 1218, 1864}, + { "300x300", "w360h504", 1568, 2128}, + { "300x300", "w432h432", 1864, 1820}, + { "300x300", "w432h576", 1864, 2422}, + { "300x300", "Custom", 1218, 1864}, +}; + +LIST(dyesub_printsize_list_t, mitsu_cpk60_printsize_list, dyesub_printsize_t, mitsu_cpk60_printsize); + +static void mitsu_cpk60_printer_init(stp_vars_t *v) +{ + /* Printer init */ + stp_putc(0x1b, v); + stp_putc(0x45, v); + stp_putc(0x57, v); + stp_putc(0x55, v); + dyesub_nputc(v, 0x00, 508); + + /* Each copy gets this.. */ + stp_putc(0x1b, v); + stp_putc(0x5a, v); + stp_putc(0x54, v); + stp_putc(0x00, v); + dyesub_nputc(v, 0x00, 12); + + stp_put16_be(privdata.w_size, v); + stp_put16_be(privdata.h_size, v); + if (*((const char*)((privdata.laminate->seq).data)) == 0x02) { + /* Laminate a slightly larger boundary */ + stp_put16_be(privdata.w_size, v); + stp_put16_be(privdata.h_size + 12, v); /* XXX this isn't always true.. */ + } else { + dyesub_nputc(v, 0x00, 4); /* Ie no Lamination */ + } + stp_putc(0x00, v); /* Disable UltraFine for now (0x04 enables it) */ + dyesub_nputc(v, 0x00, 7); + + stp_putc(0x01, v); /* K60 has a single "lower" deck */ + dyesub_nputc(v, 0x00, 8); + + stp_zfwrite((privdata.laminate->seq).data, 1, + (privdata.laminate->seq).bytes, v); /* Lamination mode */ + dyesub_nputc(v, 0x00, 6); + + stp_putc(0x01, v); /* Unknown */ + dyesub_nputc(v, 0x00, 15); + + dyesub_nputc(v, 0x00, 448); /* Pad to 512-byte block */ +} + + /* Shinko CHC-S9045 (experimental) */ static const dyesub_pagesize_t shinko_chcs9045_page[] = @@ -1491,29 +2685,254 @@ static void shinko_chcs9045_printer_init(stp_vars_t *v) dyesub_nputc(v, '\0', 4338); } +/* Shinko CHC-S2145 */ +static const dyesub_pagesize_t shinko_chcs2145_page[] = +{ + { "w144h432", "2x6", PT(634,300)+1, PT(1844,300)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, + { "w288h432", "4x6", PT(1240,300)+1, PT(1844,300)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, +#ifdef DNPX2 + { "2x6_x2", "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 DNPX2 + { "4x6_x2", "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); + +static const dyesub_printsize_t shinko_chcs2145_printsize[] = +{ + { "300x300", "w144h432", 634, 1844}, + { "300x300", "w288h432", 1240, 1844}, +#ifdef DNPX2 + { "300x300", "2x6_x2", 1240, 1844}, +#endif + { "300x300", "B7", 1088, 1548}, + { "300x300", "w360h504", 1548, 2140}, + { "300x300", "w432h576", 1844, 2434}, +#ifdef DNPX2 + { "300x300", "4x6_x2", 1844, 2492}, +#endif + { "300x300", "w432h648", 1844, 2740}, + { "300x300", "Custom", 1240, 1844}, +}; + +LIST(dyesub_printsize_list_t, shinko_chcs2145_printsize_list, dyesub_printsize_t, shinko_chcs2145_printsize); + +static const laminate_t shinko_chcs2145_laminate[] = +{ + {"PrinterDefault", N_("Printer Default"), {4, "\x01\0\0\0"}}, + {"Glossy", N_("Glossy"), {4, "\x02\0\0\0"}}, + {"GlossyFine", N_("Glossy Fine"), {4, "\x03\0\0\0"}}, + {"Matte", N_("Matte"), {4, "\x04\0\0\0"}}, + {"MatteFine", N_("Matte Fine"), {4, "\x05\0\0\0"}}, + {"ExtraGlossy", N_("Extra Glossy"), {4, "\x06\0\0\0"}}, + {"ExtraGlossyFine", N_("Extra Glossy Fine"), {4, "\x07\0\0\0"}}, +}; + +LIST(laminate_list_t, shinko_chcs2145_laminate_list, laminate_t, shinko_chcs2145_laminate); + +static void shinko_chcs2145_printer_init(stp_vars_t *v) +{ + int media = 0; + + if (strcmp(privdata.pagesize,"w288h432") == 0) + media = '\0'; + else if (strcmp(privdata.pagesize,"2x6_x2") == 0) + media = '\0'; + else if (strcmp(privdata.pagesize,"B7") == 0) + media = '\1'; + else if (strcmp(privdata.pagesize,"w360h504") == 0) + media = '\3'; + else if (strcmp(privdata.pagesize,"w432h576") == 0) + media = '\6'; + else if (strcmp(privdata.pagesize,"w432h648") == 0) + media = '\5'; + else if (strcmp(privdata.pagesize,"4x6_x2") == 0) + media = '\5'; + else if (strcmp(privdata.pagesize,"w144h432") == 0) + media = '\7'; + + stp_put32_le(0x10, v); + stp_put32_le(2145, v); /* Printer Model */ + stp_put32_le(0x00, v); + stp_put32_le(0x01, v); + + stp_put32_le(0x64, v); + stp_put32_le(0x00, v); + stp_put32_le(media, v); /* Media Type */ + stp_put32_le(0x00, v); + + if (strcmp(privdata.pagesize,"4x6_x2") == 0) { + stp_put32_le(0x02, v); + } else if (strcmp(privdata.pagesize,"2x6_x2") == 0) { + stp_put32_le(0x04, v); + } else { + stp_put32_le(0x00, v); /* Print Method */ + } + + stp_zfwrite((privdata.laminate->seq).data, 1, + (privdata.laminate->seq).bytes, v); /* Print Mode */ + stp_put32_le(0x00, v); + stp_put32_le(0x00, v); + + stp_put32_le(0x00, v); + stp_put32_le(privdata.w_size, v); /* Columns */ + stp_put32_le(privdata.h_size, v); /* Rows */ + stp_put32_le(0x01, v); /* Copies */ + + stp_put32_le(0x00, v); + stp_put32_le(0x00, v); + stp_put32_le(0x00, v); + stp_put32_le(0xffffffce, v); + + stp_put32_le(0x00, v); + stp_put32_le(0xffffffce, v); + stp_put32_le(privdata.w_dpi, v); /* Dots Per Inch */ + stp_put32_le(0xffffffce, v); + + stp_put32_le(0x00, v); + stp_put32_le(0xffffffce, v); + stp_put32_le(0x00, v); + stp_put32_le(0x00, v); + + stp_put32_le(0x00, v); +} + +static void shinko_chcs2145_printer_end(stp_vars_t *v) +{ + stp_putc(0x04, v); + stp_putc(0x03, v); + stp_putc(0x02, v); + stp_putc(0x01, v); +} /* Dai Nippon Printing DS40 */ +static const dyesub_resolution_t res_dnpds40_dpi[] = +{ + { "300x300", 300, 300}, + { "300x600", 300, 600}, +}; + +LIST(dyesub_resolution_list_t, res_dnpds40_dpi_list, dyesub_resolution_t, res_dnpds40_dpi); + +/* Imaging area is wider than print size, we always must supply the + printer with the full imaging width. */ static const dyesub_pagesize_t dnpds40_dock_page[] = { - { "w288h432", "4x6", PT(1920,300)+1, PT(1240,300)+1, 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576", "6x9", PT(1920,300)+1, PT(2740,300)+1, 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "A5", "6x8", PT(1920,300)+1, PT(2436,300)+1, 0, 0, 0, 0, - DYESUB_PORTRAIT}, + { "B7", "3.5x5", PT(1920,300)+1, PT(1088,300)+1, PT(112,300), PT(112,300), 0, 0, DYESUB_PORTRAIT}, + { "w288h432", "4x6", PT(1920,300)+1, PT(1240,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, +#ifdef DNPX2 + { "2x6_x2", "2x6*2", PT(1920,300)+1, PT(1240,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, +#endif + { "w360h504", "5x7", PT(1920,300)+1, PT(2138,300)+1, PT(112,300), PT(112,300), 0, 0, DYESUB_PORTRAIT}, + { "A5", "6x8", PT(1920,300)+1, PT(2436,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, +#ifdef DNPX2 + { "4x6_x2", "4x6*2", PT(1920,300)+1, PT(2498,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, +#endif + { "w432h576", "6x9", PT(1920,300)+1, PT(2740,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, }; LIST(dyesub_pagesize_list_t, dnpds40_dock_page_list, dyesub_pagesize_t, dnpds40_dock_page); static const dyesub_printsize_t dnpds40_dock_printsize[] = { + { "300x300", "B7", 1920, 1088}, + { "300x600", "B7", 1920, 2176}, { "300x300", "w288h432", 1920, 1240}, - { "300x300", "w432h576", 1920, 2740}, + { "300x600", "w288h432", 1920, 2480}, +#ifdef DNPX2 + { "300x300", "2x6_x2", 1920, 1240}, + { "300x600", "2x6_x2", 1920, 2480}, +#endif + { "300x300", "w360h504", 1920, 2138}, + { "300x600", "w360h504", 1920, 4276}, { "300x300", "A5", 1920, 2436}, + { "300x600", "A5", 1920, 4872}, +#ifdef DNPX2 + { "300x300", "4x6_x2", 1920, 2498}, + { "300x600", "4x6_x2", 1920, 4996}, +#endif + { "300x300", "w432h576", 1920, 2740}, + { "300x600", "w432h576", 1920, 5480}, }; LIST(dyesub_printsize_list_t, dnpds40_dock_printsize_list, dyesub_printsize_t, dnpds40_dock_printsize); +static const laminate_t dnpds40_laminate[] = +{ + {"Glossy", N_("Glossy"), {2, "00"}}, + {"Matte", N_("Matte"), {2, "01"}}, +}; + +LIST(laminate_list_t, dnpds40_laminate_list, laminate_t, dnpds40_laminate); + + +static void dnpds40ds80_printer_start(stp_vars_t *v) +{ + /* XXX Unknown purpose. */ + stp_zprintf(v, "\033PCNTRL RETENTION 0000000800000000"); + + /* Configure Lamination */ + stp_zprintf(v, "\033PCNTRL OVERCOAT 00000008000000"); + stp_zfwrite((privdata.laminate->seq).data, 1, + (privdata.laminate->seq).bytes, v); /* Lamination mode */ + + /* Don't resume after error.. XXX should be in backend */ + stp_zprintf(v, "\033PCNTRL BUFFCNTRL 0000000800000000"); + + /* Set quantity.. Backend overrides as needed. */ + stp_zprintf(v, "\033PCNTRL QTY 000000080000001\r"); + +} + +static void dnpds40_printer_start(stp_vars_t *v) +{ + /* Common code */ + dnpds40ds80_printer_start(v); + + /* Set cutter option to "normal" */ + stp_zprintf(v, "\033PCNTRL CUTTER 0000000800000"); + if (!strcmp(privdata.pagesize, "2x6_x2")) { + stp_zprintf(v, "120"); + } else { + stp_zprintf(v, "000"); + } + + /* 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, "w360h504")) { + stp_zprintf(v, "03"); + } 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, "4x6_x2")) { + stp_zprintf(v, "12"); + } else { + stp_zprintf(v, "00"); + } +} + static void dnpds40_printer_end(stp_vars_t *v) { stp_zprintf(v, "\033PCNTRL START"); dyesub_nputc(v, ' ', 19); @@ -1525,57 +2944,227 @@ static void dnpds40_plane_init(stp_vars_t *v) (privdata.plane == 2 ? 'M' : 'C' )); - long RFSize = (privdata.w_size*privdata.h_size) + 1024 + 54; - long AdSize = (32 - (RFSize % 32)); - long FSize = RFSize + AdSize; + long PadSize = 10; + long FSize = (privdata.w_size*privdata.h_size) + 1024 + 54 + PadSize; - stp_zprintf(v, "\033PCNTRL RETENTION 0000000800000000"); - stp_zprintf(v, "\033PIMAGE %cPLANE", p); dyesub_nputc(v, ' ', 10); + /* Printer command plus length of data to follow */ + stp_zprintf(v, "\033PIMAGE %cPLANE %08ld", p, FSize); - stp_zprintf(v, "0%ld", FSize); + /* Each plane is essentially a tweaked BMP file */ + + /* BMP header */ stp_zprintf(v, "BM"); stp_put32_le(FSize, v); dyesub_nputc(v, '\0', 4); - stp_put32_le(1088, v); - stp_put32_le(40, v); + stp_put32_le(1088, v); /* Offset to pixel data: 1024 + (14+40-10) + 10 */ + + /* DIB header */ + stp_put32_le(40, v); /* DIB header size */ stp_put32_le(privdata.w_size, v); stp_put32_le(privdata.h_size, v); - stp_put16_le(1, v); - stp_put16_le(8, v); - dyesub_nputc(v, '\0', 24); - dyesub_nputc(v, '\0', 1024); /*RGB Array*/ - dyesub_nputc(v, '\0', AdSize); /*Locate to 32bit border */ + stp_put16_le(1, v); /* single channel */ + stp_put16_le(8, v); /* 8bpp */ + dyesub_nputc(v, '\0', 8); /* compression + image size are ignored */ + stp_put32_le(11808, v); /* horizontal pixels per meter, fixed at 300dpi */ + if (privdata.h_dpi == 600) + stp_put32_le(23615, v); /* vertical pixels per meter @ 600dpi */ + else + stp_put32_le(11808, v); /* vertical pixels per meter @ 300dpi */ + stp_put32_le(256, v); /* entries in color table */ + stp_put32_le(0, v); /* no important colors */ + dyesub_nputc(v, '\0', 1024); /* RGB Array, unused by printer */ + dyesub_nputc(v, '\0', PadSize); /* Pading to align plane data */ } - - /* Dai Nippon Printing DS80 */ +/* Imaging area is wider than print size, we always must supply the + printer with the full imaging width. */ static const dyesub_pagesize_t dnpds80_dock_page[] = { - { "c8x10", "8x10", PT(2560,300)+1, PT(3036,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "C6", "8x4", PT(2560,300)+1, PT(1236,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},/* 8x4 */ - { "C5", "8x5", PT(2560,300)+1, PT(1536,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "C4", "8x6", PT(2560,300)+1, PT(1836,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "C3", "8x8", PT(2560,300)+1, PT(2436,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "C2", "8x12", PT(2560,300)+1, PT(3636,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "C1", "A4 Length", PT(2560,300)+1, PT(3544,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, + { "w288h576", "8x4", PT(2560,300)+1, PT(1236,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "w360h576", "8x5", PT(2560,300)+1, PT(1536,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "w432h576", "8x6", PT(2560,300)+1, PT(1836,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "w576h576", "8x8", PT(2560,300)+1, PT(2436,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, +#ifdef DNPX2 + { "8x4_x2", "8x4*2", PT(2560,300)+1, PT(2502,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "8x5_8x4", "8x5+8x4", PT(2560,300)+1, PT(2802,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, +#endif + { "c8x10", "8x10", PT(2560,300)+1, PT(3036,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, +#ifdef DNPX2 + { "8x5_x2", "8x5*2", PT(2560,300)+1, PT(3036,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "8x6_8x4", "8x6+8x4", PT(2560,300)+1, PT(3036,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "8x6_8x5", "8x6+8x5", PT(2560,300)+1, PT(3402,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, +#endif + { "A4", "A4 Length", PT(2560,300)+1, PT(3544,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "w576h864", "8x12", PT(2560,300)+1, PT(3636,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, +#ifdef DNPX2 + { "8x6_x2", "8x6*2", PT(2560,300)+1, PT(3702,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "8x8_8x4", "8x8+8x4", PT(2560,300)+1, PT(3702,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "8x4_x3", "8x4*3", PT(2560,300)+1, PT(3768,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, +#endif }; LIST(dyesub_pagesize_list_t, dnpds80_dock_page_list, dyesub_pagesize_t, dnpds80_dock_page); static const dyesub_printsize_t dnpds80_dock_printsize[] = { + { "300x300", "w288h576", 2560, 1236}, + { "300x600", "w288h576", 2560, 2472}, + { "300x300", "w360h576", 2560, 1536}, + { "300x600", "w360h576", 2560, 3072}, + { "300x300", "w432h576", 2560, 1836}, + { "300x600", "w432h576", 2560, 3672}, + { "300x300", "w576h576", 2560, 2436}, + { "300x600", "w576h576", 2560, 4872}, +#ifdef DNPX2 + { "300x300", "8x4_x2", 2560, 2502}, + { "300x600", "8x4_x2", 2560, 5004}, + { "300x300", "8x5_8x4", 2560, 2802}, + { "300x600", "8x5_8x4", 2560, 5604}, +#endif { "300x300", "c8x10", 2560, 3036}, - { "300x300", "C6", 2560, 1236}, - { "300x300", "C5", 2560, 1536}, - { "300x300", "C4", 2560, 1836}, - { "300x300", "C3", 2560, 2436}, - { "300x300", "C2", 2560, 3636}, - { "300x300", "C1", 2560, 3544}, + { "300x600", "c8x10", 2560, 6072}, +#ifdef DNPX2 + { "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", "A4", 2560, 3544}, + { "300x600", "A4", 2560, 7088}, + { "300x300", "w576h864", 2560, 3636}, + { "300x600", "w576h864", 2560, 7272}, +#ifdef DNPX2 + { "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 }; LIST(dyesub_printsize_list_t, dnpds80_dock_printsize_list, dyesub_printsize_t, dnpds80_dock_printsize); +static void dnpds80_printer_start(stp_vars_t *v) +{ + /* Common code */ + dnpds40ds80_printer_start(v); + + /* Set cutter option to "normal" */ + stp_zprintf(v, "\033PCNTRL CUTTER 0000000800000000"); + + /* Configure multi-cut/page size */ + stp_zprintf(v, "\033PIMAGE MULTICUT 00000008000000"); + + if (!strcmp(privdata.pagesize, "c8x10")) { + stp_zprintf(v, "06"); + } else if (!strcmp(privdata.pagesize, "w576h864")) { + stp_zprintf(v, "07"); + } else if (!strcmp(privdata.pagesize, "w288h576")) { + stp_zprintf(v, "08"); + } else if (!strcmp(privdata.pagesize, "w360h576")) { + stp_zprintf(v, "09"); + } else if (!strcmp(privdata.pagesize, "w432h576")) { + stp_zprintf(v, "10"); + } else if (!strcmp(privdata.pagesize, "w576h576")) { + stp_zprintf(v, "11"); + } else if (!strcmp(privdata.pagesize, "8x4_x2")) { + stp_zprintf(v, "13"); + } else if (!strcmp(privdata.pagesize, "8x5_x2")) { + stp_zprintf(v, "14"); + } else if (!strcmp(privdata.pagesize, "8x6_x2")) { + stp_zprintf(v, "15"); + } else if (!strcmp(privdata.pagesize, "8x5_8x4")) { + stp_zprintf(v, "16"); + } else if (!strcmp(privdata.pagesize, "8x6_8x4")) { + stp_zprintf(v, "17"); + } else if (!strcmp(privdata.pagesize, "8x6_8x5")) { + stp_zprintf(v, "18"); + } else if (!strcmp(privdata.pagesize, "8x8_8x4")) { + stp_zprintf(v, "19"); + } else if (!strcmp(privdata.pagesize, "8x4_x3")) { + stp_zprintf(v, "20"); + } else if (!strcmp(privdata.pagesize, "A4")) { + stp_zprintf(v, "21"); + } else { + stp_zprintf(v, "00"); + } +} + +/* Imaging area is wider than print size, we always must supply the + printer with the full imaging width. */ +static const dyesub_pagesize_t dnpsrx1_dock_page[] = +{ + { "B7", "3.5x5", PT(1920,300)+1, PT(1088,300)+1, PT(112,300), PT(112,300), 0, 0, DYESUB_PORTRAIT}, + { "w288h432", "4x6", PT(1920,300)+1, PT(1240,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, +#ifdef DNPX2 + { "2x6_x2", "2x6*2", PT(1920,300)+1, PT(1240,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, +#endif + { "w360h504", "5x7", PT(1920,300)+1, PT(2138,300)+1, PT(112,300), PT(112,300), 0, 0, DYESUB_PORTRAIT}, + { "A5", "6x8", PT(1920,300)+1, PT(2436,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, +#ifdef DNPX2 + { "4x6_x2", "4x6*2", PT(1920,300)+1, PT(2498,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, +#endif +}; + +LIST(dyesub_pagesize_list_t, dnpsrx1_dock_page_list, dyesub_pagesize_t, dnpsrx1_dock_page); + +static const dyesub_printsize_t dnpsrx1_dock_printsize[] = +{ + { "300x300", "B7", 1920, 1088}, + { "300x600", "B7", 1920, 2176}, + { "300x300", "w288h432", 1920, 1240}, + { "300x600", "w288h432", 1920, 2480}, +#ifdef DNPX2 + { "300x300", "2x6_x2", 1920, 1240}, + { "300x600", "2x6_x2", 1920, 2480}, +#endif + { "300x300", "w360h504", 1920, 2138}, + { "300x600", "w360h504", 1920, 4276}, + { "300x300", "A5", 1920, 2436}, + { "300x600", "A5", 1920, 4872}, +#ifdef DNPX2 + { "300x300", "4x6_x2", 1920, 2498}, + { "300x600", "4x6_x2", 1920, 4996}, +#endif +}; + +LIST(dyesub_printsize_list_t, dnpsrx1_dock_printsize_list, dyesub_printsize_t, dnpsrx1_dock_printsize); + +static void dnpdsrx1_printer_start(stp_vars_t *v) +{ + /* Common code */ + dnpds40ds80_printer_start(v); + + /* Set cutter option to "normal" */ + stp_zprintf(v, "\033PCNTRL CUTTER 0000000800000"); + if (!strcmp(privdata.pagesize, "2x6_x2")) { + stp_zprintf(v, "120"); + } else { + stp_zprintf(v, "000"); + } + + /* 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, "w360h504")) { + stp_zprintf(v, "03"); + } else if (!strcmp(privdata.pagesize, "A5")) { + stp_zprintf(v, "04"); + } else if (!strcmp(privdata.pagesize, "4x6_x2")) { + stp_zprintf(v, "12"); + } else { + stp_zprintf(v, "00"); + } +} + /* Model capabilities */ static const dyesub_cap_t dyesub_model_capabilities[] = @@ -1593,7 +3182,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, + &p10_laminate_list, NULL, }, { /* Olympus P-200 */ 4, @@ -1608,7 +3197,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, }, { /* Olympus P-300 */ 0, @@ -1623,7 +3212,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, }, { /* Olympus P-400 */ 1, @@ -1638,7 +3227,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, }, { /* Olympus P-440 */ 3, @@ -1652,7 +3241,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, + &p10_laminate_list, NULL, }, { /* Olympus P-S100 */ 20, @@ -1666,7 +3255,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, }, { /* Canon CP-10 */ 1002, @@ -1678,11 +3267,11 @@ static const dyesub_cap_t dyesub_model_capabilities[] = DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER | DYESUB_FEATURE_PLANE_INTERLACE, - &cpx00_printer_init_func, NULL, + &cp10_printer_init_func, NULL, &cpx00_plane_init_func, NULL, NULL, NULL, cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow, - NULL, + NULL, NULL, }, { /* Canon CP-100, CP-200, CP-300 */ 1000, @@ -1698,11 +3287,12 @@ 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, }, - { /* Canon CP-220, CP-330, SELPHY CP-400, SELPHY CP-500, SELPHY CP-510, - SELPHY CP-600, SELPHY CP-710, SELPHY CP-720, SELPHY CP-730, - SELPHY CP-760, SELPHY CP-770, SELPHY CP-780 */ + { /* Canon CP-220, CP-330, SELPHY CP400, SELPHY CP500, SELPHY CP510, + SELPHY CP520, SELPHY CP530, SELPHY CP600, SELPHY CP710, + SELPHY CP720, SELPHY CP730, SELPHY CP740, SELPHY CP750, + SELPHY CP760, SELPHY CP770, SELPHY CP780 */ 1001, &ymc_ink_list, &res_300dpi_list, @@ -1716,25 +3306,9 @@ 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, - }, - { /* Canon CP-520, SELPHY CP-530, SELPHY CP-740, SELPHY CP-750 */ - 1004, - &ymc_ink_list, - &res_300dpi_list, - &cp220_page_list, - &cp220_printsize_list, - SHRT_MAX, - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE, - &cp520_printer_init_func, NULL, - &cpx00_plane_init_func, NULL, NULL, NULL, - cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow, - NULL, }, - { /* Canon SELPHY ES1 (!experimental) */ + { /* Canon SELPHY ES1 */ 1003, &ymc_ink_list, &res_300dpi_list, @@ -1748,9 +3322,9 @@ 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, }, - { /* Canon SELPHY ES2, ES20 (!experimental) */ + { /* Canon SELPHY ES2, SELPHY ES20 */ 1005, &ymc_ink_list, &res_300dpi_list, @@ -1764,9 +3338,9 @@ 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, }, - { /* Canon SELPHY ES3, ES30 (!experimental) */ + { /* Canon SELPHY ES3, SELPHY ES30 */ 1006, &ymc_ink_list, &res_300dpi_list, @@ -1780,9 +3354,9 @@ 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, }, - { /* Canon SELPHY ES40 (!experimental) */ + { /* Canon SELPHY ES40 */ 1007, &ymc_ink_list, &res_300dpi_list, @@ -1796,9 +3370,9 @@ 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, }, - { /* Canon SELPHY CP790 (!experimental) */ + { /* Canon SELPHY CP790 */ 1008, &ymc_ink_list, &res_300dpi_list, @@ -1812,9 +3386,9 @@ 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, }, - { /* Canon SELPHY CP-800 */ + { /* Canon SELPHY CP800 */ 1009, &ymc_ink_list, &res_300dpi_list, @@ -1824,27 +3398,27 @@ static const dyesub_cap_t dyesub_model_capabilities[] = DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER | DYESUB_FEATURE_PLANE_INTERLACE, - &cp520_printer_init_func, NULL, + &cpx00_printer_init_func, NULL, &cpx00_plane_init_func, NULL, NULL, NULL, cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow, - NULL, + NULL, NULL, }, - - { /* Sony DPP-EX5, DPP-EX7 */ - 2002, - &rgb_ink_list, - &res_403dpi_list, - &dppex5_page_list, - &dppex5_printsize_list, - 100, + { /* Canon SELPHY CP900 */ + 1010, + &ymc_ink_list, + &res_300dpi_list, + &cpx00_page_list, + &cpx00_printsize_list, + SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_BORDERLESS, - &dppex5_printer_init, &dppex5_printer_end, + | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER + | DYESUB_FEATURE_PLANE_INTERLACE, + &cpx00_printer_init_func, &cp900_printer_end_func, + &cpx00_plane_init_func, NULL, + NULL, NULL, + cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow, NULL, NULL, - &dppex5_block_init, NULL, - NULL, NULL, NULL, - &dppex5_laminate_list, }, { /* Sony UP-DP10 */ 2000, @@ -1859,7 +3433,36 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, updp10_adj_cyan, updp10_adj_magenta, updp10_adj_yellow, - &updp10_laminate_list, + &updp10_laminate_list, NULL, + }, + { /* Sony UP-DR150 */ + 2001, + &rgb_ink_list, + &res_334dpi_list, + &updr150_page_list, + &updr150_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + &updr150_printer_init_func, &updr150_printer_end_func, + NULL, NULL, + NULL, NULL, + NULL, NULL, NULL, + &updp10_laminate_list, NULL, + }, + { /* Sony DPP-EX5, DPP-EX7 */ + 2002, + &rgb_ink_list, + &res_403dpi_list, + &dppex5_page_list, + &dppex5_printsize_list, + 100, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT + | DYESUB_FEATURE_BORDERLESS, + &dppex5_printer_init, &dppex5_printer_end, + NULL, NULL, + &dppex5_block_init, NULL, + NULL, NULL, NULL, + &dppex5_laminate_list, NULL, }, { /* Sony UP-DR100 */ 2003, @@ -1873,21 +3476,21 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, NULL, NULL, NULL, - &updr100_laminate_list, + &updr100_laminate_list, NULL, }, - { /* Sony UP-DR150 */ - 2001, + { /* Sony UP-DR200 */ + 2004, &rgb_ink_list, &res_334dpi_list, &updr150_page_list, &updr150_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, - &updr150_printer_init_func, &updr150_printer_end_func, + &updr200_printer_init_func, &updr150_printer_end_func, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, + &updr200_laminate_list, NULL, }, { /* Fujifilm Printpix CX-400 */ 3000, @@ -1902,7 +3505,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, }, { /* Fujifilm Printpix CX-550 */ 3001, @@ -1917,7 +3520,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, }, { /* Fujifilm FinePix NX-500 */ 3002, @@ -1931,7 +3534,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, }, { /* Kodak Easyshare Dock family */ 4000, @@ -1946,8 +3549,207 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &kodak_dock_plane_init, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, + NULL, NULL, + }, + { /* Kodak Photo Printer 6800 */ + 4001, + &rgb_ink_list, + &res_300dpi_list, + &kodak_6800_page_list, + &kodak_6800_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + &kodak_6800_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 Photo Printer 6850 */ + 4002, + &rgb_ink_list, + &res_300dpi_list, + &kodak_6850_page_list, + &kodak_6850_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + &kodak_6850_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 Photo Printer 605 */ + 4003, + &rgb_ink_list, + &res_300dpi_list, + &kodak_6800_page_list, + &kodak_6800_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + &kodak_605_printer_init, NULL, + 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 Professional 1400 */ + 4004, + &bgr_ink_list, + &res_301dpi_list, + &kodak_1400_page_list, + &kodak_1400_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH + | DYESUB_FEATURE_WHITE_BORDER + | DYESUB_FEATURE_ROW_INTERLACE, + &kodak_1400_printer_init, NULL, + NULL, NULL, + NULL, NULL, + NULL, NULL, NULL, + &kodak_6800_laminate_list, + &kodak_1400_media_list, + }, + { /* Kodak Photo Printer 805 */ + 4005, + &bgr_ink_list, + &res_301dpi_list, + &kodak_805_page_list, + &kodak_805_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH + | DYESUB_FEATURE_WHITE_BORDER + | DYESUB_FEATURE_ROW_INTERLACE, + &kodak_805_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 Professional 9810 */ + 4006, + &ymc_ink_list, + &res_300dpi_list, + &kodak_9810_page_list, + &kodak_9810_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT + | DYESUB_FEATURE_PLANE_INTERLACE, + &kodak_9810_printer_init, &kodak_9810_printer_end, + &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 Professional 8500 */ + 4100, + &bgr_ink_list, + &res_314dpi_list, + &kodak_8500_page_list, + &kodak_8500_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + &kodak_8500_printer_init, &kodak_8500_printer_end, + 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, + }, + { /* Mitsubishi CP3020D/DU/DE */ + 4101, + &ymc_ink_list, + &res_314dpi_list, + &mitsu_cp3020d_page_list, + &mitsu_cp3020d_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT + | DYESUB_FEATURE_PLANE_INTERLACE, + &mitsu_cp3020d_printer_init, &mitsu_cp3020d_printer_end, + &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, + }, + { /* Mitsubishi CP3020DA/DAE */ + 4102, + &bgr_ink_list, + &res_314dpi_list, + &mitsu_cp3020d_page_list, + &mitsu_cp3020d_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT + | DYESUB_FEATURE_PLANE_INTERLACE, + &mitsu_cp3020da_printer_init, &mitsu_cp3020da_printer_end, + &mitsu_cp3020da_plane_init, NULL, + NULL, NULL, /* No block funcs */ + NULL, NULL, NULL, /* color profile/adjustment is built into printer */ + NULL, NULL, + }, + { /* Mitsubishi CP9550D */ + 4103, + &bgr_ink_list, + &res_346dpi_list, + &mitsu_cp9550_page_list, + &mitsu_cp9550_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT + | DYESUB_FEATURE_PLANE_INTERLACE, + &mitsu_cp9550_printer_init, &mitsu_cp9550_printer_end, + &mitsu_cp3020da_plane_init, NULL, + NULL, NULL, /* No block funcs */ + NULL, NULL, NULL, /* color profile/adjustment is built into printer */ + NULL, NULL, + }, + { /* Mitsubishi CP9810D */ + 4104, + &bgr_ink_list, + &res_300dpi_list, + &mitsu_cp9810_page_list, + &mitsu_cp9810_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_12BPP + | DYESUB_FEATURE_BIGENDIAN, + &mitsu_cp9810_printer_init, &mitsu_cp9810_printer_end, + &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, + }, + { /* Mitsubishi CPD70D/CPD707D */ + 4105, + &bgr_ink_list, + &res_300dpi_list, + &mitsu_cpd70x_page_list, + &mitsu_cpd70x_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_16BPP + | DYESUB_FEATURE_BIGENDIAN, + &mitsu_cpd70x_printer_init, &mitsu_cpd70x_printer_end, + NULL, &mitsu_cpd70x_plane_end, + NULL, NULL, /* No block funcs */ + NULL, NULL, NULL, /* color profile/adjustment is built into printer */ + &mitsu_cpd70x_laminate_list, NULL, + }, + { /* Mitsubishi CPK60D */ + 4106, + &bgr_ink_list, + &res_300dpi_list, + &mitsu_cpk60_page_list, + &mitsu_cpk60_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_16BPP + | DYESUB_FEATURE_BIGENDIAN, + &mitsu_cpk60_printer_init, &mitsu_cpd70x_printer_end, + NULL, &mitsu_cpd70x_plane_end, + NULL, NULL, /* No block funcs */ + NULL, NULL, NULL, /* color profile/adjustment is built into printer */ + &mitsu_cpd70x_laminate_list, NULL, }, + { /* Shinko CHC-S9045 (experimental) */ 5000, &rgb_ink_list, @@ -1960,37 +3762,66 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, + NULL, NULL, }, - { /* Dai Nippon Printing DS40 */ - 6000, + { /* Shinko/Sinfonia CHC-S2145 */ + 5001, &rgb_ink_list, &res_300dpi_list, + &shinko_chcs2145_page_list, + &shinko_chcs2145_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + &shinko_chcs2145_printer_init, &shinko_chcs2145_printer_end, + NULL, NULL, /* No planes */ + NULL, NULL, /* No blocks */ + NULL, NULL, NULL, /* Color correction in printer */ + &shinko_chcs2145_laminate_list, NULL, + }, + { /* Dai Nippon Printing DS40 */ + 6000, + &bgr_ink_list, + &res_dnpds40_dpi_list, &dnpds40_dock_page_list, &dnpds40_dock_printsize_list, SHRT_MAX, - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT, - NULL, &dnpds40_printer_end, + &dnpds40_printer_start, &dnpds40_printer_end, &dnpds40_plane_init, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, + &dnpds40_laminate_list, NULL, }, { /* Dai Nippon Printing DS80 */ 6001, - &rgb_ink_list, - &res_300dpi_list, + &bgr_ink_list, + &res_dnpds40_dpi_list, &dnpds80_dock_page_list, &dnpds80_dock_printsize_list, SHRT_MAX, - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT, - NULL, &dnpds40_printer_end, + &dnpds80_printer_start, &dnpds40_printer_end, &dnpds40_plane_init, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, + &dnpds40_laminate_list, NULL, + }, + { /* Dai Nippon Printing DSRX1 */ + 6002, + &bgr_ink_list, + &res_dnpds40_dpi_list, + &dnpsrx1_dock_page_list, + &dnpsrx1_dock_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT, + &dnpdsrx1_printer_start, &dnpds40_printer_end, + &dnpds40_plane_init, NULL, + NULL, NULL, + NULL, NULL, NULL, + &dnpds40_laminate_list, NULL, }, }; @@ -2133,7 +3964,25 @@ static const laminate_t* dyesub_get_laminate_pattern(stp_vars_t *v) } return l; } - + +static const dyesub_media_t* dyesub_get_mediatype(stp_vars_t *v) +{ + const char *mpar = stp_get_string_parameter(v, "MediaType"); + const dyesub_cap_t *caps = dyesub_get_model_capabilities( + stp_get_model_id(v)); + const dyesub_media_list_t *mlist = caps->media; + const dyesub_media_t *m = NULL; + int i; + + for (i = 0; i < mlist->n_items; i++) + { + m = &(mlist->item[i]); + if (strcmp(m->name, mpar) == 0) + break; + } + return m; +} + static void dyesub_printsize(const stp_vars_t *v, int *width, @@ -2236,7 +4085,21 @@ dyesub_parameters(const stp_vars_t *v, const char *name, else if (strcmp(name, "MediaType") == 0) { description->bounds.str = stp_string_list_create(); - description->is_active = 0; + if (caps->media) { + const dyesub_media_list_t *mlist = caps->media; + + for (i = 0; i < mlist->n_items; i++) + { + const dyesub_media_t *m = &(mlist->item[i]); + stp_string_list_add_string(description->bounds.str, + m->name, gettext(m->text)); + } + 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, "InputSlot") == 0) { @@ -2562,7 +4425,7 @@ dyesub_read_image(stp_vars_t *v, { int image_px_width = stp_image_width(image); int image_px_height = stp_image_height(image); - int row_size = image_px_width * pv->ink_channels * pv->bytes_per_out_channel; + int row_size = image_px_width * pv->ink_channels * sizeof(short); unsigned short **image_data; unsigned int zero_mask; int i; @@ -2605,7 +4468,6 @@ dyesub_print_pixel(stp_vars_t *v, int plane) { unsigned short ink[MAX_INK_CHANNELS * MAX_BYTES_PER_CHANNEL], *out; - unsigned char *ink_u8; int i, j, b; if (pv->print_mode == DYESUB_LANDSCAPE) @@ -2635,20 +4497,35 @@ dyesub_print_pixel(stp_vars_t *v, } } - if (pv->bytes_per_ink_channel == 1) /* convert 16bits to 8bit */ + /* Downscale 16bpp to output bpp */ + /* FIXME: Do we want to round? */ + if (pv->bytes_per_ink_channel == 1) { - ink_u8 = (unsigned char *) ink; + unsigned char *ink_u8 = (unsigned char *) ink; for (i = 0; i < pv->ink_channels; i++) - ink_u8[i] = ink[i] / 257; + ink_u8[i] = ink[i] / 257; + /* FIXME: This really should be corrected to be: */ + /* ink_u8[i] = ink[i] >> 8; */ + } + else if (pv->bits_per_ink_channel != 16) + { + for (i = 0; i < pv->ink_channels; i++) + ink[i] = ink[i] >> (16 - pv->bits_per_ink_channel); } - - if (pv->plane_interlacing) - stp_zfwrite((char *) ink + plane, pv->bytes_per_ink_channel, 1, v); + + /* Byteswap as needed */ + if (pv->bytes_per_ink_channel == 2 && pv->byteswap) + for (i = 0; i < pv->ink_channels; i++) + ink[i] = ((ink[i] >> 8) & 0xff) | ((ink[i] & 0xff) << 8); + + if (pv->plane_interlacing || pv->row_interlacing) + stp_zfwrite((char *) ink + (plane * pv->bytes_per_ink_channel), + pv->bytes_per_ink_channel, 1, v); else -/* stp_zfwrite((char *) ink, pv->bytes_per_ink_channel, pv->ink_channels, v);*/ - /* print inks in right order, eg. RGB BGR */ + /* print inks in correct order, eg. RGB BGR */ for (b = 0; b < pv->ink_channels; b++) - stp_zfwrite((char *) ink + (pv->ink_order[b]-1), pv->bytes_per_ink_channel, 1, v); + stp_zfwrite((char *) ink + (pv->bytes_per_ink_channel * (pv->ink_order[b]-1)), + pv->bytes_per_ink_channel, 1, v); return 1; } @@ -2682,13 +4559,16 @@ dyesub_print_plane(stp_vars_t *v, int plane) { int ret = 0; - int h, row; - int out_bytes = (pv->plane_interlacing ? 1 : pv->ink_channels) + int h, row, p; + int out_bytes = ((pv->plane_interlacing || pv->row_interlacing) ? 1 : pv->ink_channels) * pv->bytes_per_ink_channel; - for (h = 0; h <= pv->prnb_px - pv->prnt_px; h++) { + p = pv->row_interlacing ? 0 : plane; + + do { + if (h % caps->block_size == 0) { /* block init */ privdata.block_min_h = h + pv->prnt_px; @@ -2716,7 +4596,7 @@ dyesub_print_plane(stp_vars_t *v, pv->outh_px, pv->imgh_px); stp_deprintf(STP_DBG_DYESUB, "dyesub_print_plane: h = %d, row = %d\n", h, row); - ret = dyesub_print_row(v, pv, row, plane); + ret = dyesub_print_row(v, pv, row, p); if (dyesub_feature(caps, DYESUB_FEATURE_FULL_WIDTH) && pv->outr_px < pv->prnw_px) @@ -2730,6 +4610,8 @@ dyesub_print_plane(stp_vars_t *v, { /* block end */ dyesub_exec(v, caps->block_end_func, "caps->block_end"); } + + } while (pv->row_interlacing && ++p < pv->ink_channels); } return ret; } @@ -2787,6 +4669,8 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) privdata.pagesize = stp_get_string_parameter(v, "PageSize"); if (caps->laminate) privdata.laminate = dyesub_get_laminate_pattern(v); + if (caps->media) + privdata.media = dyesub_get_mediatype(v); dyesub_imageable_area_internal(v, (dyesub_feature(caps, DYESUB_FEATURE_WHITE_BORDER) ? 1 : 0), @@ -2849,13 +4733,34 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) for (i = 0; i < pv.ink_channels; i++) stp_channel_add(v, i, 0, 1.0); pv.out_channels = stp_color_init(v, image, 65536); - pv.bytes_per_ink_channel = 1; /* FIXME: this is printer dependent */ - pv.bytes_per_out_channel = 2; /* FIXME: this is ??? */ + + if (dyesub_feature(caps, DYESUB_FEATURE_12BPP)) { + pv.bytes_per_ink_channel = 2; + pv.bits_per_ink_channel = 12; + } else if (dyesub_feature(caps, DYESUB_FEATURE_16BPP)) { + pv.bytes_per_ink_channel = 2; + pv.bits_per_ink_channel = 16; + } else { + pv.bytes_per_ink_channel = 1; + pv.bits_per_ink_channel = 8; + } + + if (pv.bytes_per_ink_channel > 1) { +#if defined(__LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__) + pv.byteswap = dyesub_feature(caps, DYESUB_FEATURE_BIGENDIAN); +#elif defined (__BIG_ENDIAN) || defined(__BIG_ENDIAN__) + pv.byteswap = !dyesub_feature(caps, DYESUB_FEATURE_BIGENDIAN); +#else +#error "Unable to determine endianness, aborting compilation!" +#endif + } + pv.image_data = dyesub_read_image(v, &pv, image); pv.empty_byte = (ink_type && (strcmp(ink_type, "RGB") == 0 || strcmp(ink_type, "BGR") == 0) ? '\xff' : '\0'); pv.plane_interlacing = dyesub_feature(caps, DYESUB_FEATURE_PLANE_INTERLACE); + pv.row_interlacing = dyesub_feature(caps, DYESUB_FEATURE_ROW_INTERLACE); pv.plane_lefttoright = dyesub_feature(caps, DYESUB_FEATURE_PLANE_LEFTTORIGHT); pv.print_mode = page_mode; if (!pv.image_data) @@ -2865,7 +4770,7 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) } /* /FIXME */ - + /* FIXME: Provide a way of disabling/altering these curves */ dyesub_adjust_curve(v, caps->adj_cyan, "CyanCurve"); dyesub_adjust_curve(v, caps->adj_magenta, "MagentaCurve"); dyesub_adjust_curve(v, caps->adj_yellow, "YellowCurve"); @@ -2914,12 +4819,13 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) dyesub_swap_ints(&pv.imgh_px, &pv.imgw_px); } - /* assign private data *after* swaping image dimensions */ + /* assign private data *after* swaping image dimensions */ privdata.w_dpi = w_dpi; privdata.h_dpi = h_dpi; privdata.w_size = pv.prnw_px; 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 ed1438a..7a7528d 100644 --- a/src/main/print-papers.c +++ b/src/main/print-papers.c @@ -1,5 +1,5 @@ /* - * "$Id: print-papers.c,v 1.42 2011/12/22 03:07:45 rlk Exp $" + * "$Id: print-papers.c,v 1.43 2014/01/12 01:30:44 rlk Exp $" * * Print plug-in driver utility functions for the GIMP. * @@ -113,6 +113,8 @@ stpi_paper_create(stp_papersize_t *p) (const stp_papersize_t *) stp_list_item_get_data(paper_item); if (ep && !strcmp(p->name, ep->name)) { + stp_erprintf("Duplicate paper size `%s'\n", + p->name); stpi_paper_freefunc(p); return 1; } diff --git a/src/main/print-pcl.c b/src/main/print-pcl.c index 7c028c2..68d69d2 100644 --- a/src/main/print-pcl.c +++ b/src/main/print-pcl.c @@ -1,5 +1,5 @@ /* - * "$Id: print-pcl.c,v 1.160 2010/12/05 21:38:15 rlk Exp $" + * "$Id: print-pcl.c,v 1.162 2014/01/04 23:07:22 rlk Exp $" * * Print plug-in HP PCL driver for the GIMP. * @@ -1724,7 +1724,7 @@ pcl_papersize_valid(const stp_papersize_t *pt, return(0); /* - * Is it a recognised supported name? + * Is it a recognized supported name? */ if (pcl_convert_media_size(pt->name, model) != -1) @@ -2274,23 +2274,19 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) *yellow, /* Yellow bitmap data */ *lcyan, /* Light Cyan bitmap data */ *lmagenta; /* Light Magenta bitmap data */ - int page_width, /* Width of page */ - page_height, /* Height of page */ - page_left, + int page_left, page_top, page_right, page_bottom, out_width, /* Width of image on page */ out_height, /* Height of image on page */ - out_channels, /* Output bytes per pixel */ errdiv, /* Error dividend */ errmod, /* Error modulus */ errval, /* Current error value */ errline, /* Current raster line */ errlast; /* Last raster line loaded */ unsigned zero_mask; - int image_height, - image_width; + int image_height; const pcl_cap_t *caps; /* Printer capabilities */ int planes = 3; /* # of output planes */ int pcl_media_size; /* PCL media size code */ @@ -2302,7 +2298,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) int extra_left_margin = 0; stp_curve_t *lum_adjustment; stp_curve_t *hue_adjustment; - double density; + double density; if (!stp_verify(v)) { @@ -2320,7 +2316,6 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) stp_image_init(image); image_height = stp_image_height(image); - image_width = stp_image_width(image); /* * Figure out the output resolution... @@ -2379,11 +2374,8 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) &page_bottom, &page_top); left -= page_left; top -= page_top; - page_width = page_right - page_left; - page_height = page_bottom - page_top; image_height = stp_image_height(image); - image_width = stp_image_width(image); /* * Set media size here because it is needed by the margin calculation code. @@ -2813,7 +2805,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) if (black && !privdata.do_cretb) stp_dither_set_inks_simple(v, STP_ECOLOR_K, 3, dot_sizes_use, 1.0, 1.0); - /* Note: no printer I know of does both CRet (4-level) and 6 colour, but + /* Note: no printer I know of does both CRet (4-level) and 6 color, but what the heck. variable_dither_ranges copied from print-escp2.c */ if (privdata.do_6color) /* Photo for 69x */ @@ -2835,7 +2827,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) } else if (privdata.do_6color) { - /* Set light inks for 6 colour printers. + /* Set light inks for 6 color printers. Numbers copied from print-escp2.c */ stp_dither_set_inks_full(v, STP_ECOLOR_C, 2, photo_dither_shades, 1.0, 0.31 / .5); @@ -2845,29 +2837,29 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) if (black) stp_channel_set_density_adjustment(v, STP_ECOLOR_K, 0, get_double_param(v, "BlackDensity") * - get_double_param(v, "Density")); + density); if (cyan) stp_channel_set_density_adjustment(v, STP_ECOLOR_C, 0, get_double_param(v, "CyanDensity") * - get_double_param(v, "Density")); + density); if (magenta) stp_channel_set_density_adjustment(v, STP_ECOLOR_M, 0, get_double_param(v, "MagentaDensity") * - get_double_param(v, "Density")); + density); if (yellow) stp_channel_set_density_adjustment(v, STP_ECOLOR_Y, 0, get_double_param(v, "YellowDensity") * - get_double_param(v, "Density")); + density); if (lcyan) stp_channel_set_density_adjustment (v, STP_ECOLOR_C, 1, (get_double_param(v, "CyanDensity") * get_double_param(v, "LightCyanTrans") * - get_double_param(v, "Density"))); + density)); if (lmagenta) stp_channel_set_density_adjustment (v, STP_ECOLOR_M, 1, (get_double_param(v, "MagentaDensity") * get_double_param(v, "LightMagentaTrans") * - get_double_param(v, "Density"))); + density)); if (!stp_check_curve_parameter(v, "HueMap", STP_PARAMETER_ACTIVE)) @@ -2882,7 +2874,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) stp_curve_destroy(lum_adjustment); } - out_channels = stp_color_init(v, image, 65536); + (void) stp_color_init(v, image, 65536); errdiv = image_height / out_height; errmod = image_height % out_height; @@ -3082,4 +3074,3 @@ stp_module_t stp_module_data = print_pcl_module_exit, (void *) &print_pcl_module_data }; - diff --git a/src/main/print-raw.c b/src/main/print-raw.c index 856dd07..95c0ef2 100644 --- a/src/main/print-raw.c +++ b/src/main/print-raw.c @@ -1,5 +1,5 @@ /* - * "$Id: print-raw.c,v 1.42 2010/12/05 21:38:15 rlk Exp $" + * "$Id: print-raw.c,v 1.43 2013/09/08 15:35:18 rlk Exp $" * * Print plug-in RAW driver for the GIMP. * @@ -88,6 +88,12 @@ 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 }, + { + "PageSize", N_("Page Size"), "Color=No,Category=Basic Printer Setup", + N_("Size of the paper being printed to"), + STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_CORE, + STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, }; static const int the_parameter_count = @@ -138,6 +144,19 @@ raw_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, "PageSize") == 0) + { + int papersizes = stp_known_papersizes(); + description->bounds.str = stp_string_list_create(); + for (i = 0; i < papersizes; i++) + { + const stp_papersize_t *pt = stp_get_papersize_by_index(i); + 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; + } else description->is_active = 0; } diff --git a/src/main/print-util.c b/src/main/print-util.c index 9bb46bf..3f1488e 100644 --- a/src/main/print-util.c +++ b/src/main/print-util.c @@ -1,5 +1,5 @@ /* - * "$Id: print-util.c,v 1.117 2010/06/26 20:02:02 rlk Exp $" + * "$Id: print-util.c,v 1.120 2014/01/13 02:59:14 rlk Exp $" * * Print plug-in driver utility functions for the GIMP. * @@ -664,5 +664,10 @@ stp_get_parameter_list(const stp_vars_t *v) void stp_abort(void) { + if (stp_get_debug_level() > 0) + { + int i = *((volatile int *) 0); + stp_erprintf("Crashing here...%d\n", i); + } abort(); } diff --git a/src/main/print-vars.c b/src/main/print-vars.c index 1a5cf5c..27d9545 100644 --- a/src/main/print-vars.c +++ b/src/main/print-vars.c @@ -1,5 +1,5 @@ /* - * "$Id: print-vars.c,v 1.94 2012/01/19 13:26:02 m0m Exp $" + * "$Id: print-vars.c,v 1.95 2014/01/04 00:31:38 rlk Exp $" * * Print plug-in driver utility functions for the GIMP. * @@ -129,7 +129,7 @@ value_freefunc(void *item) case STP_PARAMETER_TYPE_STRING_LIST: case STP_PARAMETER_TYPE_FILE: case STP_PARAMETER_TYPE_RAW: - stp_free((void *) v->value.rval.data); + stp_free(stpi_cast_safe(v->value.rval.data)); break; case STP_PARAMETER_TYPE_CURVE: if (v->value.cval) @@ -466,7 +466,7 @@ set_raw_parameter(stp_list_t *list, const char *parameter, const char *value, val = (value_t *) stp_list_item_get_data(item); if (val->active == STP_PARAMETER_DEFAULTED) val->active = STP_PARAMETER_ACTIVE; - stp_free((void *) val->value.rval.data); + stp_free(stpi_cast_safe(val->value.rval.data)); } else { @@ -2061,7 +2061,7 @@ fill_vars_from_xmltree(stp_mxml_node_t *prop, stp_mxml_node_t *root, type = STP_PARAMETER_TYPE_DOUBLE; stp_deprintf(STP_DBG_XML, " Set raw '%s' to '%s'\n", p_name, cnode->value.text.string); - stp_free((void *) raw->data); + stp_free(stpi_cast_safe(raw->data)); stp_free(raw); } } diff --git a/src/main/printers.c b/src/main/printers.c index 0fa08da..81be870 100644 --- a/src/main/printers.c +++ b/src/main/printers.c @@ -1,5 +1,5 @@ /* - * "$Id: printers.c,v 1.89 2010/08/07 02:30:38 rlk Exp $" + * "$Id: printers.c,v 1.91 2014/01/12 01:30:44 rlk Exp $" * * Print plug-in driver utility functions for the GIMP. * @@ -449,7 +449,7 @@ stp_printer_get_defaults(const stp_printer_t *printer) { if (! printer->vars_initialized) { - stp_printer_t *nc_printer = (stp_printer_t *) printer; + stp_printer_t *nc_printer = (stp_printer_t *) stpi_cast_safe(printer); stp_deprintf(STP_DBG_PRINTERS, " ==>init %s\n", printer->driver); set_printer_defaults (nc_printer->printvars, 1, 0); nc_printer->vars_initialized = 1; @@ -982,6 +982,9 @@ stp_family_register(stp_list_t *family) printer = (const stp_printer_t *) stp_list_item_get_data(printer_item); if (!stp_list_get_item_by_name(printer_list, printer->driver)) stp_list_item_create(printer_list, NULL, printer); + else + stp_erprintf("Duplicate printer entry `%s' (%s)\n", + printer->driver, printer->long_name); printer_item = stp_list_item_next(printer_item); } } diff --git a/src/main/sequence.c b/src/main/sequence.c index b6a8d2e..096c0b2 100644 --- a/src/main/sequence.c +++ b/src/main/sequence.c @@ -1,5 +1,5 @@ /* - * "$Id: sequence.c,v 1.29 2011/02/17 02:15:18 rlk Exp $" + * "$Id: sequence.c,v 1.30 2014/01/04 00:31:38 rlk Exp $" * * Sequence data type. This type is designed to be derived from by * the curve and dither matrix types. @@ -63,12 +63,6 @@ struct stp_sequence #define CHECK_SEQUENCE(sequence) STPI_ASSERT(sequence, NULL) -static inline stp_sequence_t * -deconst_sequence(const stp_sequence_t *sequence) -{ - return (stp_sequence_t *) sequence; -} - static void sequence_ctor(stp_sequence_t *sequence) { @@ -219,7 +213,7 @@ stp_sequence_get_range(const stp_sequence_t *sequence, { if (sequence->recompute_range) /* Don't recompute the range if we don't need to. */ - scan_sequence_range(deconst_sequence(sequence)); + scan_sequence_range((stp_sequence_t *) stpi_cast_safe(sequence)); *low = sequence->rlo; *high = sequence->rhi; } @@ -535,7 +529,7 @@ stp_sequence_get_##name##_data(const stp_sequence_t *sequence, size_t *count) \ return NULL; \ if (!sequence->name##_data) \ { \ - stp_sequence_t *seq = deconst_sequence(sequence); \ + stp_sequence_t *seq = (stp_sequence_t *) stpi_cast_safe(sequence); \ seq->name##_data = stp_zalloc(sizeof(t) * sequence->size); \ for (i = 0; i < sequence->size; i++) \ seq->name##_data[i] = (t) sequence->data[i]; \ diff --git a/src/main/string-list.c b/src/main/string-list.c index 8d7ac3c..337a717 100644 --- a/src/main/string-list.c +++ b/src/main/string-list.c @@ -1,5 +1,5 @@ /* - * "$Id: string-list.c,v 1.19 2005/06/15 01:13:41 rlk Exp $" + * "$Id: string-list.c,v 1.21 2014/01/04 00:31:38 rlk Exp $" * * Print plug-in driver utility functions for the GIMP. * @@ -33,8 +33,8 @@ static void free_list_element(void *item) { stp_param_string_t *string = (stp_param_string_t *) (item); - stp_free((char *) string->name); - stp_free((char *) string->text); + stp_free(stpi_cast_safe(string->name)); + stp_free(stpi_cast_safe(string->text)); stp_free(string); } @@ -130,6 +130,31 @@ stp_string_list_add_string(stp_string_list_t *list, const char *text) { stp_param_string_t *new_string = stp_malloc(sizeof(stp_param_string_t)); + do + { + const char *xname = name; + while (*xname) + { + if (!isalnum(*xname) && + *xname != '_' && *xname != '-' && *xname != '+') + { + stp_erprintf("Gutenprint: bad string %s (%s)\n", name, text); + break; + } + xname++; + } + } while(0); + new_string->name = stp_strdup(name); + new_string->text = stp_strdup(text); + stp_list_item_create((stp_list_t *) list, NULL, new_string); +} + +void +stp_string_list_add_string_unsafe(stp_string_list_t *list, + const char *name, + const char *text) +{ + stp_param_string_t *new_string = stp_malloc(sizeof(stp_param_string_t)); new_string->name = stp_strdup(name); new_string->text = stp_strdup(text); stp_list_item_create((stp_list_t *) list, NULL, new_string); diff --git a/src/testpattern/Makefile.in b/src/testpattern/Makefile.in index e25a132..43d6242 100644 --- a/src/testpattern/Makefile.in +++ b/src/testpattern/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -23,6 +22,51 @@ VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ @@ -40,9 +84,11 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/run-testpattern-2.in $(top_srcdir)/scripts/global.mk \ - testpatternl.c testpatterny.c testpatterny.h +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 @BUILD_TESTPATTERN_TRUE@bin_PROGRAMS = testpattern$(EXEEXT) @BUILD_TESTPATTERN_TRUE@noinst_PROGRAMS = printers$(EXEEXT) \ @BUILD_TESTPATTERN_TRUE@ printer_options$(EXEEXT) @@ -70,6 +116,10 @@ PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) printer_options_SOURCES = printer_options.c printer_options_OBJECTS = printer_options.$(OBJEXT) printer_options_DEPENDENCIES = $(GUTENPRINT_LIBS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = printers_SOURCES = printers.c printers_OBJECTS = printers.$(OBJEXT) printers_DEPENDENCIES = $(GUTENPRINT_LIBS) @@ -79,30 +129,66 @@ testpattern_OBJECTS = $(am_testpattern_OBJECTS) am__DEPENDENCIES_1 = testpattern_DEPENDENCIES = $(GUTENPRINT_LIBS) $(am__DEPENDENCIES_1) SCRIPTS = $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = @MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ || -LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) -LTLEXCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(LEX) $(LFLAGS) $(AM_LFLAGS) +LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) +LTLEXCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(LEX) $(AM_LFLAGS) $(LFLAGS) +AM_V_LEX = $(am__v_LEX_@AM_V@) +am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@) +am__v_LEX_0 = @echo " LEX " $@; +am__v_LEX_1 = YLWRAP = $(top_srcdir)/scripts/ylwrap @MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ || -YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS) -LTYACCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS) +am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \ + -e s/c++$$/h++/ -e s/c$$/h/ +YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) +LTYACCCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(YACC) $(AM_YFLAGS) $(YFLAGS) +AM_V_YACC = $(am__v_YACC_@AM_V@) +am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) +am__v_YACC_0 = @echo " YACC " $@; +am__v_YACC_1 = SOURCES = printer_options.c printers.c $(testpattern_SOURCES) DIST_SOURCES = printer_options.c printers.c $(testpattern_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -124,16 +210,215 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } DATA = $(pkgdata_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags -am__tty_colors = \ -red=; grn=; lgn=; blu=; std= +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red='[0;31m'; \ + grn='[0;32m'; \ + lgn='[1;32m'; \ + blu='[1;34m'; \ + mgn='[0;35m'; \ + brg='[1m'; \ + std='[m'; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/scripts/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/scripts/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/$(PACKAGE)/samples ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -191,6 +476,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -202,6 +488,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -226,6 +513,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -359,7 +648,7 @@ EXTRA_DIST = testpatterny.h $(pkgdata_DATA) run-testpattern run-testpattern-1 all: all-am .SUFFIXES: -.SUFFIXES: .c .l .lo .o .obj .y +.SUFFIXES: .c .l .lo .log .o .obj .test .test$(EXEEXT) .trs .y $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/scripts/global.mk $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ @@ -381,6 +670,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -394,14 +684,19 @@ run-testpattern-2: $(top_builddir)/config.status $(srcdir)/run-testpattern-2.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ @@ -422,7 +717,8 @@ uninstall-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ + -e 's/$$/$(EXEEXT)/' \ + `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files @@ -444,20 +740,21 @@ clean-noinstPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -printer_options$(EXEEXT): $(printer_options_OBJECTS) $(printer_options_DEPENDENCIES) + +printer_options$(EXEEXT): $(printer_options_OBJECTS) $(printer_options_DEPENDENCIES) $(EXTRA_printer_options_DEPENDENCIES) @rm -f printer_options$(EXEEXT) - $(LINK) $(printer_options_OBJECTS) $(printer_options_LDADD) $(LIBS) -printers$(EXEEXT): $(printers_OBJECTS) $(printers_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(printer_options_OBJECTS) $(printer_options_LDADD) $(LIBS) + +printers$(EXEEXT): $(printers_OBJECTS) $(printers_DEPENDENCIES) $(EXTRA_printers_DEPENDENCIES) @rm -f printers$(EXEEXT) - $(LINK) $(printers_OBJECTS) $(printers_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(printers_OBJECTS) $(printers_LDADD) $(LIBS) testpatterny.h: testpatterny.c - @if test ! -f $@; then \ - rm -f testpatterny.c; \ - $(MAKE) $(AM_MAKEFLAGS) testpatterny.c; \ - else :; fi -testpattern$(EXEEXT): $(testpattern_OBJECTS) $(testpattern_DEPENDENCIES) + @if test ! -f $@; then rm -f testpatterny.c; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) testpatterny.c; else :; fi + +testpattern$(EXEEXT): $(testpattern_OBJECTS) $(testpattern_DEPENDENCIES) $(EXTRA_testpattern_DEPENDENCIES) @rm -f testpattern$(EXEEXT) - $(LINK) $(testpattern_OBJECTS) $(testpattern_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(testpattern_OBJECTS) $(testpattern_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -472,31 +769,31 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpatterny.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< .l.c: - $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) + $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) .y.c: - $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE) + $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE) mostlyclean-libtool: -rm -f *.lo @@ -505,8 +802,11 @@ clean-libtool: -rm -rf .libs _libs install-pkgdataDATA: $(pkgdata_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -520,30 +820,17 @@ uninstall-pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) + dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -555,15 +842,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -572,101 +855,194 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ else \ - skipped="($$skip tests were not run)"; \ + color_start= color_end=; \ fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - echo "$$grn$$dashes"; \ - else \ - echo "$$red$$dashes"; \ - fi; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes$$std"; \ - test "$$failed" -eq 0; \ - else :; fi + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +run-testpattern-1.log: run-testpattern-1 + @p='run-testpattern-1'; \ + b='run-testpattern-1'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +run-testpattern-2.log: run-testpattern-2 + @p='run-testpattern-2'; \ + b='run-testpattern-2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @@ -716,11 +1092,19 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: @@ -808,20 +1192,21 @@ uninstall-am: uninstall-binPROGRAMS uninstall-pkgdataDATA .MAKE: check-am install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ clean-binPROGRAMS clean-generic clean-libtool \ - clean-noinstPROGRAMS ctags distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgdataDATA install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-binPROGRAMS uninstall-pkgdataDATA + clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgdataDATA install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-pkgdataDATA @SET_MAKE@ diff --git a/src/testpattern/run-testpattern-2.in b/src/testpattern/run-testpattern-2.in index 79e1466..0ab1320 100644 --- a/src/testpattern/run-testpattern-2.in +++ b/src/testpattern/run-testpattern-2.in @@ -12,9 +12,16 @@ my $calc_md5_file = undef; my $calc_md5_dir = undef; my $dontrun = 0; my $retval = 0; +my $halt_on_error = 0; my $testpattern_command; my @printer_list = (); +my @exclude_list = (); +my @include_patterns = (); +my @exclude_patterns = (); my @special_options = (); +my $include_pattern = ''; +my $exclude_pattern = ''; +my %exclude_list = (); my @standard_options = qw(InkType InkSet,RawChannels DitherAlgorithm Duplex MediaType InputSlot ColorCorrection ImageType FullBleed Quality UseGloss Weave PrintingDirection Density CyanDensity); my $global_status = 1; my $run_installed = 0; @@ -26,6 +33,13 @@ my $vsize = 0.1; my $left = 0.15; my $top = 0.15; my $geometry = ""; +my $restart = 1; +my $global_fh; +my $error = 0; +my $global_printer; +my $global_messages; +my $global_page; +my $global_case; my @extras = (); my @job_extras = (); @@ -66,11 +80,12 @@ GetOptions("v+" => \$valgrind, "p:i" => \$std_pages, "P:i" => \$duplex_pages, "s!" => \$skip_duplicate_printers, - "S!" => \$single, + "S+" => \$single, + "H!" => \$halt_on_error, "i!" => \$run_installed, "r!" => \$skip_resolutions, "R+" => \$use_min_res, - "q!" => \$quiet, + "q+" => \$quiet, "o=s" => \@special_options, "f=s" => \@families, "O=s" => \$output, @@ -78,9 +93,12 @@ GetOptions("v+" => \$valgrind, "m:s" => \$calc_md5_dir, "M:s" => \$calc_md5_file, "X" => \$rerun, + "x=s" => \@exclude_list, + "Y=s" => \@include_patterns, + "y=s" => \@exclude_patterns, "l" => \$list_printers, "L" => \$list_options, - "V" => \$verbose, + "V+" => \$verbose, "h" => \$help); sub print_help_and_exit() { @@ -88,54 +106,73 @@ sub print_help_and_exit() { print STDERR <<EOF; Usage: run-testpattern-2 [opts] [model ...] - Options: - -c Use callgrind (incompatible with -v) + Printer selection options: -f family Test printers only in the specified family. Multiple families may be tested. By default, all printer families are tested. - -g Attach testpattern job to gdb - -G geometry Specify geometry (=(HxV)(+L+T)) - -i Use the installed Gutenprint libraries rather than - source tree + -s Skip duplicate printers (with the same model number + in printers.xml). + -x printer Do not test the specified printer. + -y pattern Do not test printers matching the specified pattern(s). + -Y pattern Only test printers matching the specified pattern(s). + + Logging options: -m md5_dir Generate MD5 checksums and place them in the specified directory, one file per run. Directory will be created if necessary. -M md5_file Generate MD5 checksums and place them in the specified file, one line per run. - -n Do not actually run testpattern -O out_dir Generate actual output and place it in the specified directory, one file per run. Directory will be created if necessary. + + Control options: + -H Halt on any error. + -S Run a separate testpattern command for each printer. + -SS Run a separate testpattern command for each case (slow). + + Debugging options: + -c Use callgrind (incompatible with -v). + -g Attach testpattern job to gdb. + -v[v[v[v]]] Use valgrind. Number of -v options controls usage: + -v Basic valgrind checking, no leak checking + -vv Additional leak checking + -vvv Show reachable data also + -vvvv Minimal checks only + + Test selection options: + -d option=value Test this option with only the specified (default) value, + if available. + -G geometry Specify geometry (=(HxV)(+L+T), as fractions of page). -o option Test this option. Multiple -o options may be specified. - option1,option2 indicates to test each value of option1 - in combination with each value of option2. For floating - point and integer options, a selection of values is - tested. + option1,option2... tests all combinations of each + option. For floating point and integer options, a + selection of values is tested. Default: $options - -d option=value Test this option with only the specified (default) value, - if available -p page count Specify number of pages to print per printer. Default $std_pages. -P page count Specify number of pages to print per printer when testing duplex mode. Default $duplex_pages. - -q Do not print progress messages - -r Do not test each resolution (test only the default) + -r Do not test each resolution (test only the default). -R Use the minimum resolution (rather than the default) to test other options. -RR Use only the minimum resolution, and do not test other resolutions. - -s Skip duplicate printers (with the same model number - in printers.xml) - -S Run a separate testpattern command for each printer - -X Repeat specified cases listed on standard input - -v[v[v[v]]] Use valgrind. Number of -v options controls usage: - -v Basic valgrind checking, no leak checking - -vv Additional leak checking - -vvv Show reachable data also - -vvvv Minimal checks only - -l List available printers - -L List available options for specified printer - -V List available values for each option + -X Repeat specified cases listed on standard input. + + Miscellaneous options: + -i Use the installed Gutenprint libraries rather than + from source tree. + -q Only list each printer as it is tested. + -qq Print one dot for every printer. + -qqq Do not report any output. + + Information options (do not run tests): + -l List available printers. + -L List available options for specified printer. + -n Do not actually run test (write out input that + would be passed to testpattern). + -V List available values for each option. EOF exit 1; } @@ -257,17 +294,19 @@ sub set_message($) { sub set_global_message($) { my ($message) = @_; - push @global_messages, "message \"$message\";\n" if (! $quiet); + push @global_messages, "message \"$message\";\n" } sub print_one_testpattern($;$) { my ($printer, $raw) = @_; my $stuff = join "", @global_messages; $stuff .= join "", @job_extras; + $global_printer = $printer; foreach my $page (0..$pages - 1) { + $global_page = $page; $stuff .= "printer \"$printer\";\n"; $stuff .= "parameter \"PageSize\" \"Auto\";\n"; - $stuff .= join "", @extras, @messages; + $stuff .= join "", @messages, @extras; if (! $quiet && $pages > 1) { $stuff .= "message \"(page $page)\";\n"; } @@ -364,6 +403,9 @@ EOF return $stuff; } +map { $exclude_list{$_} = 1; } @exclude_list; +$include_pattern = join("|", map {"($_)"} @include_patterns); +$exclude_pattern = join("|", map {"($_)"} @exclude_patterns); my $extra_arg = ""; if ($#ARGV >= 0) { @printer_list = @ARGV; @@ -373,11 +415,19 @@ if ($#ARGV >= 0) { while(<PIPE>) { next if m!^#!; chomp; + next if $exclude_list{$_}; + next if $exclude_pattern ne '' && /$exclude_pattern/; + next if $include_pattern ne '' && ! /$include_pattern/; push @printer_list, $_; } close PIPE; } +if ($list_printers) { + print join("\n", sort @printer_list), "\n"; + exit 0; +} + open PIPE, "./printer_options $extra_arg|" or die "Cannot run printer_options: $!\n"; while(<PIPE>) { next if m!^#!; @@ -385,13 +435,31 @@ while(<PIPE>) { } close PIPE or die "Cannot run printer_options: $!\n"; -sub do_print { +sub do_print($$) { my ($output, $fh) = @_; if ($dontrun) { print $output; + } elsif (! $fh) { + restart_testpattern(1); + print $global_fh $output; + my ($status) = close $global_fh; + if (!$status) { + if ($? == 2) { + stopit(); + } + $error++; + if ($single > 1) { + warn("\n*** FAIL $global_case ($?)\n"); + } else { + warn("\n*** FAIL ($?)\n"); + } + if ($halt_on_error) { # SIGINT + stopit(); + } + } } else { print $fh $output; - } + } } sub do_output($) { @@ -478,7 +546,7 @@ sub build_key($$) { } sub do_printer($$) { - my ($printer, $fh) = @_; + my ($printer, $global_fh) = @_; my $tmp; my $min_res_name; my $min_res_value = 0; @@ -522,41 +590,47 @@ sub do_printer($$) { # We want to do all resolutions and all ink types in both color modes. # We don't need to do both resolutions and ink types. my $pmode; - foreach $pmode (@printing_modes) { + foreach $pmode (sort @printing_modes) { my ($resolution); $pages = $std_pages; if (! $skip_resolutions) { - foreach $resolution (@resolutions) { + foreach $resolution (sort @resolutions) { @extras = (); @job_extras = (); @messages = (); @global_messages = (); if ($first_time) { - set_global_message("$printer\n"); + if ($quiet < 2) { + set_global_message("$printer\n"); + } elsif ($quiet == 2) { + set_global_message("."); + } } set_opt("PrintingMode", $pmode, $printer); set_opt("Resolution", $resolution, $printer); - map { set_opt($_, $base_settings{$_}, $printer)} keys %base_settings; + map { set_opt($_, $base_settings{$_}, $printer)} sort keys %base_settings; my ($case) = "${printer}_PrintingMode_${pmode}_Resolution_${resolution}"; + $global_case = $case; if (! $rerun || $rerun_cases{$case}) { $first_time = 0; + $global_messages = $case; do_output($case); set_message(" ${pmode}+${resolution}"); my $output = print_one_testpattern($printer); - do_print( $output, $fh ); + do_print( $output, $global_fh ); } } } - foreach $key (keys %opt_vals) { + foreach $key (sort keys %opt_vals) { next if ($key eq "RawChannels" && $pmode ne "Color"); my (@subkeys) = split (/,/, $key); $tmp = $opt_vals{$key}; if (defined $tmp && $tmp >= 1) { - my (@opts) = @$tmp; + my (@opts) = sort @$tmp; my $opt; my $rawval; my $set_resolution = 0; - foreach $opt (@opts) { + foreach $opt (sort @opts) { my (@subopts) = split (/,/, $opt); @extras = (); @job_extras = (); @@ -581,7 +655,11 @@ sub do_printer($$) { push @ovals, "${k}=${v}"; } (0..$#subkeys); if ($first_time) { - set_global_message("$printer\n"); + if ($quiet < 2) { + set_global_message("$printer\n"); + } elsif ($quiet == 2) { + set_global_message("."); + } $first_time = 0; } # FIXME! need to handle Duplex as a subkey @@ -608,7 +686,9 @@ sub do_printer($$) { } else { $case = "${printer}_PrintingMode_${pmode}_${mstring}"; } + $global_case = $case; if (! $rerun || $rerun_cases{$case}) { + $global_messages = $case; do_output($case); if ($use_min_res && ! $set_resolution) { set_message(" ${ostring}+${pmode}+${min_res_name}"); @@ -616,7 +696,7 @@ sub do_printer($$) { set_message(" ${ostring}+${pmode}"); } my $output = print_one_testpattern($printer, $rawval); - do_print( $output, $fh ); + do_print( $output, $global_fh ); } } } @@ -646,10 +726,39 @@ foreach my $printer (@printer_list) { } @printer_list = @nprinter_list; -if ($list_printers) { - print join("\n", sort @printer_list), "\n"; - exit 0; -} elsif ($list_options) { +sub restart_testpattern { + my ($silent) = @_; + if (! $silent) { + $error = 1; + close($global_fh); + my ($err) = $? & 255; + if ($single > 1) { + warn("\n***TESTPATTERN CRASHED*** ($global_case) ($err)!\n"); + } else { + warn("\n***TESTPATTERN CRASHED*** (cannot determine case) ($err)!\n"); + } + if ($halt_on_error) { + stopit(); + } + } + open($global_fh, "|$testpattern_command") or + die "Can't run $testpattern_command: $!\n"; +} + +sub stopit { + if ($single > 1) { + print "\nStopping, $error case(s) failed.\n"; + exit 1; + } elsif ($error) { + print "\nStopping, failures noted.\n"; + exit 1; + } else { + print "\nStopping.\n"; + exit 0; + } +} + +if ($list_options) { if ($#printer_list > 0) { die "-L must be used with one printer\n"; } @@ -730,27 +839,42 @@ if ($list_printers) { $suppress = '-n'; } my ($qopt) = $quiet ? "-q" : ""; - $testpattern_command = "$valgrind_command ./testpattern -y $suppress $qopt"; - if ($single) { - $SIG{PIPE} = sub() { die "\ntestpattern crashed!\n" }; + my ($Hopt) = $halt_on_error ? "-H" : ""; + $testpattern_command = "$valgrind_command ./testpattern -y $suppress $qopt $Hopt"; + if ($single > 1) { + $SIG{TERM} = sub() { stopit() }; + $SIG{HUP} = sub() { stopit() }; + $SIG{INT} = sub() { stopit() }; + foreach my $printer (@printer_list) { + do_printer($printer, undef); + } + } elsif ($single) { + $SIG{PIPE} = sub() { restart_testpattern() }; foreach my $printer (@printer_list) { - open TESTPATTERN, "|$testpattern_command" or - die "Can't run $testpattern_command: $!\n"; - do_printer($printer, \*TESTPATTERN); - $status |= close TESTPATTERN; + restart_testpattern(1); + do_printer($printer, $global_fh); + $status |= close $global_fh; $status |= ($? & 255); - last if ($? & 255); } } else { - $SIG{PIPE} = sub() { die "\ntestpattern crashed!\n" }; - open TESTPATTERN, "|$testpattern_command" or - die "Can't run $testpattern_command: $!\n"; - map { do_printer($_, \*TESTPATTERN) } @printer_list; - $status = close TESTPATTERN; + $SIG{PIPE} = sub() { restart_testpattern() }; + restart_testpattern(1); + map { do_printer($_, $global_fh) } @printer_list; + $status = close $global_fh; + } + if ($quiet == 2) { + print STDERR "\n"; } - if ($status) { + if ($status && ! $error) { exit 0; } else { + if ($error) { + if ($single > 1) { + print STDERR "$error cases failed\n"; + } else { + print STDERR "Failures noted.\n"; + } + } exit 1; } } diff --git a/src/testpattern/testpattern.c b/src/testpattern/testpattern.c index 624d7d6..e4bd63b 100644 --- a/src/testpattern/testpattern.c +++ b/src/testpattern/testpattern.c @@ -1,5 +1,5 @@ /* - * "$Id: testpattern.c,v 1.59 2011/04/01 01:21:12 rlk Exp $" + * "$Id: testpattern.c,v 1.60 2014/01/04 00:30:27 rlk Exp $" * * Test pattern generator for Gimp-Print * @@ -42,6 +42,8 @@ #include <gutenprint/gutenprint-intl.h> #include <errno.h> +#pragma GCC diagnostic ignored "-Wredundant-decls" + extern int yyparse(void); static const char *Image_get_appname(stp_image_t *image); @@ -71,6 +73,7 @@ double global_levels[STP_CHANNEL_LIMIT]; double global_gammas[STP_CHANNEL_LIMIT]; double global_gamma; int global_steps; +int global_halt_on_error = 0; double global_ink_limit; int global_noblackline; int global_printer_width; @@ -188,7 +191,14 @@ writefunc(void *file, const char *buf, size_t bytes) FILE *prn = (FILE *)file; if (! file) return; - if (!global_suppress_output || (file == stderr)) + if (file == stderr) + { + if (global_quiet) + fputc('-', prn); + else + fwrite(buf, 1, bytes, prn); + } + else if (!global_suppress_output) { fwrite(buf, 1, bytes, prn); } @@ -468,6 +478,8 @@ do_print(void) fputs("FAILED", stderr); failures++; status = 2; + if (global_halt_on_error) + return status; } else passes++; @@ -485,6 +497,8 @@ do_print(void) fputs("FAILED", stderr); failures++; status = 2; + if (global_halt_on_error) + return status; } else { @@ -509,7 +523,7 @@ main(int argc, char **argv) int global_status = 0; while (1) { - c = getopt(argc, argv, "nqy"); + c = getopt(argc, argv, "nqyH"); if (c == -1) break; switch (c) @@ -523,6 +537,9 @@ main(int argc, char **argv) case 'y': global_fail_verify_ok = 1; break; + case 'H': + global_halt_on_error = 1; + break; default: break; } @@ -539,7 +556,7 @@ main(int argc, char **argv) global_status = 1; } close_output(); - if (!global_quiet) + if (passes + failures + skipped > 1) fprintf(stderr, "%d pass, %d fail, %d skipped\n", passes, failures, skipped); return global_status; } diff --git a/src/testpattern/testpattern.h b/src/testpattern/testpattern.h index 3f96c11..29bd3c3 100644 --- a/src/testpattern/testpattern.h +++ b/src/testpattern/testpattern.h @@ -1,5 +1,5 @@ /* - * "$Id: testpattern.h,v 1.20 2010/09/06 17:08:39 rlk Exp $" + * "$Id: testpattern.h,v 1.21 2014/01/23 13:22:41 rlk Exp $" * * Test pattern generator for Gimp-Print * @@ -37,10 +37,10 @@ typedef struct } type; union { struct { - double mins[32]; - double vals[32]; - double gammas[32]; - double levels[32]; + double mins[STP_CHANNEL_LIMIT]; + double vals[STP_CHANNEL_LIMIT]; + double gammas[STP_CHANNEL_LIMIT]; + double levels[STP_CHANNEL_LIMIT]; double lower; double upper; } pattern; diff --git a/src/testpattern/testpatternl.c b/src/testpattern/testpatternl.c index e8ec86b..cee5dea 100644 --- a/src/testpattern/testpatternl.c +++ b/src/testpattern/testpatternl.c @@ -8,7 +8,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 +#define YY_FLEX_SUBMINOR_VERSION 37 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -53,7 +53,6 @@ typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN @@ -84,6 +83,8 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#endif /* ! C99 */ + #endif /* ! FLEXINT_H */ #ifdef __cplusplus @@ -152,7 +153,12 @@ typedef unsigned int flex_uint32_t; typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif -extern int yyleng; +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern yy_size_t yyleng; extern FILE *yyin, *yyout; @@ -178,11 +184,6 @@ extern FILE *yyin, *yyout; #define unput(c) yyunput( c, (yytext_ptr) ) -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state @@ -200,7 +201,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -270,8 +271,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; @@ -299,7 +300,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); @@ -329,7 +330,7 @@ void yyfree (void * ); #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) -#define yywrap(n) 1 +#define yywrap() 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; @@ -751,7 +752,7 @@ int yy_flex_debug = 0; char *yytext; #line 1 "testpatternl.l" /* - * "$Id: testpatternl.l,v 1.27 2012/05/11 13:16:12 rlk Exp $" + * "$Id: testpatternl.l,v 1.28 2014/01/04 00:30:27 rlk Exp $" * * Test pattern generator for Gimp-Print * @@ -782,6 +783,9 @@ char *yytext; #include <stdlib.h> #include "testpattern.h" +#pragma GCC diagnostic ignored "-Wredundant-decls" +#pragma GCC diagnostic ignored "-Wunused-function" + #define YY_NO_UNPUT int mylineno = 1; @@ -813,7 +817,7 @@ do \ while (0) -#line 817 "testpatternl.c" +#line 821 "testpatternl.c" #define INITIAL 0 @@ -852,7 +856,7 @@ FILE *yyget_out (void ); void yyset_out (FILE * out_str ); -int yyget_leng (void ); +yy_size_t yyget_leng (void ); char *yyget_text (void ); @@ -902,7 +906,7 @@ static int input (void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -913,7 +917,7 @@ static int input (void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -995,10 +999,10 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 79 "testpatternl.l" +#line 82 "testpatternl.l" -#line 1002 "testpatternl.c" +#line 1006 "testpatternl.c" if ( !(yy_init) ) { @@ -1083,267 +1087,267 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 81 "testpatternl.l" +#line 84 "testpatternl.l" DBG(GAMMA); return GAMMA; YY_BREAK case 2: YY_RULE_SETUP -#line 82 "testpatternl.l" +#line 85 "testpatternl.l" DBG(LEVEL); return LEVEL; YY_BREAK case 3: YY_RULE_SETUP -#line 83 "testpatternl.l" +#line 86 "testpatternl.l" DBG(STEPS); return STEPS; YY_BREAK case 4: YY_RULE_SETUP -#line 84 "testpatternl.l" +#line 87 "testpatternl.l" DBG(INK_LIMIT); return INK_LIMIT; YY_BREAK case 5: YY_RULE_SETUP -#line 85 "testpatternl.l" +#line 88 "testpatternl.l" DBG(PRINTER); return PRINTER; YY_BREAK case 6: YY_RULE_SETUP -#line 86 "testpatternl.l" +#line 89 "testpatternl.l" DBG(PARAMETER); return PARAMETER; YY_BREAK case 7: YY_RULE_SETUP -#line 87 "testpatternl.l" +#line 90 "testpatternl.l" DBG(PARAMETER_INT); return PARAMETER_INT; YY_BREAK case 8: YY_RULE_SETUP -#line 88 "testpatternl.l" +#line 91 "testpatternl.l" DBG(PARAMETER_BOOL); return PARAMETER_BOOL; YY_BREAK case 9: YY_RULE_SETUP -#line 89 "testpatternl.l" +#line 92 "testpatternl.l" DBG(PARAMETER); return PARAMETER; YY_BREAK case 10: YY_RULE_SETUP -#line 90 "testpatternl.l" +#line 93 "testpatternl.l" DBG(PARAMETER_FLOAT); return PARAMETER_FLOAT; YY_BREAK case 11: YY_RULE_SETUP -#line 91 "testpatternl.l" +#line 94 "testpatternl.l" DBG(PARAMETER_CURVE); return PARAMETER_CURVE; YY_BREAK case 12: YY_RULE_SETUP -#line 92 "testpatternl.l" +#line 95 "testpatternl.l" DBG(DENSITY); return DENSITY; YY_BREAK case 13: YY_RULE_SETUP -#line 93 "testpatternl.l" +#line 96 "testpatternl.l" DBG(TOP); return TOP; YY_BREAK case 14: YY_RULE_SETUP -#line 94 "testpatternl.l" +#line 97 "testpatternl.l" DBG(LEFT); return LEFT; YY_BREAK case 15: YY_RULE_SETUP -#line 95 "testpatternl.l" +#line 98 "testpatternl.l" DBG(SIZE_MODE); return SIZE_MODE; YY_BREAK case 16: YY_RULE_SETUP -#line 96 "testpatternl.l" +#line 99 "testpatternl.l" DBG(RELATIVE); return RELATIVE; YY_BREAK case 17: YY_RULE_SETUP -#line 97 "testpatternl.l" +#line 100 "testpatternl.l" DBG(PT); return PT; YY_BREAK case 18: YY_RULE_SETUP -#line 98 "testpatternl.l" +#line 101 "testpatternl.l" DBG(IN); return IN; YY_BREAK case 19: YY_RULE_SETUP -#line 99 "testpatternl.l" +#line 102 "testpatternl.l" DBG(MM); return MM; YY_BREAK case 20: YY_RULE_SETUP -#line 100 "testpatternl.l" +#line 103 "testpatternl.l" DBG(HSIZE); return HSIZE; YY_BREAK case 21: YY_RULE_SETUP -#line 101 "testpatternl.l" +#line 104 "testpatternl.l" DBG(VSIZE); return VSIZE; YY_BREAK case 22: YY_RULE_SETUP -#line 102 "testpatternl.l" +#line 105 "testpatternl.l" DBG(BLACKLINE); return BLACKLINE; YY_BREAK case 23: YY_RULE_SETUP -#line 103 "testpatternl.l" +#line 106 "testpatternl.l" DBG(PATTERN); return PATTERN; YY_BREAK case 24: YY_RULE_SETUP -#line 104 "testpatternl.l" +#line 107 "testpatternl.l" DBG(XPATTERN); return XPATTERN; YY_BREAK case 25: YY_RULE_SETUP -#line 105 "testpatternl.l" +#line 108 "testpatternl.l" DBG(IMAGE); return IMAGE; YY_BREAK case 26: YY_RULE_SETUP -#line 106 "testpatternl.l" +#line 109 "testpatternl.l" DBG(EXTENDED); return EXTENDED; YY_BREAK case 27: YY_RULE_SETUP -#line 107 "testpatternl.l" +#line 110 "testpatternl.l" DBG(GRID); return GRID; YY_BREAK case 28: YY_RULE_SETUP -#line 108 "testpatternl.l" +#line 111 "testpatternl.l" DBG(CHANNEL); return CHANNEL; YY_BREAK case 29: YY_RULE_SETUP -#line 109 "testpatternl.l" +#line 112 "testpatternl.l" DBG(PAGESIZE); return PAGESIZE; YY_BREAK case 30: YY_RULE_SETUP -#line 110 "testpatternl.l" +#line 113 "testpatternl.l" DBG(SEMI); return SEMI; YY_BREAK case 31: YY_RULE_SETUP -#line 111 "testpatternl.l" +#line 114 "testpatternl.l" DBG(MODE); return MODE; YY_BREAK case 32: YY_RULE_SETUP -#line 112 "testpatternl.l" +#line 115 "testpatternl.l" yylval.ival = CMYK;DBG(CMYK); return CMYK; YY_BREAK case 33: YY_RULE_SETUP -#line 113 "testpatternl.l" +#line 116 "testpatternl.l" yylval.ival = CMYK;DBG(KCMY); return KCMY; YY_BREAK case 34: YY_RULE_SETUP -#line 114 "testpatternl.l" +#line 117 "testpatternl.l" yylval.ival = RGB;DBG(RGB); return RGB; YY_BREAK case 35: YY_RULE_SETUP -#line 115 "testpatternl.l" +#line 118 "testpatternl.l" yylval.ival = RGB;DBG(CMY); return CMY; YY_BREAK case 36: YY_RULE_SETUP -#line 116 "testpatternl.l" +#line 119 "testpatternl.l" yylval.ival = GRAY;DBG(GRAY); return GRAY; YY_BREAK case 37: YY_RULE_SETUP -#line 117 "testpatternl.l" +#line 120 "testpatternl.l" yylval.ival = GRAY;DBG(GRAY); return GRAY; YY_BREAK case 38: YY_RULE_SETUP -#line 118 "testpatternl.l" +#line 121 "testpatternl.l" yylval.ival = WHITE;DBG(WHITE); return WHITE; YY_BREAK case 39: YY_RULE_SETUP -#line 119 "testpatternl.l" +#line 122 "testpatternl.l" DBG(OUTPUT); return OUTPUT; YY_BREAK case 40: YY_RULE_SETUP -#line 120 "testpatternl.l" +#line 123 "testpatternl.l" DBG(MESSAGE); return MESSAGE; YY_BREAK case 41: YY_RULE_SETUP -#line 121 "testpatternl.l" +#line 124 "testpatternl.l" DBG(NOSCALE); return NOSCALE; YY_BREAK case 42: YY_RULE_SETUP -#line 122 "testpatternl.l" +#line 125 "testpatternl.l" DBG(START_JOB); return START_JOB; YY_BREAK case 43: YY_RULE_SETUP -#line 123 "testpatternl.l" +#line 126 "testpatternl.l" DBG(END_JOB); return END_JOB; YY_BREAK case 44: YY_RULE_SETUP -#line 124 "testpatternl.l" +#line 127 "testpatternl.l" DBG(END); return END; YY_BREAK case 45: YY_RULE_SETUP -#line 126 "testpatternl.l" +#line 129 "testpatternl.l" yylval.sval = yytext;DBG(COLOR); return COLOR; YY_BREAK case 46: YY_RULE_SETUP -#line 127 "testpatternl.l" +#line 130 "testpatternl.l" yylval.ival = strtol(yytext, NULL, 0); yylval.dval = (double) yylval.ival; DBG(tINT); return tINT; YY_BREAK case 47: YY_RULE_SETUP -#line 128 "testpatternl.l" +#line 131 "testpatternl.l" yylval.dval = strtod(yytext, NULL); DBG(tDOUBLE); return tDOUBLE; YY_BREAK case 48: /* rule 48 can match eol */ YY_RULE_SETUP -#line 129 "testpatternl.l" +#line 132 "testpatternl.l" yylval.sval = c_strstrip(yytext); DBG(tSTRING); return tSTRING; YY_BREAK case 49: YY_RULE_SETUP -#line 130 "testpatternl.l" +#line 133 "testpatternl.l" DBG(whitespace); /* Skip blanks/tabs */ YY_BREAK case 50: YY_RULE_SETUP -#line 131 "testpatternl.l" +#line 134 "testpatternl.l" DBG(comment); /* Skip comments */ YY_BREAK case 51: /* rule 51 can match eol */ YY_RULE_SETUP -#line 132 "testpatternl.l" +#line 135 "testpatternl.l" DBG(newline); mylineno++; YY_BREAK case 52: YY_RULE_SETUP -#line 133 "testpatternl.l" +#line 136 "testpatternl.l" ECHO; YY_BREAK -#line 1347 "testpatternl.c" +#line 1351 "testpatternl.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1529,21 +1533,21 @@ static int yy_get_next_buffer (void) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -1574,7 +1578,7 @@ static int yy_get_next_buffer (void) /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), (size_t) num_to_read ); + (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } @@ -1669,7 +1673,7 @@ static int yy_get_next_buffer (void) yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 284); - return yy_is_jam ? 0 : yy_current_state; + return yy_is_jam ? 0 : yy_current_state; } static void yyunput (int c, register char * yy_bp ) @@ -1684,7 +1688,7 @@ static int yy_get_next_buffer (void) if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - register int number_to_move = (yy_n_chars) + 2; + register yy_size_t number_to_move = (yy_n_chars) + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = @@ -1733,7 +1737,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -1893,10 +1897,6 @@ static void yy_load_buffer_state (void) yyfree((void *) b ); } -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. @@ -2009,7 +2009,7 @@ void yypop_buffer_state (void) */ static void yyensure_buffer_stack (void) { - int num_to_alloc; + yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { @@ -2101,12 +2101,12 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; @@ -2193,7 +2193,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -int yyget_leng (void) +yy_size_t yyget_leng (void) { return yyleng; } @@ -2341,4 +2341,4 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 133 "testpatternl.l" +#line 136 "testpatternl.l" diff --git a/src/testpattern/testpatternl.l b/src/testpattern/testpatternl.l index 16cb38c..f4f6708 100644 --- a/src/testpattern/testpatternl.l +++ b/src/testpattern/testpatternl.l @@ -1,5 +1,5 @@ /* - * "$Id: testpatternl.l,v 1.27 2012/05/11 13:16:12 rlk Exp $" + * "$Id: testpatternl.l,v 1.28 2014/01/04 00:30:27 rlk Exp $" * * Test pattern generator for Gimp-Print * @@ -31,6 +31,9 @@ #include <stdlib.h> #include "testpattern.h" +#pragma GCC diagnostic ignored "-Wredundant-decls" +#pragma GCC diagnostic ignored "-Wunused-function" + #define YY_NO_UNPUT int mylineno = 1; diff --git a/src/xml/Makefile.in b/src/xml/Makefile.in index b19ffe6..dfd1747 100644 --- a/src/xml/Makefile.in +++ b/src/xml/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -22,6 +21,51 @@ VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -40,8 +84,9 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/scripts/global.mk +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs \ + $(top_srcdir)/scripts/depcomp noinst_PROGRAMS = extract-strings$(EXEEXT) subdir = src/xml ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -66,28 +111,59 @@ PROGRAMS = $(noinst_PROGRAMS) am_extract_strings_OBJECTS = extract-strings.$(OBJEXT) extract_strings_OBJECTS = $(am_extract_strings_OBJECTS) extract_strings_DEPENDENCIES = $(GUTENPRINT_LIBS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(extract_strings_SOURCES) DIST_SOURCES = $(extract_strings_SOURCES) -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -109,13 +185,39 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } am__installdirs = "$(DESTDIR)$(pkgxmldatadir)" DATA = $(pkgxmldata_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) @@ -148,6 +250,7 @@ am__relativize = \ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -205,6 +308,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -216,6 +320,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -240,6 +345,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -399,6 +506,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -417,9 +525,10 @@ clean-noinstPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -extract-strings$(EXEEXT): $(extract_strings_OBJECTS) $(extract_strings_DEPENDENCIES) + +extract-strings$(EXEEXT): $(extract_strings_OBJECTS) $(extract_strings_DEPENDENCIES) $(EXTRA_extract_strings_DEPENDENCIES) @rm -f extract-strings$(EXEEXT) - $(LINK) $(extract_strings_OBJECTS) $(extract_strings_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(extract_strings_OBJECTS) $(extract_strings_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -430,25 +539,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract-strings.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo @@ -457,8 +566,11 @@ clean-libtool: -rm -rf .libs _libs install-pkgxmldataDATA: $(pkgxmldata_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgxmldatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgxmldatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -472,27 +584,28 @@ uninstall-pkgxmldataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgxmldatadir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgxmldatadir)" && rm -f $$files + dir='$(DESTDIR)$(pkgxmldatadir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ @@ -507,57 +620,12 @@ $(RECURSIVE_TARGETS): $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ @@ -573,12 +641,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -590,15 +653,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -607,6 +666,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -643,13 +717,10 @@ distdir: $(DISTFILES) done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ @@ -690,10 +761,15 @@ install-am: all-am installcheck: installcheck-recursive install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -778,13 +854,12 @@ ps-am: uninstall-am: uninstall-pkgxmldataDATA -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive +.MAKE: $(am__recursive_targets) install-am install-strip -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am all-local check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags ctags-recursive \ - dist-hook distclean distclean-compile distclean-generic \ +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ + check check-am clean clean-generic clean-libtool \ + clean-noinstPROGRAMS cscopelist-am ctags ctags-am dist-hook \ + distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ @@ -794,7 +869,7 @@ uninstall-am: uninstall-pkgxmldataDATA installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-pkgxmldataDATA diff --git a/src/xml/escp2/Makefile.in b/src/xml/escp2/Makefile.in index 84ed55a..0917eb3 100644 --- a/src/xml/escp2/Makefile.in +++ b/src/xml/escp2/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -20,6 +19,51 @@ #export STP_MODULE_PATH = $(top_builddir)/src/main/.libs:$(top_builddir)/src/main #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -38,8 +82,8 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/scripts/global.mk +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs subdir = src/xml/escp2 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -59,20 +103,58 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) @@ -105,6 +187,7 @@ am__relativize = \ ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -162,6 +245,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -173,6 +257,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -197,6 +282,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -351,6 +438,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -368,22 +456,25 @@ clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ @@ -398,57 +489,12 @@ $(RECURSIVE_TARGETS): $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ @@ -464,12 +510,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -481,15 +522,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -498,6 +535,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -534,13 +586,10 @@ distdir: $(DISTFILES) done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ @@ -578,10 +627,15 @@ install-am: all-am installcheck: installcheck-recursive install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -661,22 +715,21 @@ ps-am: uninstall-am: -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am all-local check check-am clean clean-generic \ - clean-libtool ctags ctags-recursive dist-hook distclean \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs installdirs-am \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ + check check-am clean clean-generic clean-libtool cscopelist-am \ + ctags ctags-am dist-hook distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am @SET_MAKE@ diff --git a/src/xml/escp2/inks/Makefile.am b/src/xml/escp2/inks/Makefile.am index cb0e8b0..17ceaa0 100644 --- a/src/xml/escp2/inks/Makefile.am +++ b/src/xml/escp2/inks/Makefile.am @@ -1,4 +1,4 @@ -## $Id: Makefile.am,v 1.13 2011/03/05 18:49:13 rlk Exp $ +## $Id: Makefile.am,v 1.15 2014/01/23 13:22:41 rlk Exp $ ## Copyright (C) 2008 Robert Krawitz ## ## This program is free software; you can redistribute it and/or modify @@ -63,8 +63,10 @@ pkgxmldata_DATA = \ pro_ultrachrome_k34.xml \ pro_ultrachrome_k3v.xml \ pro_ultrachrome_k3v4.xml \ + pro_ultrachrome_k3v10.xml \ standard.xml \ standard_gen0.xml \ + sx445.xml \ ultrachrome.xml \ wf40.xml \ wf500.xml \ diff --git a/src/xml/escp2/inks/Makefile.in b/src/xml/escp2/inks/Makefile.in index 367177b..208bb1f 100644 --- a/src/xml/escp2/inks/Makefile.in +++ b/src/xml/escp2/inks/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -21,6 +20,51 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -39,8 +83,8 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/scripts/global.mk +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs subdir = src/xml/escp2/inks ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -60,8 +104,25 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -83,12 +144,20 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } am__installdirs = "$(DESTDIR)$(pkgxmldatadir)" DATA = $(pkgxmldata_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -146,6 +215,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -157,6 +227,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -181,6 +252,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -339,8 +412,10 @@ pkgxmldata_DATA = \ pro_ultrachrome_k34.xml \ pro_ultrachrome_k3v.xml \ pro_ultrachrome_k3v4.xml \ + pro_ultrachrome_k3v10.xml \ standard.xml \ standard_gen0.xml \ + sx445.xml \ ultrachrome.xml \ wf40.xml \ wf500.xml \ @@ -372,6 +447,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -389,8 +465,11 @@ clean-libtool: -rm -rf .libs _libs install-pkgxmldataDATA: $(pkgxmldata_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgxmldatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgxmldatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -404,14 +483,12 @@ uninstall-pkgxmldataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgxmldatadir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgxmldatadir)" && rm -f $$files -tags: TAGS -TAGS: + dir='$(DESTDIR)$(pkgxmldatadir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: distdir: $(DISTFILES) @@ -464,10 +541,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -549,16 +631,17 @@ uninstall-am: uninstall-pkgxmldataDATA .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ - clean-libtool dist-hook distclean distclean-generic \ - distclean-libtool distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgxmldataDATA install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am uninstall uninstall-am uninstall-pkgxmldataDATA + clean-libtool cscopelist-am ctags-am dist-hook distclean \ + distclean-generic distclean-libtool distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgxmldataDATA install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-pkgxmldataDATA @SET_MAKE@ diff --git a/src/xml/escp2/inks/artisan.xml b/src/xml/escp2/inks/artisan.xml index 283c12f..3b69f80 100644 --- a/src/xml/escp2/inks/artisan.xml +++ b/src/xml/escp2/inks/artisan.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="artisan"> +<escp2InkGroup name="artisan"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -281,5 +281,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/b500.xml b/src/xml/escp2/inks/b500.xml index b05cc3a..9cb8d9d 100644 --- a/src/xml/escp2/inks/b500.xml +++ b/src/xml/escp2/inks/b500.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="b500"> +<escp2InkGroup name="b500"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -150,5 +150,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/c120.xml b/src/xml/escp2/inks/c120.xml index 40f360f..3f76227 100644 --- a/src/xml/escp2/inks/c120.xml +++ b/src/xml/escp2/inks/c120.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="c120"> +<escp2InkGroup name="c120"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -138,5 +138,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/c64.xml b/src/xml/escp2/inks/c64.xml index bcae2c3..add88ab 100644 --- a/src/xml/escp2/inks/c64.xml +++ b/src/xml/escp2/inks/c64.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="c64"> +<escp2InkGroup name="c64"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -204,5 +204,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/c80.xml b/src/xml/escp2/inks/c80.xml index 7528a47..91b174d 100644 --- a/src/xml/escp2/inks/c80.xml +++ b/src/xml/escp2/inks/c80.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="c80"> +<escp2InkGroup name="c80"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -205,5 +205,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/c82.xml b/src/xml/escp2/inks/c82.xml index 66d6e47..48685a3 100644 --- a/src/xml/escp2/inks/c82.xml +++ b/src/xml/escp2/inks/c82.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="c82"> +<escp2InkGroup name="c82"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -205,5 +205,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/claria.xml b/src/xml/escp2/inks/claria.xml index 9c492eb..81747c8 100644 --- a/src/xml/escp2/inks/claria.xml +++ b/src/xml/escp2/inks/claria.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="claria"> +<escp2InkGroup name="claria"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -399,5 +399,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/cmy.xml b/src/xml/escp2/inks/cmy.xml index d6d362f..fbaa098 100644 --- a/src/xml/escp2/inks/cmy.xml +++ b/src/xml/escp2/inks/cmy.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="cmy"> +<escp2InkGroup name="cmy"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -52,5 +52,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/cmykrb.xml b/src/xml/escp2/inks/cmykrb.xml index c8853c4..f53eec6 100644 --- a/src/xml/escp2/inks/cmykrb.xml +++ b/src/xml/escp2/inks/cmykrb.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="cmykrb"> +<escp2InkGroup name="cmykrb"> <Curves> <curve name="cmykrbCyan" wrap="wrap" type="linear" gamma="0" piecewise="false"> <sequence count="48" lower-bound="0" upper-bound="1"> @@ -660,5 +660,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/cmykro.xml b/src/xml/escp2/inks/cmykro.xml index 8cf8cf1..50decb4 100644 --- a/src/xml/escp2/inks/cmykro.xml +++ b/src/xml/escp2/inks/cmykro.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="cmykro"> +<escp2InkGroup name="cmykro"> <Curves> <curve name="cmykroCyan" wrap="wrap" type="linear" gamma="0" piecewise="false"> <sequence count="48" lower-bound="0" upper-bound="1"> @@ -659,5 +659,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/cx3650.xml b/src/xml/escp2/inks/cx3650.xml index 77d908b..004d6b1 100644 --- a/src/xml/escp2/inks/cx3650.xml +++ b/src/xml/escp2/inks/cx3650.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="cx3650"> +<escp2InkGroup name="cx3650"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -204,5 +204,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/defaultblack.xml b/src/xml/escp2/inks/defaultblack.xml index 2d0f6e6..e520b15 100644 --- a/src/xml/escp2/inks/defaultblack.xml +++ b/src/xml/escp2/inks/defaultblack.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="defaultblack"> +<escp2InkGroup name="defaultblack"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -36,5 +36,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/f360.xml b/src/xml/escp2/inks/f360.xml index ef33d13..be01d2c 100644 --- a/src/xml/escp2/inks/f360.xml +++ b/src/xml/escp2/inks/f360.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="f360"> +<escp2InkGroup name="f360"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -205,5 +205,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/f360_photo.xml b/src/xml/escp2/inks/f360_photo.xml index 0efd6b9..0128197 100644 --- a/src/xml/escp2/inks/f360_photo.xml +++ b/src/xml/escp2/inks/f360_photo.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="f360_photo"> +<escp2InkGroup name="f360_photo"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -281,5 +281,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/f360_photo7_japan.xml b/src/xml/escp2/inks/f360_photo7_japan.xml index bc18d1f..50b10c7 100644 --- a/src/xml/escp2/inks/f360_photo7_japan.xml +++ b/src/xml/escp2/inks/f360_photo7_japan.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="f360_photo7_japan"> +<escp2InkGroup name="f360_photo7_japan"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -415,5 +415,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/f360_ultrachrome.xml b/src/xml/escp2/inks/f360_ultrachrome.xml index 464e060..c9332cf 100644 --- a/src/xml/escp2/inks/f360_ultrachrome.xml +++ b/src/xml/escp2/inks/f360_ultrachrome.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="f360_ultrachrome"> +<escp2InkGroup name="f360_ultrachrome"> <InkList translate="text" name="ultraphoto" text="UltraChrome Photo Black"> <Shades> <shade count="2">1.000000 0.480000</shade> @@ -786,5 +786,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/f360_ultrachrome_k3.xml b/src/xml/escp2/inks/f360_ultrachrome_k3.xml index 0d3b142..0036f8b 100644 --- a/src/xml/escp2/inks/f360_ultrachrome_k3.xml +++ b/src/xml/escp2/inks/f360_ultrachrome_k3.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="f360_ultrachrome_k3"> +<escp2InkGroup name="f360_ultrachrome_k3"> <InkList translate="text" name="ultra3photo" text="Photo Black"> <Shades> <shade count="3">1.000000 0.480000 0.160000</shade> @@ -604,5 +604,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/f360_ultrachrome_k3v.xml b/src/xml/escp2/inks/f360_ultrachrome_k3v.xml index 4660f47..4dd2839 100644 --- a/src/xml/escp2/inks/f360_ultrachrome_k3v.xml +++ b/src/xml/escp2/inks/f360_ultrachrome_k3v.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="f360_ultrachrome_k3v"> +<escp2InkGroup name="f360_ultrachrome_k3v"> <InkList translate="text" name="ultra3photo" text="Photo Black"> <Shades> <shade count="3">1.000000 0.480000 0.160000</shade> @@ -604,5 +604,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/f360_ultrachrome_k3v_2.xml b/src/xml/escp2/inks/f360_ultrachrome_k3v_2.xml index e759cb1..0281046 100644 --- a/src/xml/escp2/inks/f360_ultrachrome_k3v_2.xml +++ b/src/xml/escp2/inks/f360_ultrachrome_k3v_2.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="f360_ultrachrome_k3v"> +<escp2InkGroup name="f360_ultrachrome_k3v"> <InkList translate="text" name="ultra3photo" text="Photo Black"> <initSequence>IK\002\000\000\061</initSequence> <Shades> @@ -606,5 +606,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/nx100.xml b/src/xml/escp2/inks/nx100.xml index 7c3538f..6dd412a 100644 --- a/src/xml/escp2/inks/nx100.xml +++ b/src/xml/escp2/inks/nx100.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="nx100"> +<escp2InkGroup name="nx100"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -135,5 +135,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/photo_gen0.xml b/src/xml/escp2/inks/photo_gen0.xml index 9231583..e4dcd4c 100644 --- a/src/xml/escp2/inks/photo_gen0.xml +++ b/src/xml/escp2/inks/photo_gen0.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="photo_gen0"> +<escp2InkGroup name="photo_gen0"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -398,5 +398,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/photo_gen1.xml b/src/xml/escp2/inks/photo_gen1.xml index 7bf0e59..be7c6ba 100644 --- a/src/xml/escp2/inks/photo_gen1.xml +++ b/src/xml/escp2/inks/photo_gen1.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="photo_gen1"> +<escp2InkGroup name="photo_gen1"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -398,5 +398,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/photo_gen2.xml b/src/xml/escp2/inks/photo_gen2.xml index ebddcbc..1d2efc7 100644 --- a/src/xml/escp2/inks/photo_gen2.xml +++ b/src/xml/escp2/inks/photo_gen2.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="photo_gen2"> +<escp2InkGroup name="photo_gen2"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -398,5 +398,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/photo_gen3.xml b/src/xml/escp2/inks/photo_gen3.xml index 9b23ff4..e899b4b 100644 --- a/src/xml/escp2/inks/photo_gen3.xml +++ b/src/xml/escp2/inks/photo_gen3.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="photo_gen3"> +<escp2InkGroup name="photo_gen3"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -398,5 +398,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/photo_gen3_4.xml b/src/xml/escp2/inks/photo_gen3_4.xml index 7d40057..1b83402 100644 --- a/src/xml/escp2/inks/photo_gen3_4.xml +++ b/src/xml/escp2/inks/photo_gen3_4.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="photo_gen3_4"> +<escp2InkGroup name="photo_gen3_4"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -205,5 +205,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/photo_gen4.xml b/src/xml/escp2/inks/photo_gen4.xml index 1457e32..2283184 100644 --- a/src/xml/escp2/inks/photo_gen4.xml +++ b/src/xml/escp2/inks/photo_gen4.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="photo_gen3"> +<escp2InkGroup name="photo_gen3"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -281,5 +281,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/photo_pigment.xml b/src/xml/escp2/inks/photo_pigment.xml index f7781ec..f63cb69 100644 --- a/src/xml/escp2/inks/photo_pigment.xml +++ b/src/xml/escp2/inks/photo_pigment.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="photo_pigment"> +<escp2InkGroup name="photo_pigment"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -281,5 +281,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/picturemate_4.xml b/src/xml/escp2/inks/picturemate_4.xml index b48f5f3..602992c 100644 --- a/src/xml/escp2/inks/picturemate_4.xml +++ b/src/xml/escp2/inks/picturemate_4.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="picturemate_4"> +<escp2InkGroup name="picturemate_4"> <InkList translate="text" name="picturemate_4" text="Standard"> <Shades> <shade count="1">1.000000</shade> @@ -82,5 +82,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/picturemate_6.xml b/src/xml/escp2/inks/picturemate_6.xml index fa5068a..418de94 100644 --- a/src/xml/escp2/inks/picturemate_6.xml +++ b/src/xml/escp2/inks/picturemate_6.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="picturemate_6"> +<escp2InkGroup name="picturemate_6"> <InkList translate="text" name="picturemate_6" text="Standard"> <Shades> <shade count="1">1.000000</shade> @@ -216,5 +216,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/pro_gen1.xml b/src/xml/escp2/inks/pro_gen1.xml index dab731f..d1a2760 100644 --- a/src/xml/escp2/inks/pro_gen1.xml +++ b/src/xml/escp2/inks/pro_gen1.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="pro_gen1"> +<escp2InkGroup name="pro_gen1"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -398,5 +398,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/pro_gen2.xml b/src/xml/escp2/inks/pro_gen2.xml index bf21a18..f005b6c 100644 --- a/src/xml/escp2/inks/pro_gen2.xml +++ b/src/xml/escp2/inks/pro_gen2.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="pro_gen2"> +<escp2InkGroup name="pro_gen2"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -398,5 +398,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/pro_pigment.xml b/src/xml/escp2/inks/pro_pigment.xml index baf5b93..340688c 100644 --- a/src/xml/escp2/inks/pro_pigment.xml +++ b/src/xml/escp2/inks/pro_pigment.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="pro_pigment"> +<escp2InkGroup name="pro_pigment"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -281,5 +281,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/pro_ultrachrome.xml b/src/xml/escp2/inks/pro_ultrachrome.xml index 675aa57..637e58c 100644 --- a/src/xml/escp2/inks/pro_ultrachrome.xml +++ b/src/xml/escp2/inks/pro_ultrachrome.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="pro_ultrachrome"> +<escp2InkGroup name="pro_ultrachrome"> <InkList translate="text" name="ultraphoto" text="UltraChrome Photo Black"> <Shades> <shade count="2">1.000000 0.480000</shade> @@ -786,5 +786,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/pro_ultrachrome_k3.xml b/src/xml/escp2/inks/pro_ultrachrome_k3.xml index dd9ae97..74e76be 100644 --- a/src/xml/escp2/inks/pro_ultrachrome_k3.xml +++ b/src/xml/escp2/inks/pro_ultrachrome_k3.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="pro_ultrachrome_k3"> +<escp2InkGroup name="pro_ultrachrome_k3"> <InkList translate="text" name="ultra3photo" text="Photo Black"> <initSequence>IK\002\000\000\061</initSequence> <Shades> @@ -606,5 +606,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/pro_ultrachrome_k34.xml b/src/xml/escp2/inks/pro_ultrachrome_k34.xml index 941ab5d..7077f4c 100644 --- a/src/xml/escp2/inks/pro_ultrachrome_k34.xml +++ b/src/xml/escp2/inks/pro_ultrachrome_k34.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="pro_ultrachrome_k3"> +<escp2InkGroup name="pro_ultrachrome_k3"> <InkList translate="text" name="ultra3photo" text="Photo Black"> <initSequence>IK\002\000\000\061</initSequence> <Shades> @@ -200,5 +200,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/pro_ultrachrome_k3v.xml b/src/xml/escp2/inks/pro_ultrachrome_k3v.xml index a217f5f..8a7f6a9 100644 --- a/src/xml/escp2/inks/pro_ultrachrome_k3v.xml +++ b/src/xml/escp2/inks/pro_ultrachrome_k3v.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="pro_ultrachrome_k3v"> +<escp2InkGroup name="pro_ultrachrome_k3v"> <InkList translate="text" name="ultra3photo" text="Photo Black"> <initSequence>IK\002\000\000\061</initSequence> <Shades> @@ -606,5 +606,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/pro_ultrachrome_k3v10.xml b/src/xml/escp2/inks/pro_ultrachrome_k3v10.xml new file mode 100644 index 0000000..6677137 --- /dev/null +++ b/src/xml/escp2/inks/pro_ultrachrome_k3v10.xml @@ -0,0 +1,724 @@ +<?xml version="1.0"?> + +<gutenprint xmlns="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint.xsd"> +<copyright> + * Copyright 2008 Robert Krawitz (rlk@alum.mit.edu) + * + * 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. +</copyright> +<escp2InkGroup name="pro_ultrachrome_k3v"> +<InkList translate="text" name="ultra3photo" text="Photo Black"> + <initSequence>IK\002\000\000\061</initSequence> + <Shades> + <shade count="3">1.000000 0.480000 0.160000</shade> + <shade count="2">1.000000 0.340000</shade> + <shade count="2">1.000000 0.250000</shade> + <shade count="1">1.000000</shade> + <shade count="1">1.000000</shade> + <shade count="1">1.000000</shade> + <shade count="1">1.000000</shade> + <shade count="1">1.000000</shade> + <shade count="1">1.000000</shade> + <shade count="1">1.000000</shade> + </Shades> + + <InkName translate="text" name="PhotoCMYK8" text="Eight Color Photo" InkID="CcMmYKk"> + <Channels> + <channel name="photo3_black" index="0"> + <subchannel color="0" subchannel="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + <SubchannelTransitionParam name="DarkGrayTrans"/> + </subchannel> + <subchannel color="0" subchannel="1" name="LightBlack" text="Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + <SubchannelTransitionParam name="DarkGrayTrans"/> + <SubchannelValueParam name="DarkGrayValue"/> + <SubchannelScaleParam name="DarkGrayScale"/> + </subchannel> + <subchannel color="0" subchannel="3" name="LightLightBlack" text="Light Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + <SubchannelTransitionParam name="LightGrayTrans"/> + <SubchannelValueParam name="LightGrayValue"/> + <SubchannelScaleParam name="LightGrayScale"/> + </subchannel> + </channel> + <channel name="photo_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" subchannel="0" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + </subchannel> + <subchannel color="2" subchannel="1" name="LightCyan" text="Light Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + <SubchannelValueParam name="LightCyanValue"/> + <SubchannelScaleParam name="LightCyanScale"/> + </subchannel> + </channel> + <channel name="photo_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" subchannel="0" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + </subchannel> + <subchannel color="1" subchannel="1" name="LightMagenta" text="Light Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + <SubchannelValueParam name="LightMagentaValue"/> + <SubchannelScaleParam name="LightMagentaScale"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="PhotoCMYK7" text="Seven Color Photo" InkID="CcMmYKk"> + <Channels> + <channel name="photo2_black" index="0"> + <subchannel color="0" subchannel="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + <SubchannelTransitionParam name="GrayTrans"/> + </subchannel> + <subchannel color="0" subchannel="1" name="LightBlack" text="Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + <SubchannelTransitionParam name="GrayTrans"/> + <SubchannelValueParam name="GrayValue"/> + <SubchannelScaleParam name="GrayScale"/> + </subchannel> + </channel> + <channel name="photo_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" subchannel="0" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + </subchannel> + <subchannel color="2" subchannel="1" name="LightCyan" text="Light Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + <SubchannelValueParam name="LightCyanValue"/> + <SubchannelScaleParam name="LightCyanScale"/> + </subchannel> + </channel> + <channel name="photo_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" subchannel="0" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + </subchannel> + <subchannel color="1" subchannel="1" name="LightMagenta" text="Light Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + <SubchannelValueParam name="LightMagentaValue"/> + <SubchannelScaleParam name="LightMagentaScale"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="PhotoCMYK" text="Six Color Photo" InkID="CcMmYK"> + <Channels> + <channel name="black" index="0"> + <subchannel color="0" subchannel="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="photo_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" subchannel="0" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + </subchannel> + <subchannel color="2" subchannel="1" name="LightCyan" text="Light Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + <SubchannelValueParam name="LightCyanValue"/> + <SubchannelScaleParam name="LightCyanScale"/> + </subchannel> + </channel> + <channel name="photo_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" subchannel="0" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + </subchannel> + <subchannel color="1" subchannel="1" name="LightMagenta" text="Light Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + <SubchannelValueParam name="LightMagentaValue"/> + <SubchannelScaleParam name="LightMagentaScale"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="PhotoCMY" text="Five Color Photo Composite" InkID="CcMmYK"> + <Channels> + <channel name="photo_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" subchannel="0" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + </subchannel> + <subchannel color="2" subchannel="1" name="LightCyan" text="Light Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + <SubchannelValueParam name="LightCyanValue"/> + <SubchannelScaleParam name="LightCyanScale"/> + </subchannel> + </channel> + <channel name="photo_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" subchannel="0" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + </subchannel> + <subchannel color="1" subchannel="1" name="LightMagenta" text="Light Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + <SubchannelValueParam name="LightMagentaValue"/> + <SubchannelScaleParam name="LightMagentaScale"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="CMYK" text="Four Color Standard" InkID="CMYK"> + <Channels> + <channel name="black" index="0"> + <subchannel color="0" subchannel="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="standard_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="standard_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="CMY" text="Three Color Composite" InkID="CMYK"> + <Channels> + <channel name="standard_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="standard_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="PhysicalCMYKkk" text="Eight Color Raw" InkID="Extended"> + <Channels> + <channel name="black" index="0"> + <subchannel color="0" subchannel="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="extended_black" index="1"> + <subchannel color="0" subchannel="1" name="LightBlack" text="Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="extended_photo3_black" index="2"> + <subchannel color="0" subchannel="3" name="LightLightBlack" text="Light Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="standard_cyan" index="3"> + <subchannel color="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="extended_cyan" index="4"> + <subchannel color="2" subchannel="1" name="LightCyan" text="Light Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="standard_magenta" index="5"> + <subchannel color="1" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="extended_magenta" index="6"> + <subchannel color="1" subchannel="1" name="LightMagenta" text="Light Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="7"> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="PhysicalCMYKkkOG" text="Ten Color Raw" InkID="Extended"> + <Channels> + <channel name="black" index="0"> + <subchannel color="0" subchannel="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="extended_black" index="1"> + <subchannel color="0" subchannel="1" name="LightBlack" text="Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="extended_photo3_black" index="2"> + <subchannel color="0" subchannel="3" name="LightLightBlack" text="Light Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="standard_cyan" index="3"> + <subchannel color="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="extended_cyan" index="4"> + <subchannel color="2" subchannel="1" name="LightCyan" text="Light Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="standard_magenta" index="5"> + <subchannel color="1" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="extended_magenta" index="6"> + <subchannel color="1" subchannel="1" name="LightMagenta" text="Light Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="7"> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + <channel name="standard_orange" index="8"> + <subchannel color="10" name="Orange" text="Orange" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + <channel name="standard_green" index="9"> + <subchannel color="11" name="Green" text="Green" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> +</InkList> + +<InkList translate="text" name="ultra3matte" text="Matte Black"> + <initSequence>IK\002\000\000\121</initSequence> + <Shades> + <shade count="3">1.000000 0.278000 0.093000</shade> + <shade count="2">1.000000 0.340000</shade> + <shade count="2">1.000000 0.250000</shade> + <shade count="1">1.000000</shade> + <shade count="1">1.000000</shade> + <shade count="1">1.000000</shade> + <shade count="1">1.000000</shade> + <shade count="1">1.000000</shade> + <shade count="1">1.000000</shade> + <shade count="1">1.000000</shade> + </Shades> + + <InkName translate="text" name="PhotoCMYK8" text="Eight Color Photo" InkID="CcMmYKk"> + <Channels> + <channel name="photo3_black" index="0"> + <subchannel color="0" subchannel="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + <SubchannelTransitionParam name="DarkGrayTrans"/> + </subchannel> + <subchannel color="0" subchannel="1" name="LightBlack" text="Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + <SubchannelTransitionParam name="DarkGrayTrans"/> + <SubchannelValueParam name="DarkGrayValue"/> + <SubchannelScaleParam name="DarkGrayScale"/> + </subchannel> + <subchannel color="0" subchannel="3" name="LightLightBlack" text="Light Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + <SubchannelTransitionParam name="LightGrayTrans"/> + <SubchannelValueParam name="LightGrayValue"/> + <SubchannelScaleParam name="LightGrayScale"/> + </subchannel> + </channel> + <channel name="photo_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" subchannel="0" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + </subchannel> + <subchannel color="2" subchannel="1" name="LightCyan" text="Light Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + <SubchannelValueParam name="LightCyanValue"/> + <SubchannelScaleParam name="LightCyanScale"/> + </subchannel> + </channel> + <channel name="photo_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" subchannel="0" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + </subchannel> + <subchannel color="1" subchannel="1" name="LightMagenta" text="Light Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + <SubchannelValueParam name="LightMagentaValue"/> + <SubchannelScaleParam name="LightMagentaScale"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="PhotoCMYK7" text="Seven Color Photo" InkID="CcMmYKk"> + <Channels> + <channel name="photo2_black" index="0"> + <subchannel color="0" subchannel="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + <SubchannelTransitionParam name="GrayTrans"/> + </subchannel> + <subchannel color="0" subchannel="1" name="LightBlack" text="Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + <SubchannelTransitionParam name="GrayTrans"/> + <SubchannelValueParam name="GrayValue"/> + <SubchannelScaleParam name="GrayScale"/> + </subchannel> + </channel> + <channel name="photo_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" subchannel="0" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + </subchannel> + <subchannel color="2" subchannel="1" name="LightCyan" text="Light Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + <SubchannelValueParam name="LightCyanValue"/> + <SubchannelScaleParam name="LightCyanScale"/> + </subchannel> + </channel> + <channel name="photo_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" subchannel="0" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + </subchannel> + <subchannel color="1" subchannel="1" name="LightMagenta" text="Light Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + <SubchannelValueParam name="LightMagentaValue"/> + <SubchannelScaleParam name="LightMagentaScale"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="PhotoCMYK" text="Six Color Photo" InkID="CcMmYK"> + <Channels> + <channel name="black" index="0"> + <subchannel color="0" subchannel="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="photo_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" subchannel="0" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + </subchannel> + <subchannel color="2" subchannel="1" name="LightCyan" text="Light Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + <SubchannelValueParam name="LightCyanValue"/> + <SubchannelScaleParam name="LightCyanScale"/> + </subchannel> + </channel> + <channel name="photo_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" subchannel="0" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + </subchannel> + <subchannel color="1" subchannel="1" name="LightMagenta" text="Light Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + <SubchannelValueParam name="LightMagentaValue"/> + <SubchannelScaleParam name="LightMagentaScale"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="PhotoCMY" text="Five Color Photo Composite" InkID="CcMmYK"> + <Channels> + <channel name="photo_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" subchannel="0" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + </subchannel> + <subchannel color="2" subchannel="1" name="LightCyan" text="Light Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + <SubchannelTransitionParam name="LightCyanTrans"/> + <SubchannelValueParam name="LightCyanValue"/> + <SubchannelScaleParam name="LightCyanScale"/> + </subchannel> + </channel> + <channel name="photo_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" subchannel="0" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + </subchannel> + <subchannel color="1" subchannel="1" name="LightMagenta" text="Light Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + <SubchannelTransitionParam name="LightMagentaTrans"/> + <SubchannelValueParam name="LightMagentaValue"/> + <SubchannelScaleParam name="LightMagentaScale"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="CMYK" text="Four Color Standard" InkID="CMYK"> + <Channels> + <channel name="black" index="0"> + <subchannel color="0" subchannel="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="standard_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="standard_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="CMY" text="Three Color Composite" InkID="CMYK"> + <Channels> + <channel name="standard_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="standard_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="PhysicalCMYKkk" text="Eight Color Raw" InkID="Extended"> + <Channels> + <channel name="black" index="0"> + <subchannel color="0" subchannel="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="extended_black" index="1"> + <subchannel color="0" subchannel="1" name="LightBlack" text="Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="extended_photo3_black" index="2"> + <subchannel color="0" subchannel="3" name="LightLightBlack" text="Light Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="standard_cyan" index="3"> + <subchannel color="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="extended_cyan" index="4"> + <subchannel color="2" subchannel="1" name="LightCyan" text="Light Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="standard_magenta" index="5"> + <subchannel color="1" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="extended_magenta" index="6"> + <subchannel color="1" subchannel="1" name="LightMagenta" text="Light Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="7"> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="PhysicalCMYKkkOG" text="Ten Color Raw" InkID="Extended"> + <Channels> + <channel name="black" index="0"> + <subchannel color="0" subchannel="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="extended_black" index="1"> + <subchannel color="0" subchannel="1" name="LightBlack" text="Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="extended_photo3_black" index="2"> + <subchannel color="0" subchannel="3" name="LightLightBlack" text="Light Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="standard_cyan" index="3"> + <subchannel color="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="extended_cyan" index="4"> + <subchannel color="2" subchannel="1" name="LightCyan" text="Light Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="standard_magenta" index="5"> + <subchannel color="1" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="extended_magenta" index="6"> + <subchannel color="1" subchannel="1" name="LightMagenta" text="Light Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="standard_yellow" index="7"> + <subchannel color="4" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + <channel name="standard_orange" index="8"> + <subchannel color="10" name="Orange" text="Orange" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + <channel name="standard_green" index="9"> + <subchannel color="11" name="Green" text="Green" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> +</InkList> +</escp2InkGroup> +</gutenprint> diff --git a/src/xml/escp2/inks/pro_ultrachrome_k3v4.xml b/src/xml/escp2/inks/pro_ultrachrome_k3v4.xml index b5c3034..df84750 100644 --- a/src/xml/escp2/inks/pro_ultrachrome_k3v4.xml +++ b/src/xml/escp2/inks/pro_ultrachrome_k3v4.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="pro_ultrachrome_k3v4"> +<escp2InkGroup name="pro_ultrachrome_k3v4"> <InkList translate="text" name="ultra3photo" text="Photo Black"> <initSequence>IK\002\000\000\061</initSequence> <Shades> @@ -177,5 +177,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/standard.xml b/src/xml/escp2/inks/standard.xml index 6c811e5..9b13905 100644 --- a/src/xml/escp2/inks/standard.xml +++ b/src/xml/escp2/inks/standard.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="standard"> +<escp2InkGroup name="standard"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -205,5 +205,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/standard_gen0.xml b/src/xml/escp2/inks/standard_gen0.xml index 32f36c0..5b7ee5d 100644 --- a/src/xml/escp2/inks/standard_gen0.xml +++ b/src/xml/escp2/inks/standard_gen0.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="standard_gen0"> +<escp2InkGroup name="standard_gen0"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -205,5 +205,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/sx445.xml b/src/xml/escp2/inks/sx445.xml new file mode 100644 index 0000000..7abb32f --- /dev/null +++ b/src/xml/escp2/inks/sx445.xml @@ -0,0 +1,139 @@ +<?xml version="1.0"?> + +<gutenprint xmlns="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint.xsd"> +<copyright> + * Copyright 2008 Robert Krawitz (rlk@alum.mit.edu) + * + * 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. +</copyright> +<escp2InkGroup name="nx100"> +<InkList translate="text" name="None" text="EPSON Standard Inks"> + <Shades> + <shade count="1">1.000000</shade> + <shade count="1">1.000000</shade> + <shade count="1">1.000000</shade> + <shade count="1">1.000000</shade> + </Shades> + + <InkName translate="text" name="CMYK" text="Four Color Standard" InkID="CMYK"> + <Channels> + <channel name="c64_black" index="0"> + <subchannel color="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="c64_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="c64_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" headOffset="129" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="c64_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" headOffset="257" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="RGB" text="Three Color Composite" InkID="CMYK"> + <Channels> + <channel name="c64_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="c64_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" headOffset="129" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="c64_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" headOffset="257" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="PhysicalBlack" text="One Color Raw" InkID="Extended"> + <Channels> + <channel name="standard_black" index="0"> + <subchannel color="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="PhysicalCMY" text="Three Color Raw" InkID="Extended"> + <Channels> + <channel name="c64_cyan" index="0"> + <subchannel color="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="c64_magenta" index="1"> + <subchannel color="1" headOffset="129" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="c64_yellow" index="2"> + <subchannel color="4" headOffset="257" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="PhysicalCMYK" text="Four Color Raw" InkID="Extended"> + <Channels> + <channel name="c64_black" index="0"> + <subchannel color="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="c64_cyan" index="1"> + <subchannel color="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="c64_magenta" index="2"> + <subchannel color="1" headOffset="129" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="c64_yellow" index="3"> + <subchannel color="4" headOffset="257" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> +</InkList> +</escp2InkGroup> +</gutenprint> diff --git a/src/xml/escp2/inks/ultrachrome.xml b/src/xml/escp2/inks/ultrachrome.xml index e82a5e1..1c180cf 100644 --- a/src/xml/escp2/inks/ultrachrome.xml +++ b/src/xml/escp2/inks/ultrachrome.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="ultrachrome"> +<escp2InkGroup name="ultrachrome"> <InkList translate="text" name="ultraphoto" text="UltraChrome Photo Black"> <Shades> <shade count="2">1.000000 0.480000</shade> @@ -786,5 +786,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/wf40.xml b/src/xml/escp2/inks/wf40.xml index 72c5a26..177fdc9 100644 --- a/src/xml/escp2/inks/wf40.xml +++ b/src/xml/escp2/inks/wf40.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="wf40"> +<escp2InkGroup name="wf40"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -138,5 +138,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/wf500.xml b/src/xml/escp2/inks/wf500.xml index 30685b1..073f632 100644 --- a/src/xml/escp2/inks/wf500.xml +++ b/src/xml/escp2/inks/wf500.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="wf500"> +<escp2InkGroup name="wf500"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -135,5 +135,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inks/x80.xml b/src/xml/escp2/inks/x80.xml index 5aa670d..80ce8e8 100644 --- a/src/xml/escp2/inks/x80.xml +++ b/src/xml/escp2/inks/x80.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InkGroup name="x80"> +<escp2InkGroup name="x80"> <InkList translate="text" name="None" text="EPSON Standard Inks"> <Shades> <shade count="1">1.000000</shade> @@ -135,5 +135,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </Channels> </InkName> </InkList> -</escp2:InkGroup> +</escp2InkGroup> </gutenprint> diff --git a/src/xml/escp2/inputslots/Makefile.am b/src/xml/escp2/inputslots/Makefile.am index d6d85d8..5f12b48 100644 --- a/src/xml/escp2/inputslots/Makefile.am +++ b/src/xml/escp2/inputslots/Makefile.am @@ -1,4 +1,4 @@ -## $Id: Makefile.am,v 1.10 2010/08/11 00:26:09 rlk Exp $ +## $Id: Makefile.am,v 1.12 2013/03/17 21:17:37 rlk Exp $ ## Copyright (C) 2008 Robert Krawitz ## ## This program is free software; you can redistribute it and/or modify @@ -33,6 +33,7 @@ pkgxmldata_DATA = \ cd_roll_feed.xml \ cutter_roll_feed.xml \ default.xml \ + default-duplex.xml \ pro3880.xml \ pro_roll_feed.xml \ pro_cutter_roll_feed.xml \ @@ -42,7 +43,8 @@ pkgxmldata_DATA = \ rx680.xml \ rx700.xml \ spro5000.xml \ - standard_roll_feed.xml + standard_roll_feed.xml \ + wf7000.xml xml-stamp: $(pkgxmldata_DATA) Makefile.am -rm -f $@ $@.tmp diff --git a/src/xml/escp2/inputslots/Makefile.in b/src/xml/escp2/inputslots/Makefile.in index 0216513..6a9eb25 100644 --- a/src/xml/escp2/inputslots/Makefile.in +++ b/src/xml/escp2/inputslots/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -21,6 +20,51 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -39,8 +83,8 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/scripts/global.mk +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs subdir = src/xml/escp2/inputslots ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -60,8 +104,25 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -83,12 +144,20 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } am__installdirs = "$(DESTDIR)$(pkgxmldatadir)" DATA = $(pkgxmldata_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -146,6 +215,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -157,6 +227,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -181,6 +252,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -309,6 +382,7 @@ pkgxmldata_DATA = \ cd_roll_feed.xml \ cutter_roll_feed.xml \ default.xml \ + default-duplex.xml \ pro3880.xml \ pro_roll_feed.xml \ pro_cutter_roll_feed.xml \ @@ -318,7 +392,8 @@ pkgxmldata_DATA = \ rx680.xml \ rx700.xml \ spro5000.xml \ - standard_roll_feed.xml + standard_roll_feed.xml \ + wf7000.xml CLEANFILES = xmli18n-tmp.h xml-stamp xml-stamp.tmp EXTRA_DIST = $(pkgxmldata_DATA) @@ -346,6 +421,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -363,8 +439,11 @@ clean-libtool: -rm -rf .libs _libs install-pkgxmldataDATA: $(pkgxmldata_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgxmldatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgxmldatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -378,14 +457,12 @@ uninstall-pkgxmldataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgxmldatadir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgxmldatadir)" && rm -f $$files -tags: TAGS -TAGS: + dir='$(DESTDIR)$(pkgxmldatadir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: distdir: $(DISTFILES) @@ -438,10 +515,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -523,16 +605,17 @@ uninstall-am: uninstall-pkgxmldataDATA .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ - clean-libtool dist-hook distclean distclean-generic \ - distclean-libtool distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgxmldataDATA install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am uninstall uninstall-am uninstall-pkgxmldataDATA + clean-libtool cscopelist-am ctags-am dist-hook distclean \ + distclean-generic distclean-libtool distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgxmldataDATA install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-pkgxmldataDATA @SET_MAKE@ diff --git a/src/xml/escp2/inputslots/artisan.xml b/src/xml/escp2/inputslots/artisan.xml index 96a2418..4ce4872 100644 --- a/src/xml/escp2/inputslots/artisan.xml +++ b/src/xml/escp2/inputslots/artisan.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="artisan"> +<escp2InputSlots name="artisan"> <slot translate="text" name="LowerFront" text="Main Tray"> <Duplex><Tumble/></Duplex> @@ -36,5 +36,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CD/> <InitSequence>PP\003\000\000\002\001</InitSequence> </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/b500.xml b/src/xml/escp2/inputslots/b500.xml index 9e9652a..eacb4bd 100644 --- a/src/xml/escp2/inputslots/b500.xml +++ b/src/xml/escp2/inputslots/b500.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="b500"> +<escp2InputSlots name="b500"> <slot translate="text" name="Rear" text="Rear Tray"> <Duplex><Tumble/></Duplex> @@ -31,5 +31,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <Duplex><Tumble/></Duplex> <InitSequence>PP\003\000\000\001\001</InitSequence> </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/cd.xml b/src/xml/escp2/inputslots/cd.xml index 9ecb61b..6a69256 100644 --- a/src/xml/escp2/inputslots/cd.xml +++ b/src/xml/escp2/inputslots/cd.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="cd"> +<escp2InputSlots name="cd"> <slot translate="text" name="Standard" text="Standard"> <InitSequence>PP\003\000\000\001\377</InitSequence> @@ -30,5 +30,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CD/> <InitSequence>PP\003\000\000\002\001</InitSequence> </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/cd_cutter_roll_feed.xml b/src/xml/escp2/inputslots/cd_cutter_roll_feed.xml index cd702fe..57d8699 100644 --- a/src/xml/escp2/inputslots/cd_cutter_roll_feed.xml +++ b/src/xml/escp2/inputslots/cd_cutter_roll_feed.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="cd_cutter_roll_feed"> +<escp2InputSlots name="cd_cutter_roll_feed"> <slot translate="text" name="Standard" text="Standard"> <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\000PP\003\000\000\001\377</InitSequence> @@ -49,5 +49,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\001PP\003\000\000\001\377</InitSequence> <DeinitSequence>IR\002\000\000\002</DeinitSequence> </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/cd_roll_feed.xml b/src/xml/escp2/inputslots/cd_roll_feed.xml index 259ac2d..7dd8cd0 100644 --- a/src/xml/escp2/inputslots/cd_roll_feed.xml +++ b/src/xml/escp2/inputslots/cd_roll_feed.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="cd_roll_feed"> +<escp2InputSlots name="cd_roll_feed"> <slot translate="text" name="Standard" text="Standard"> <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\000PP\003\000\000\001\377</InitSequence> @@ -43,5 +43,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\001PP\003\000\000\001\377</InitSequence> <DeinitSequence>IR\002\000\000\002</DeinitSequence> </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/cutter_roll_feed.xml b/src/xml/escp2/inputslots/cutter_roll_feed.xml index f316783..0e29b78 100644 --- a/src/xml/escp2/inputslots/cutter_roll_feed.xml +++ b/src/xml/escp2/inputslots/cutter_roll_feed.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="cutter_roll_feed"> +<escp2InputSlots name="cutter_roll_feed"> <slot translate="text" name="Standard" text="Standard"> <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\000</InitSequence> @@ -38,5 +38,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\001</InitSequence> <DeinitSequence>IR\002\000\000\002</DeinitSequence> </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/default-duplex.xml b/src/xml/escp2/inputslots/default-duplex.xml new file mode 100644 index 0000000..7f3acb3 --- /dev/null +++ b/src/xml/escp2/inputslots/default-duplex.xml @@ -0,0 +1,28 @@ +<?xml version="1.0"?> + +<gutenprint xmlns="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint.xsd"> +<copyright> + * Copyright 2008 Robert Krawitz (rlk@alum.mit.edu) + * + * 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. +</copyright> +<escp2InputSlots name="default-duplex"> + <slot translate="text" name="Main" text="Main Input"> + <Duplex><Tumble/></Duplex> + </slot> +</escp2InputSlots> +</gutenprint> diff --git a/src/xml/escp2/inputslots/default.xml b/src/xml/escp2/inputslots/default.xml index 44e829c..5070744 100644 --- a/src/xml/escp2/inputslots/default.xml +++ b/src/xml/escp2/inputslots/default.xml @@ -20,5 +20,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="default"/> +<escp2InputSlots name="default"/> </gutenprint> diff --git a/src/xml/escp2/inputslots/pro3880.xml b/src/xml/escp2/inputslots/pro3880.xml index a11765a..7a06e69 100644 --- a/src/xml/escp2/inputslots/pro3880.xml +++ b/src/xml/escp2/inputslots/pro3880.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="pro3880"> +<escp2InputSlots name="pro3880"> <slot translate="text" name="Standard" text="Standard"> <InitSequence>IR\002\000\000\003PP\003\000\000\001\000</InitSequence> @@ -38,5 +38,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/pro_cutter_roll_feed.xml b/src/xml/escp2/inputslots/pro_cutter_roll_feed.xml index 1b4a51d..a617a25 100644 --- a/src/xml/escp2/inputslots/pro_cutter_roll_feed.xml +++ b/src/xml/escp2/inputslots/pro_cutter_roll_feed.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="pro_cutter_roll_feed"> +<escp2InputSlots name="pro_cutter_roll_feed"> <slot translate="text" name="Standard" text="Standard"> <InitSequence>IR\002\000\003\001EX\006\000\000\000\000\000\005\000PP\003\000\000\001\377SN\003\000\000\204\000</InitSequence> @@ -55,5 +55,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\001PP\003\000\000\003\001SN\003\000\000\204\000</InitSequence> <DeinitSequence>IR\002\000\000\000</DeinitSequence> </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/pro_roll_feed.xml b/src/xml/escp2/inputslots/pro_roll_feed.xml index 98cf0b7..abaa4d0 100644 --- a/src/xml/escp2/inputslots/pro_roll_feed.xml +++ b/src/xml/escp2/inputslots/pro_roll_feed.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="pro_roll_feed"> +<escp2InputSlots name="pro_roll_feed"> <slot translate="text" name="Standard" text="Standard"> <InitSequence>PP\003\000\000\002\000</InitSequence> @@ -30,5 +30,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <RollFeed/> <InitSequence>PP\003\000\000\003\000</InitSequence> </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/r1800.xml b/src/xml/escp2/inputslots/r1800.xml index f8ad994..a26b60c 100644 --- a/src/xml/escp2/inputslots/r1800.xml +++ b/src/xml/escp2/inputslots/r1800.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="r1800"> +<escp2InputSlots name="r1800"> <slot translate="text" name="Standard" text="Standard"> <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\000PP\003\000\000\001\377</InitSequence> @@ -48,5 +48,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <InitSequence>PM\002\000\000\000IR\002\000\000\001EX\006\000\000\000\000\000\005\000FP\003\000\000\000\000PP\003\000\000\002\001</InitSequence> <DeinitSequence>IR\002\000\000\000</DeinitSequence> </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/r2400.xml b/src/xml/escp2/inputslots/r2400.xml index 82a2a50..6630a09 100644 --- a/src/xml/escp2/inputslots/r2400.xml +++ b/src/xml/escp2/inputslots/r2400.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="r2400"> +<escp2InputSlots name="r2400"> <slot translate="text" name="Standard" text="Standard"> <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\000PP\003\000\000\001\377</InitSequence> @@ -43,5 +43,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\001PP\003\000\000\003\001</InitSequence> <DeinitSequence>IR\002\000\000\002</DeinitSequence> </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/r2880.xml b/src/xml/escp2/inputslots/r2880.xml index 17f709a..181cc15 100644 --- a/src/xml/escp2/inputslots/r2880.xml +++ b/src/xml/escp2/inputslots/r2880.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="r2400"> +<escp2InputSlots name="r2400"> <slot translate="text" name="Standard" text="Standard"> <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\000PP\003\000\000\001\377</InitSequence> @@ -48,5 +48,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\001PP\003\000\000\003\001</InitSequence> <DeinitSequence>IR\002\000\000\002</DeinitSequence> </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/rx680.xml b/src/xml/escp2/inputslots/rx680.xml index 64bf344..a124f46 100644 --- a/src/xml/escp2/inputslots/rx680.xml +++ b/src/xml/escp2/inputslots/rx680.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="rx680"> +<escp2InputSlots name="rx680"> <slot translate="text" name="Rear" text="Rear Tray"> <Duplex><Tumble/></Duplex> @@ -36,5 +36,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CD/> <InitSequence>PP\003\000\000\002\001</InitSequence> </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/rx700.xml b/src/xml/escp2/inputslots/rx700.xml index de405dd..c9088d1 100644 --- a/src/xml/escp2/inputslots/rx700.xml +++ b/src/xml/escp2/inputslots/rx700.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="rx700"> +<escp2InputSlots name="rx700"> <slot translate="text" name="Rear" text="Rear Tray"> <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\000PP\003\000\000\001\000</InitSequence> @@ -42,5 +42,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\000PP\003\000\000\002\000</InitSequence> <DeinitSequence>IR\002\000\000\000</DeinitSequence> </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/spro5000.xml b/src/xml/escp2/inputslots/spro5000.xml index 0900d1a..8ce630a 100644 --- a/src/xml/escp2/inputslots/spro5000.xml +++ b/src/xml/escp2/inputslots/spro5000.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="spro5000"> +<escp2InputSlots name="spro5000"> <slot translate="text" name="CutSheet1" text="Cut Sheet Bin 1"> <InitSequence>PP\003\000\000\001\001</InitSequence> @@ -37,5 +37,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <slot translate="text" name="ManualSelect" text="Manual Selection"> <InitSequence>PP\003\000\000\002\001</InitSequence> </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/standard_roll_feed.xml b/src/xml/escp2/inputslots/standard_roll_feed.xml index 818310e..0396de6 100644 --- a/src/xml/escp2/inputslots/standard_roll_feed.xml +++ b/src/xml/escp2/inputslots/standard_roll_feed.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:InputSlots name="standard_roll_feed"> +<escp2InputSlots name="standard_roll_feed"> <slot translate="text" name="Standard" text="Standard"> <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\000</InitSequence> @@ -32,5 +32,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <InitSequence>IR\002\000\000\001EX\006\000\000\000\000\000\005\001</InitSequence> <DeinitSequence>IR\002\000\000\002</DeinitSequence> </slot> -</escp2:InputSlots> +</escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/inputslots/wf7000.xml b/src/xml/escp2/inputslots/wf7000.xml new file mode 100644 index 0000000..f2fa7c6 --- /dev/null +++ b/src/xml/escp2/inputslots/wf7000.xml @@ -0,0 +1,35 @@ +<?xml version="1.0"?> + +<gutenprint xmlns="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint.xsd"> +<copyright> + * Copyright 2008 Robert Krawitz (rlk@alum.mit.edu) + * + * 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. +</copyright> +<escp2InputSlots name="wf7000"> + + <slot translate="text" name="tray1" text="Tray 1"> + <Duplex><Tumble/></Duplex> + <InitSequence>PP\003\000\000\001\001</InitSequence> + </slot> + + <slot translate="text" name="tray2" text="Tray 2"> + <Duplex><Tumble/></Duplex> + <InitSequence>PP\003\000\000\001\001</InitSequence> + </slot> +</escp2InputSlots> +</gutenprint> diff --git a/src/xml/escp2/media/Makefile.am b/src/xml/escp2/media/Makefile.am index 56228bc..09ea15b 100644 --- a/src/xml/escp2/media/Makefile.am +++ b/src/xml/escp2/media/Makefile.am @@ -1,4 +1,4 @@ -## $Id: Makefile.am,v 1.15 2010/08/11 00:26:09 rlk Exp $ +## $Id: Makefile.am,v 1.16 2014/01/23 13:22:42 rlk Exp $ ## Copyright (C) 2008 Robert Krawitz ## ## This program is free software; you can redistribute it and/or modify @@ -61,6 +61,7 @@ pkgxmldata_DATA = \ pro_ultrachrome.xml \ pro_ultrachrome_k3.xml \ pro_ultrachrome_k3v.xml \ + pro_ultrachrome_k3v10.xml \ r800.xml \ standard.xml \ standard_gen0.xml \ diff --git a/src/xml/escp2/media/Makefile.in b/src/xml/escp2/media/Makefile.in index 50acdf6..11813e8 100644 --- a/src/xml/escp2/media/Makefile.in +++ b/src/xml/escp2/media/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -21,6 +20,51 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -39,8 +83,8 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/scripts/global.mk +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs subdir = src/xml/escp2/media ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -60,8 +104,25 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -83,12 +144,20 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } am__installdirs = "$(DESTDIR)$(pkgxmldatadir)" DATA = $(pkgxmldata_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -146,6 +215,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -157,6 +227,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -181,6 +252,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -337,6 +410,7 @@ pkgxmldata_DATA = \ pro_ultrachrome.xml \ pro_ultrachrome_k3.xml \ pro_ultrachrome_k3v.xml \ + pro_ultrachrome_k3v10.xml \ r800.xml \ standard.xml \ standard_gen0.xml \ @@ -370,6 +444,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -387,8 +462,11 @@ clean-libtool: -rm -rf .libs _libs install-pkgxmldataDATA: $(pkgxmldata_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgxmldatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgxmldatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -402,14 +480,12 @@ uninstall-pkgxmldataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgxmldatadir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgxmldatadir)" && rm -f $$files -tags: TAGS -TAGS: + dir='$(DESTDIR)$(pkgxmldatadir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: distdir: $(DISTFILES) @@ -462,10 +538,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -547,16 +628,17 @@ uninstall-am: uninstall-pkgxmldataDATA .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ - clean-libtool dist-hook distclean distclean-generic \ - distclean-libtool distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgxmldataDATA install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am uninstall uninstall-am uninstall-pkgxmldataDATA + clean-libtool cscopelist-am ctags-am dist-hook distclean \ + distclean-generic distclean-libtool distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgxmldataDATA install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-pkgxmldataDATA @SET_MAKE@ diff --git a/src/xml/escp2/media/artisan.xml b/src/xml/escp2/media/artisan.xml index 576f7cb..8386e0b 100644 --- a/src/xml/escp2/media/artisan.xml +++ b/src/xml/escp2/media/artisan.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="claria"> +<escp2Papers name="claria"> <feature name="PlatenGap"/> <feature name="PaperMedia"/> <feature name="PrintMethod"/> @@ -1313,5 +1313,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/b500.xml b/src/xml/escp2/media/b500.xml index 198ec4b..01e6ded 100644 --- a/src/xml/escp2/media/b500.xml +++ b/src/xml/escp2/media/b500.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="b500"> +<escp2Papers name="b500"> <feature name="PlatenGap"/> <feature name="PaperMedia"/> <feature name="PrintMethod"/> @@ -891,5 +891,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/c120.xml b/src/xml/escp2/media/c120.xml index 6905b8a..bb3c450 100644 --- a/src/xml/escp2/media/c120.xml +++ b/src/xml/escp2/media/c120.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="c120"> +<escp2Papers name="c120"> <feature name="PlatenGap"/> <feature name="PaperMedia"/> <feature name="PrintMethod"/> @@ -1138,5 +1138,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/c64.xml b/src/xml/escp2/media/c64.xml index 47ec5e7..a26ac8c 100644 --- a/src/xml/escp2/media/c64.xml +++ b/src/xml/escp2/media/c64.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="c64"> +<escp2Papers name="c64"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -1107,5 +1107,5 @@ class="photo"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/c80.xml b/src/xml/escp2/media/c80.xml index b9b37d9..6dc4f22 100644 --- a/src/xml/escp2/media/c80.xml +++ b/src/xml/escp2/media/c80.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="c80"> +<escp2Papers name="c80"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -1109,5 +1109,5 @@ class="photo" PreferredInktype="RGB"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/c82.xml b/src/xml/escp2/media/c82.xml index 1f2b76a..8e0b560 100644 --- a/src/xml/escp2/media/c82.xml +++ b/src/xml/escp2/media/c82.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="c82"> +<escp2Papers name="c82"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -1107,5 +1107,5 @@ class="photo"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/claria.xml b/src/xml/escp2/media/claria.xml index c54e054..7b14cf7 100644 --- a/src/xml/escp2/media/claria.xml +++ b/src/xml/escp2/media/claria.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="claria"> +<escp2Papers name="claria"> <feature name="PlatenGap"/> <feature name="PaperMedia"/> <feature name="PrintMethod"/> @@ -2313,5 +2313,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/claria1400.xml b/src/xml/escp2/media/claria1400.xml index d521ef0..465fc7d 100644 --- a/src/xml/escp2/media/claria1400.xml +++ b/src/xml/escp2/media/claria1400.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="claria"> +<escp2Papers name="claria"> <feature name="PlatenGap"/> <feature name="PaperMedia"/> <feature name="PrintMethod"/> @@ -2312,5 +2312,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/cmy.xml b/src/xml/escp2/media/cmy.xml index 300da1e..fe30094 100644 --- a/src/xml/escp2/media/cmy.xml +++ b/src/xml/escp2/media/cmy.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="cmy"> +<escp2Papers name="cmy"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -442,5 +442,5 @@ class="premium"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/cmykrb.xml b/src/xml/escp2/media/cmykrb.xml index 22ed8c0..376b95e 100644 --- a/src/xml/escp2/media/cmykrb.xml +++ b/src/xml/escp2/media/cmykrb.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="cmykrb"> +<escp2Papers name="cmykrb"> <feature name="PaperMedia"/> <feature name="PrintMethod"/> <Curves> @@ -1462,5 +1462,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="curve" name="SatMap" ref="cmykrbMatteSat"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/cmykro.xml b/src/xml/escp2/media/cmykro.xml index f923a3a..943ec7a 100644 --- a/src/xml/escp2/media/cmykro.xml +++ b/src/xml/escp2/media/cmykro.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="cmykro"> +<escp2Papers name="cmykro"> <feature name="PlatenGap"/> <feature name="PaperMedia"/> <feature name="PrintMethod"/> @@ -1464,5 +1464,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="curve" name="SatMap" ref="cmykroMatteSat"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/cx3650.xml b/src/xml/escp2/media/cx3650.xml index f1638c1..e87ee30 100644 --- a/src/xml/escp2/media/cx3650.xml +++ b/src/xml/escp2/media/cx3650.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="cx3650"> +<escp2Papers name="cx3650"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -1107,5 +1107,5 @@ class="photo"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/f360.xml b/src/xml/escp2/media/f360.xml index d9762a1..4a5334d 100644 --- a/src/xml/escp2/media/f360.xml +++ b/src/xml/escp2/media/f360.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="f360"> +<escp2Papers name="f360"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -1107,5 +1107,5 @@ class="photo"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/f360_photo.xml b/src/xml/escp2/media/f360_photo.xml index 375d452..b1b13f9 100644 --- a/src/xml/escp2/media/f360_photo.xml +++ b/src/xml/escp2/media/f360_photo.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="f360_photo"> +<escp2Papers name="f360_photo"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -497,5 +497,5 @@ class="premium"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/f360_photo7_japan.xml b/src/xml/escp2/media/f360_photo7_japan.xml index eec937c..19c4f9c 100644 --- a/src/xml/escp2/media/f360_photo7_japan.xml +++ b/src/xml/escp2/media/f360_photo7_japan.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="f360_photo7_japan"> +<escp2Papers name="f360_photo7_japan"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -497,5 +497,5 @@ class="premium"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/f360_ultrachrome.xml b/src/xml/escp2/media/f360_ultrachrome.xml index 5a0bdbd..8249d00 100644 --- a/src/xml/escp2/media/f360_ultrachrome.xml +++ b/src/xml/escp2/media/f360_ultrachrome.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="f360_ultrachrome"> +<escp2Papers name="f360_ultrachrome"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -914,5 +914,5 @@ PreferredInkset="UltraMatte"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/f360_ultrachrome_k3.xml b/src/xml/escp2/media/f360_ultrachrome_k3.xml index ff77158..c43628c 100644 --- a/src/xml/escp2/media/f360_ultrachrome_k3.xml +++ b/src/xml/escp2/media/f360_ultrachrome_k3.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="f360_ultrachrome_k3"> +<escp2Papers name="f360_ultrachrome_k3"> <feature name="PlatenGap"/> <feature name="PaperMedia"/> <feature name="PrintMethod"/> @@ -1464,5 +1464,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/f360_ultrachrome_k3v.xml b/src/xml/escp2/media/f360_ultrachrome_k3v.xml index ba9610a..9d91d34 100644 --- a/src/xml/escp2/media/f360_ultrachrome_k3v.xml +++ b/src/xml/escp2/media/f360_ultrachrome_k3v.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="f360_ultrachrome_k3v"> +<escp2Papers name="f360_ultrachrome_k3v"> <feature name="PlatenGap"/> <feature name="PaperMedia"/> <feature name="PrintMethod"/> @@ -1464,5 +1464,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/nx100.xml b/src/xml/escp2/media/nx100.xml index e52e1bc..b49dcda 100644 --- a/src/xml/escp2/media/nx100.xml +++ b/src/xml/escp2/media/nx100.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="c120"> +<escp2Papers name="c120"> <feature name="PlatenGap"/> <feature name="PaperMedia"/> <feature name="PrintMethod"/> @@ -976,5 +976,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/photo_gen0.xml b/src/xml/escp2/media/photo_gen0.xml index 9db93ed..4856cf1 100644 --- a/src/xml/escp2/media/photo_gen0.xml +++ b/src/xml/escp2/media/photo_gen0.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="photo_gen0"> +<escp2Papers name="photo_gen0"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -1411,5 +1411,5 @@ class="premium"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/photo_gen1.xml b/src/xml/escp2/media/photo_gen1.xml index a2bf3c8..612f070 100644 --- a/src/xml/escp2/media/photo_gen1.xml +++ b/src/xml/escp2/media/photo_gen1.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="photo_gen1"> +<escp2Papers name="photo_gen1"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -1430,5 +1430,5 @@ class="premium"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/photo_gen2.xml b/src/xml/escp2/media/photo_gen2.xml index da3e7c7..17b0851 100644 --- a/src/xml/escp2/media/photo_gen2.xml +++ b/src/xml/escp2/media/photo_gen2.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="photo_gen2"> +<escp2Papers name="photo_gen2"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -1430,5 +1430,5 @@ class="premium"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/photo_gen3.xml b/src/xml/escp2/media/photo_gen3.xml index 5841d9c..6c41472 100644 --- a/src/xml/escp2/media/photo_gen3.xml +++ b/src/xml/escp2/media/photo_gen3.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="photo_gen3"> +<escp2Papers name="photo_gen3"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -1753,5 +1753,5 @@ class="premium"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/photo_gen3_4.xml b/src/xml/escp2/media/photo_gen3_4.xml index 71b2c83..c7af620 100644 --- a/src/xml/escp2/media/photo_gen3_4.xml +++ b/src/xml/escp2/media/photo_gen3_4.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="photo_gen3_4"> +<escp2Papers name="photo_gen3_4"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -1430,5 +1430,5 @@ class="premium"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/photo_gen4.xml b/src/xml/escp2/media/photo_gen4.xml index 4b158cf..97a11b8 100644 --- a/src/xml/escp2/media/photo_gen4.xml +++ b/src/xml/escp2/media/photo_gen4.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="photo_gen4"> +<escp2Papers name="photo_gen4"> <feature name="PlatenGap"/> <feature name="PaperMedia"/> <feature name="PrintMethod"/> @@ -999,5 +999,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/photo_pigment.xml b/src/xml/escp2/media/photo_pigment.xml index ebfea31..46d35ef 100644 --- a/src/xml/escp2/media/photo_pigment.xml +++ b/src/xml/escp2/media/photo_pigment.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="photo_pigment"> +<escp2Papers name="photo_pigment"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -543,5 +543,5 @@ PreferredInkset="UltraMatte"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/picturemate_4.xml b/src/xml/escp2/media/picturemate_4.xml index 1cf7b8f..d02ab66 100644 --- a/src/xml/escp2/media/picturemate_4.xml +++ b/src/xml/escp2/media/picturemate_4.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="picturemate_4"> +<escp2Papers name="picturemate_4"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -103,5 +103,5 @@ PreferredInkset="picturemateMatte"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/picturemate_6.xml b/src/xml/escp2/media/picturemate_6.xml index 5d55fb4..a5dcaf1 100644 --- a/src/xml/escp2/media/picturemate_6.xml +++ b/src/xml/escp2/media/picturemate_6.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="picturemate_6"> +<escp2Papers name="picturemate_6"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -103,5 +103,5 @@ PreferredInkset="picturemateMatte"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/pro3880_ultrachrome_k3v.xml b/src/xml/escp2/media/pro3880_ultrachrome_k3v.xml index 2ed5697..931558a 100644 --- a/src/xml/escp2/media/pro3880_ultrachrome_k3v.xml +++ b/src/xml/escp2/media/pro3880_ultrachrome_k3v.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="pro3880_ultrachrome_k3v"> +<escp2Papers name="pro3880_ultrachrome_k3v"> <feature name="PlatenGap"/> <feature name="PaperThickness"/> <feature name="PaperMedia"/> @@ -1454,5 +1454,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/pro_gen1.xml b/src/xml/escp2/media/pro_gen1.xml index 85bff88..31dd712 100644 --- a/src/xml/escp2/media/pro_gen1.xml +++ b/src/xml/escp2/media/pro_gen1.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="pro_gen1"> +<escp2Papers name="pro_gen1"> <feature name="PaperThickness"/> <feature name="VacuumIntensity"/> <feature name="FeedAdjustment"/> @@ -1451,5 +1451,5 @@ class="premium"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/pro_gen2.xml b/src/xml/escp2/media/pro_gen2.xml index 21424e7..49f78d6 100644 --- a/src/xml/escp2/media/pro_gen2.xml +++ b/src/xml/escp2/media/pro_gen2.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="pro_gen2"> +<escp2Papers name="pro_gen2"> <feature name="PaperThickness"/> <feature name="VacuumIntensity"/> <feature name="FeedAdjustment"/> @@ -1470,5 +1470,5 @@ class="premium"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/pro_pigment.xml b/src/xml/escp2/media/pro_pigment.xml index ba1df50..105a803 100644 --- a/src/xml/escp2/media/pro_pigment.xml +++ b/src/xml/escp2/media/pro_pigment.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="pro_pigment"> +<escp2Papers name="pro_pigment"> <feature name="PaperThickness"/> <feature name="VacuumIntensity"/> <feature name="FeedAdjustment"/> @@ -584,5 +584,5 @@ class="photo"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/pro_ultrachrome.xml b/src/xml/escp2/media/pro_ultrachrome.xml index fef1cd1..53283f6 100644 --- a/src/xml/escp2/media/pro_ultrachrome.xml +++ b/src/xml/escp2/media/pro_ultrachrome.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="pro_ultrachrome"> +<escp2Papers name="pro_ultrachrome"> <Curves> <namedParam name="hue_map"> <curve wrap="wrap" type="linear" gamma="0" piecewise="false"> @@ -937,5 +937,5 @@ PreferredInkset="Ultramatte"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/pro_ultrachrome_k3.xml b/src/xml/escp2/media/pro_ultrachrome_k3.xml index 557a4c1..b9c628d 100644 --- a/src/xml/escp2/media/pro_ultrachrome_k3.xml +++ b/src/xml/escp2/media/pro_ultrachrome_k3.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="pro_ultrachrome_k3"> +<escp2Papers name="pro_ultrachrome_k3"> <feature name="PlatenGap"/> <feature name="PaperThickness"/> <feature name="VacuumIntensity"/> @@ -920,5 +920,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/pro_ultrachrome_k3v.xml b/src/xml/escp2/media/pro_ultrachrome_k3v.xml index a48a9c7..1149102 100644 --- a/src/xml/escp2/media/pro_ultrachrome_k3v.xml +++ b/src/xml/escp2/media/pro_ultrachrome_k3v.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="pro_ultrachrome_k3v"> +<escp2Papers name="pro_ultrachrome_k3v"> <feature name="PlatenGap"/> <feature name="PaperThickness"/> <feature name="VacuumIntensity"/> @@ -921,5 +921,5 @@ PreferredInkset="ultra3matte"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/pro_ultrachrome_k3v10.xml b/src/xml/escp2/media/pro_ultrachrome_k3v10.xml new file mode 100644 index 0000000..1149102 --- /dev/null +++ b/src/xml/escp2/media/pro_ultrachrome_k3v10.xml @@ -0,0 +1,925 @@ +<?xml version="1.0"?> + +<gutenprint xmlns="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint.xsd"> +<copyright> + * Copyright 2008 Robert Krawitz (rlk@alum.mit.edu) + * + * 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. +</copyright> +<escp2Papers name="pro_ultrachrome_k3v"> +<feature name="PlatenGap"/> +<feature name="PaperThickness"/> +<feature name="VacuumIntensity"/> +<feature name="FeedAdjustment"/> +<feature name="PageDryTime"/> +<feature name="ScanDryTime"/> +<feature name="ScanMinDryTime"/> +<Curves> + <namedParam name="hue_map"> + <curve wrap="wrap" type="linear" gamma="0" piecewise="false"> + <sequence count="48" lower-bound="-6" upper-bound="6"> + 0 0.06 0.1 0.1 0.06 0 -0.06 -0.12 + -0.18 -0.21 -0.22 -0.22 -0.22 -0.22 -0.22 -0.22 + -0.22 -0.28 -0.34 -0.4 -0.5 -0.4 -0.3 -0.2 + -0.12 -0.07 -0.04 -0.02 0 0 0 0 + 0 0 -0.03 -0.07 -0.11 -0.15 -0.17 -0.18 + -0.19 -0.2 -0.19 -0.18 -0.16 -0.12 -0.08 -0.04 + </sequence> + </curve> + </namedParam> + <namedParam name="lum_map"> + <curve wrap="wrap" type="linear" gamma="0" piecewise="false"> + <sequence count="48" lower-bound="0" upper-bound="4"> + 0.55 0.57 0.61 0.64 0.67 0.69 0.72 0.75 + 0.83 0.8 0.76 0.76 0.78 0.79 0.83 0.86 + 0.93 0.95 0.97 0.97 0.97 0.97 0.96 0.96 + 0.96 0.97 0.97 0.98 0.99 1 1 1 + 1 0.98 0.97 0.95 0.93 0.91 0.88 0.83 + 0.83 0.71 0.65 0.61 0.58 0.56 0.55 0.55 + </sequence> + </curve> + </namedParam> + <namedParam name="sat_map"> + <curve wrap="wrap" type="linear" gamma="0" piecewise="false"> + <sequence count="48" lower-bound="0" upper-bound="4"> + 1 1 1 1.05 1.1 1.15 1.15 1.15 + 1.15 1.15 1.15 1.1 1.1 1.05 1.05 1 + 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 + 1 1.05 1.15 1.25 1.35 1.45 1.5 1.5 + 1.5 1.5 1.5 1.45 1.35 1.25 1.15 1.05 + </sequence> + </curve> + </namedParam> + <namedParam name="premium_hue_map"> + <curve wrap="wrap" type="linear" gamma="0" piecewise="false"> + <sequence count="48" lower-bound="-6" upper-bound="6"> + 0 0.06 0.1 0.1 0.06 0 -0.06 -0.12 + -0.18 -0.21 -0.22 -0.22 -0.22 -0.22 -0.22 -0.22 + -0.22 -0.28 -0.34 -0.4 -0.5 -0.4 -0.3 -0.2 + -0.12 -0.07 -0.04 -0.02 0 0 0 0 + 0 0 -0.03 -0.07 -0.11 -0.15 -0.19 -0.22 + -0.25 -0.22 -0.19 -0.15 -0.12 -0.1 -0.06 -0.03 + </sequence> + </curve> + </namedParam> + <namedParam name="premium_lum_map"> + <curve wrap="wrap" type="linear" gamma="0" piecewise="false"> + <sequence count="48" lower-bound="0" upper-bound="4"> + 0.55 0.57 0.61 0.64 0.67 0.69 0.72 0.75 + 0.75 0.71 0.7 0.7 0.72 0.76 0.81 0.87 + 0.93 0.95 0.97 0.98 0.98 0.97 0.96 0.96 + 0.96 0.97 0.98 0.98 0.99 1 1 1 + 1 0.98 0.97 0.96 0.95 0.93 0.9 0.87 + 0.83 0.71 0.65 0.61 0.58 0.56 0.55 0.55 + </sequence> + </curve> + </namedParam> + <namedParam name="premium_sat_map"> + <curve wrap="wrap" type="linear" gamma="0" piecewise="false"> + <sequence count="48" lower-bound="0" upper-bound="4"> + 1 1 1 1.05 1.1 1.15 1.15 1.15 + 1.15 1.15 1.15 1.1 1.1 1.05 1.05 1 + 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 + 1 1.05 1.15 1.25 1.35 1.45 1.5 1.5 + 1.5 1.5 1.5 1.45 1.35 1.25 1.15 1.05 + </sequence> + </curve> + </namedParam> +</Curves> +<paper translate="text" name="Plain" text="Plain Paper" class="plain" PreferredInkset="ultra3matte"> + <parameter type="integer" name="PaperMedia">0</parameter> + <parameter type="integer" name="PaperThickness">1</parameter> + <parameter type="integer" name="VacuumIntensity">26</parameter> + <parameter type="integer" name="FeedAdjustment">107</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">0.100000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="Postcard" text="Postcard" class="plain" PreferredInkset="ultra3matte"> + <parameter type="integer" name="PaperMedia">1</parameter> + <parameter type="integer" name="PaperThickness">2</parameter> + <parameter type="integer" name="VacuumIntensity">0</parameter> + <parameter type="integer" name="FeedAdjustment">0</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">0.100000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="GlossyFilm" text="Glossy Film" class="photo" PreferredInkset="ultra3photo"> + <parameter type="integer" name="PaperMedia">7</parameter> + <parameter type="integer" name="PaperThickness">1</parameter> + <parameter type="integer" name="VacuumIntensity">0</parameter> + <parameter type="integer" name="FeedAdjustment">109</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.830000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.830000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="Transparency" text="Transparencies" class="transparency" PreferredInkset="ultra3photo"> + <parameter type="integer" name="PaperMedia">9</parameter> + <parameter type="integer" name="PaperThickness">2</parameter> + <parameter type="integer" name="VacuumIntensity">0</parameter> + <parameter type="integer" name="FeedAdjustment">109</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.830000</parameter> + <parameter type="float" name="SubchannelCutoff">0.750000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.830000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="Envelope" text="Envelopes" class="plain" PreferredInkset="ultra3matte"> + <parameter type="integer" name="PaperMedia">1</parameter> + <parameter type="integer" name="PaperThickness">1</parameter> + <parameter type="integer" name="VacuumIntensity">26</parameter> + <parameter type="integer" name="FeedAdjustment">107</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">0.100000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="BackFilm" text="Back Light Film" class="transparency" PreferredInkset="ultra3photo"> + <parameter type="integer" name="PaperMedia">10</parameter> + <parameter type="integer" name="PaperThickness">1</parameter> + <parameter type="integer" name="VacuumIntensity">0</parameter> + <parameter type="integer" name="FeedAdjustment">109</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.830000</parameter> + <parameter type="float" name="SubchannelCutoff">0.750000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.830000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="Matte" text="Matte Paper" class="good" PreferredInkset="ultra3matte"> + <parameter type="integer" name="PaperMedia">3</parameter> + <parameter type="integer" name="PaperThickness">2</parameter> + <parameter type="integer" name="VacuumIntensity">0</parameter> + <parameter type="integer" name="FeedAdjustment">0</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.920000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.920000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="MatteHeavy" text="Matte Paper Heavyweight" class="good" PreferredInkset="ultra3matte"> + <parameter type="integer" name="PaperMedia">5</parameter> + <parameter type="integer" name="PaperThickness">2</parameter> + <parameter type="integer" name="VacuumIntensity">0</parameter> + <parameter type="integer" name="FeedAdjustment">0</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.920000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.920000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="Inkjet" text="Inkjet Paper" class="good" PreferredInkset="ultra3matte"> + <parameter type="integer" name="PaperMedia">1</parameter> + <parameter type="integer" name="PaperThickness">1</parameter> + <parameter type="integer" name="VacuumIntensity">26</parameter> + <parameter type="integer" name="FeedAdjustment">107</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">0.300000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="Coated" text="Photo Quality Inkjet Paper" class="good" PreferredInkset="ultra3photo"> + <parameter type="integer" name="PaperMedia">3</parameter> + <parameter type="integer" name="PaperThickness">1</parameter> + <parameter type="integer" name="VacuumIntensity">26</parameter> + <parameter type="integer" name="FeedAdjustment">107</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.830000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.830000</parameter> + <parameter type="float" name="SubchannelCutoff">0.400000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="Photo" text="Photo Paper" class="photo" PreferredInkset="ultra3photo"> + <parameter type="integer" name="PaperMedia">6</parameter> + <parameter type="integer" name="PaperThickness">2</parameter> + <parameter type="integer" name="VacuumIntensity">0</parameter> + <parameter type="integer" name="FeedAdjustment">103</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">1.000000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">1.000000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="GlossyPhoto" text="Premium Glossy Photo Paper" class="premium" PreferredInkset="ultra3photo"> + <parameter type="integer" name="PaperMedia">11</parameter> + <parameter type="integer" name="PaperThickness">2</parameter> + <parameter type="integer" name="VacuumIntensity">0</parameter> + <parameter type="integer" name="FeedAdjustment">128</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">0.920000</parameter> + <parameter type="curve" name="HueMap" ref="premium_hue_map"/> + <parameter type="curve" name="LumMap" ref="premium_lum_map"/> + <parameter type="curve" name="SatMap" ref="premium_sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">1.000000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">0.920000</parameter> + <parameter type="curve" name="HueMap" ref="premium_hue_map"/> + <parameter type="curve" name="LumMap" ref="premium_lum_map"/> + <parameter type="curve" name="SatMap" ref="premium_sat_map"/> + </ink> +</paper> + +<paper translate="text" name="Semigloss" text="Premium Semigloss Photo Paper" class="premium" PreferredInkset="ultra3photo"> + <parameter type="integer" name="PaperMedia">12</parameter> + <parameter type="integer" name="PaperThickness">2</parameter> + <parameter type="integer" name="VacuumIntensity">0</parameter> + <parameter type="integer" name="FeedAdjustment">128</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">0.920000</parameter> + <parameter type="curve" name="HueMap" ref="premium_hue_map"/> + <parameter type="curve" name="LumMap" ref="premium_lum_map"/> + <parameter type="curve" name="SatMap" ref="premium_sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">0.800000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">0.920000</parameter> + <parameter type="curve" name="HueMap" ref="premium_hue_map"/> + <parameter type="curve" name="LumMap" ref="premium_lum_map"/> + <parameter type="curve" name="SatMap" ref="premium_sat_map"/> + </ink> +</paper> + +<paper translate="text" name="Luster" text="Premium Luster Photo Paper" class="premium" PreferredInkset="ultra3photo"> + <parameter type="integer" name="PaperMedia">13</parameter> + <parameter type="integer" name="PaperThickness">2</parameter> + <parameter type="integer" name="VacuumIntensity">0</parameter> + <parameter type="integer" name="FeedAdjustment">128</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">0.920000</parameter> + <parameter type="curve" name="HueMap" ref="premium_hue_map"/> + <parameter type="curve" name="LumMap" ref="premium_lum_map"/> + <parameter type="curve" name="SatMap" ref="premium_sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">0.800000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">0.920000</parameter> + <parameter type="curve" name="HueMap" ref="premium_hue_map"/> + <parameter type="curve" name="LumMap" ref="premium_lum_map"/> + <parameter type="curve" name="SatMap" ref="premium_sat_map"/> + </ink> +</paper> + +<paper translate="text" name="ArchivalMatte" text="Archival Matte Paper" class="premium" PreferredInkset="ultra3matte"> + <parameter type="integer" name="PaperMedia">15</parameter> + <parameter type="integer" name="PaperThickness">2</parameter> + <parameter type="integer" name="VacuumIntensity">0</parameter> + <parameter type="integer" name="FeedAdjustment">0</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.920000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.920000</parameter> + <parameter type="float" name="SubchannelCutoff">0.400000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">0.600000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + </paper> + +<paper translate="text" name="WaterColorRadiant" text="Watercolor Paper - Radiant White" class="premium" PreferredInkset="ultra3matte"> + <parameter type="integer" name="PaperMedia">15</parameter> + <parameter type="integer" name="PaperThickness">2</parameter> + <parameter type="integer" name="VacuumIntensity">0</parameter> + <parameter type="integer" name="FeedAdjustment">0</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.920000</parameter> + <parameter type="float" name="SubchannelCutoff">0.800000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.920000</parameter> + <parameter type="float" name="SubchannelCutoff">0.400000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="GlossyPaper" text="Photo Quality Glossy Paper" class="photo" PreferredInkset="ultra3photo"> + <parameter type="integer" name="PaperMedia">19</parameter> + <parameter type="integer" name="PaperThickness">1</parameter> + <parameter type="integer" name="VacuumIntensity">26</parameter> + <parameter type="integer" name="FeedAdjustment">107</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.830000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.830000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="Ilford" text="Ilford Heavy Paper" class="premium" PreferredInkset="ultra3matte"> + <parameter type="integer" name="PaperMedia">15</parameter> + <parameter type="integer" name="PaperThickness">2</parameter> + <parameter type="integer" name="VacuumIntensity">0</parameter> + <parameter type="integer" name="FeedAdjustment">128</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.830000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.830000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="ColorLife" text="ColorLife Paper" class="premium" PreferredInkset="ultra3photo"> + <parameter type="integer" name="PaperMedia">23</parameter> + <parameter type="integer" name="PaperThickness">2</parameter> + <parameter type="integer" name="VacuumIntensity">0</parameter> + <parameter type="integer" name="FeedAdjustment">103</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.830000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.830000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="Other" text="Other" class="plain" +PreferredInkset="ultra3matte"> + <parameter type="integer" name="PaperThickness">1</parameter> + <parameter type="integer" name="VacuumIntensity">26</parameter> + <parameter type="integer" name="FeedAdjustment">107</parameter> + + <ink translate="text" name="ultra3photo" text="UltraChrome Photo Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">0.500000</parameter> + <parameter type="float" name="BlackTrans">1.000000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + + <ink translate="text" name="ultra3matte" text="UltraChrome Matte Black"> + <parameter type="float" name="Density">0.720000</parameter> + <parameter type="float" name="SubchannelCutoff">0.100000</parameter> + <parameter type="float" name="BlackTrans">0.400000</parameter> + <parameter type="float" name="GCRLower">0.000000</parameter> + <parameter type="float" name="GCRUpper">0.000000</parameter> + <parameter type="float" name="CyanBalance">0.900000</parameter> + <parameter type="float" name="MagentaBalance">1.000000</parameter> + <parameter type="float" name="YellowBalance">1.000000</parameter> + <parameter type="float" name="BlackDensity">1.000000</parameter> + <parameter type="float" name="Saturation">1.000000</parameter> + <parameter type="float" name="Gamma">1.000000</parameter> + <parameter type="curve" name="HueMap" ref="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> +</escp2Papers> +</gutenprint> diff --git a/src/xml/escp2/media/r800.xml b/src/xml/escp2/media/r800.xml index 6634d10..52869e7 100644 --- a/src/xml/escp2/media/r800.xml +++ b/src/xml/escp2/media/r800.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="r800"> +<escp2Papers name="r800"> <Curves> <namedParam name="cmykrbPhotoHue"> <curve wrap="wrap" type="linear" gamma="0" piecewise="false"> @@ -833,5 +833,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="curve" name="SatMap" ref="cmykrbMatteSat"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/standard.xml b/src/xml/escp2/media/standard.xml index cdc0e88..c8dfce9 100644 --- a/src/xml/escp2/media/standard.xml +++ b/src/xml/escp2/media/standard.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="standard"> +<escp2Papers name="standard"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -1107,5 +1107,5 @@ class="premium"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/standard_gen0.xml b/src/xml/escp2/media/standard_gen0.xml index a4d5e98..3c10ef9 100644 --- a/src/xml/escp2/media/standard_gen0.xml +++ b/src/xml/escp2/media/standard_gen0.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="standard_gen0"> +<escp2Papers name="standard_gen0"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -1088,5 +1088,5 @@ class="premium"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/ultrachrome.xml b/src/xml/escp2/media/ultrachrome.xml index 2c093f1..7e844ec 100644 --- a/src/xml/escp2/media/ultrachrome.xml +++ b/src/xml/escp2/media/ultrachrome.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="ultrachrome"> +<escp2Papers name="ultrachrome"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -914,5 +914,5 @@ PreferredInkset="UltraMatte"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/wf500.xml b/src/xml/escp2/media/wf500.xml index 4a92aac..fdf8a00 100644 --- a/src/xml/escp2/media/wf500.xml +++ b/src/xml/escp2/media/wf500.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="c120"> +<escp2Papers name="c120"> <feature name="PlatenGap"/> <feature name="PaperMedia"/> <feature name="PrintMethod"/> @@ -1138,5 +1138,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/media/x80.xml b/src/xml/escp2/media/x80.xml index 4aa8a8f..fe28a20 100644 --- a/src/xml/escp2/media/x80.xml +++ b/src/xml/escp2/media/x80.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:papers name="x80"> +<escp2Papers name="x80"> <feature name="FeedSequence"/> <Curves> <namedParam name="hue_map"> @@ -461,5 +461,5 @@ class="premium"> <parameter type="curve" name="SatMap" ref="sat_map"/> </ink> </paper> -</escp2:papers> +</escp2Papers> </gutenprint> diff --git a/src/xml/escp2/mediasizes/Makefile.in b/src/xml/escp2/mediasizes/Makefile.in index 162a40a..5e63aaa 100644 --- a/src/xml/escp2/mediasizes/Makefile.in +++ b/src/xml/escp2/mediasizes/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -21,6 +20,51 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -39,8 +83,8 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/scripts/global.mk +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs subdir = src/xml/escp2/mediasizes ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -60,8 +104,25 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -83,12 +144,20 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } am__installdirs = "$(DESTDIR)$(pkgxmldatadir)" DATA = $(pkgxmldata_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -146,6 +215,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -157,6 +227,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -181,6 +252,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -330,6 +403,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -347,8 +421,11 @@ clean-libtool: -rm -rf .libs _libs install-pkgxmldataDATA: $(pkgxmldata_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgxmldatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgxmldatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -362,14 +439,12 @@ uninstall-pkgxmldataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgxmldatadir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgxmldatadir)" && rm -f $$files -tags: TAGS -TAGS: + dir='$(DESTDIR)$(pkgxmldatadir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: distdir: $(DISTFILES) @@ -422,10 +497,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -507,16 +587,17 @@ uninstall-am: uninstall-pkgxmldataDATA .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ - clean-libtool dist-hook distclean distclean-generic \ - distclean-libtool distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgxmldataDATA install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am uninstall uninstall-am uninstall-pkgxmldataDATA + clean-libtool cscopelist-am ctags-am dist-hook distclean \ + distclean-generic distclean-libtool distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgxmldataDATA install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-pkgxmldataDATA @SET_MAKE@ diff --git a/src/xml/escp2/mediasizes/standard.xml b/src/xml/escp2/mediasizes/standard.xml index 31cc7e0..630ae66 100644 --- a/src/xml/escp2/mediasizes/standard.xml +++ b/src/xml/escp2/mediasizes/standard.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:MediaSizes name="default"> +<escp2MediaSizes name="default"> <MediaSize type="sheet" name="A4"> <parameter type="integer" name="PaperMediaSize">0</parameter> </MediaSize> @@ -114,5 +114,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <MediaSize type="default"> <parameter type="integer" name="PaperMediaSize">99</parameter> </MediaSize> -</escp2:MediaSizes> +</escp2MediaSizes> </gutenprint> diff --git a/src/xml/escp2/model/Makefile.am b/src/xml/escp2/model/Makefile.am index 479267b..7887eca 100644 --- a/src/xml/escp2/model/Makefile.am +++ b/src/xml/escp2/model/Makefile.am @@ -1,4 +1,4 @@ -## $Id: Makefile.am,v 1.30 2011/12/14 03:02:58 rlk Exp $ +## $Id: Makefile.am,v 1.33 2013/06/23 01:31:40 rlk Exp $ ## Copyright (C) 2008 Robert Krawitz ## ## This program is free software; you can redistribute it and/or modify @@ -143,7 +143,11 @@ pkgxmldata_DATA = \ model_114.xml \ model_115.xml \ model_116.xml \ - model_117.xml + model_117.xml \ + model_118.xml \ + model_119.xml \ + model_120.xml \ + model_121.xml xml-stamp: $(pkgxmldata_DATA) Makefile.am -rm -f $@ $@.tmp diff --git a/src/xml/escp2/model/Makefile.in b/src/xml/escp2/model/Makefile.in index 4bebb2f..4e8ccdc 100644 --- a/src/xml/escp2/model/Makefile.in +++ b/src/xml/escp2/model/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -21,6 +20,51 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -39,8 +83,8 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/scripts/global.mk +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs subdir = src/xml/escp2/model ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -60,8 +104,25 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -83,12 +144,20 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } am__installdirs = "$(DESTDIR)$(pkgxmldatadir)" DATA = $(pkgxmldata_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -146,6 +215,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -157,6 +227,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -181,6 +252,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -419,7 +492,11 @@ pkgxmldata_DATA = \ model_114.xml \ model_115.xml \ model_116.xml \ - model_117.xml + model_117.xml \ + model_118.xml \ + model_119.xml \ + model_120.xml \ + model_121.xml CLEANFILES = xmli18n-tmp.h xml-stamp xml-stamp.tmp EXTRA_DIST = $(pkgxmldata_DATA) @@ -447,6 +524,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -464,8 +542,11 @@ clean-libtool: -rm -rf .libs _libs install-pkgxmldataDATA: $(pkgxmldata_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgxmldatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgxmldatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -479,14 +560,12 @@ uninstall-pkgxmldataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgxmldatadir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgxmldatadir)" && rm -f $$files -tags: TAGS -TAGS: + dir='$(DESTDIR)$(pkgxmldatadir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: distdir: $(DISTFILES) @@ -539,10 +618,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -624,16 +708,17 @@ uninstall-am: uninstall-pkgxmldataDATA .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ - clean-libtool dist-hook distclean distclean-generic \ - distclean-libtool distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgxmldataDATA install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am uninstall uninstall-am uninstall-pkgxmldataDATA + clean-libtool cscopelist-am ctags-am dist-hook distclean \ + distclean-generic distclean-libtool distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgxmldataDATA install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-pkgxmldataDATA @SET_MAKE@ diff --git a/src/xml/escp2/model/model_0.xml b/src/xml/escp2/model/model_0.xml index 4cc765e..48d621c 100644 --- a/src/xml/escp2/model/model_0.xml +++ b/src/xml/escp2/model/model_0.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="0"> +<escp2Model id="0"> <media src="escp2/media/standard_gen0.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -53,10 +53,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -122,5 +122,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_1.xml b/src/xml/escp2/model/model_1.xml index a1dc62b..53b34f6 100644 --- a/src/xml/escp2/model/model_1.xml +++ b/src/xml/escp2/model/model_1.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="1"> +<escp2Model id="1"> <media src="escp2/media/standard_gen0.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -52,10 +52,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -140,5 +140,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_10.xml b/src/xml/escp2/model/model_10.xml index a1a2630..be896fd 100644 --- a/src/xml/escp2/model/model_10.xml +++ b/src/xml/escp2/model/model_10.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="10"> +<escp2Model id="10"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -56,10 +56,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>1 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -142,5 +142,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_100.xml b/src/xml/escp2/model/model_100.xml index a92aa11..17219f8 100644 --- a/src/xml/escp2/model/model_100.xml +++ b/src/xml/escp2/model/model_100.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="100"> +<escp2Model id="100"> <media src="escp2/media/c120.xml"/> <inputSlots src="escp2/inputslots/cd.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -80,11 +80,11 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black 1"/> - <ChannelName translate="name" name="Black 2"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black1" text="Black 1"/> + <ChannelName translate="text" name="Black2" text="Black 2"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -213,5 +213,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_101.xml b/src/xml/escp2/model/model_101.xml index f76e824..93b4903 100644 --- a/src/xml/escp2/model/model_101.xml +++ b/src/xml/escp2/model/model_101.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="101"> +<escp2Model id="101"> <media src="escp2/media/wf500.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/wf40.xml"/> @@ -80,10 +80,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CDMediaSize>595 842</CDMediaSize> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -179,5 +179,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_102.xml b/src/xml/escp2/model/model_102.xml index 393c19b..89ae05f 100644 --- a/src/xml/escp2/model/model_102.xml +++ b/src/xml/escp2/model/model_102.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="102"> +<escp2Model id="102"> <media src="escp2/media/pro_ultrachrome_k3v.xml"/> <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -146,5 +146,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_103.xml b/src/xml/escp2/model/model_103.xml index c6a1016..6ddf923 100644 --- a/src/xml/escp2/model/model_103.xml +++ b/src/xml/escp2/model/model_103.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="103"> +<escp2Model id="103"> <media src="escp2/media/pro_ultrachrome_k3.xml"/> <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -146,5 +146,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_104.xml b/src/xml/escp2/model/model_104.xml index 996bac0..60852e2 100644 --- a/src/xml/escp2/model/model_104.xml +++ b/src/xml/escp2/model/model_104.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="104"> +<escp2Model id="104"> <media src="escp2/media/pro_ultrachrome_k3.xml"/> <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -146,5 +146,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_105.xml b/src/xml/escp2/model/model_105.xml index 551c2e4..3ef8ac6 100644 --- a/src/xml/escp2/model/model_105.xml +++ b/src/xml/escp2/model/model_105.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="105"> +<escp2Model id="105"> <media src="escp2/media/pro_ultrachrome_k3.xml"/> <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -146,5 +146,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_106.xml b/src/xml/escp2/model/model_106.xml index 92bd2d4..bda3a7f 100644 --- a/src/xml/escp2/model/model_106.xml +++ b/src/xml/escp2/model/model_106.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="106"> +<escp2Model id="106"> <media src="escp2/media/pro_ultrachrome_k3.xml"/> <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -146,5 +146,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_107.xml b/src/xml/escp2/model/model_107.xml index ee6047b..1856efb 100644 --- a/src/xml/escp2/model/model_107.xml +++ b/src/xml/escp2/model/model_107.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="107"> +<escp2Model id="107"> <media src="escp2/media/pro_ultrachrome_k3v.xml"/> <inputSlots src="escp2/inputslots/pro3880.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -57,8 +57,8 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>1224 86400</maximumMediaSize> <maximumImageableArea>1224 86400</maximumImageableArea> - <margins interleave="soft" media="sheet">9 9 9 40</margins> - <margins interleave="printer" media="sheet">9 9 9 40</margins> + <margins interleave="soft" media="sheet">9 9 9 9</margins> + <margins interleave="printer" media="sheet">9 9 9 9</margins> <margins interleave="soft" media="roll">9 9 0 0</margins> <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> @@ -148,5 +148,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_108.xml b/src/xml/escp2/model/model_108.xml index 1f5d5a1..6c799d0 100644 --- a/src/xml/escp2/model/model_108.xml +++ b/src/xml/escp2/model/model_108.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="108"> +<escp2Model id="108"> <media src="escp2/media/pro_ultrachrome_k3.xml"/> <inputSlots src="escp2/inputslots/pro3880.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -58,20 +58,20 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>1224 86400</maximumMediaSize> <maximumImageableArea>1224 86400</maximumImageableArea> - <margins interleave="soft" media="sheet">9 9 9 40</margins> - <margins interleave="printer" media="sheet">9 9 9 40</margins> + <margins interleave="soft" media="sheet">9 9 9 9</margins> + <margins interleave="printer" media="sheet">9 9 9 9</margins> <margins interleave="soft" media="roll">9 9 0 0</margins> <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Light Light Black"/> - <ChannelName translate="name" name="Light Magenta"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Black"/> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="LightLightBlack" text="Light Light Black"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightBlack" text="Light Black"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> @@ -159,5 +159,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_109.xml b/src/xml/escp2/model/model_109.xml index 768e8f9..ac29d15 100644 --- a/src/xml/escp2/model/model_109.xml +++ b/src/xml/escp2/model/model_109.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="109"> +<escp2Model id="109"> <media src="escp2/media/pro_ultrachrome_k3v.xml"/> <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -146,5 +146,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_11.xml b/src/xml/escp2/model/model_11.xml index 0241387..d40adac 100644 --- a/src/xml/escp2/model/model_11.xml +++ b/src/xml/escp2/model/model_11.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="11"> +<escp2Model id="11"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -55,10 +55,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>1 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -141,5 +141,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_110.xml b/src/xml/escp2/model/model_110.xml index 15d06c9..09830a0 100644 --- a/src/xml/escp2/model/model_110.xml +++ b/src/xml/escp2/model/model_110.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="110"> +<escp2Model id="110"> <media src="escp2/media/pro_ultrachrome_k3v.xml"/> <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -146,5 +146,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_111.xml b/src/xml/escp2/model/model_111.xml index 5736029..1fa6651 100644 --- a/src/xml/escp2/model/model_111.xml +++ b/src/xml/escp2/model/model_111.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="111"> +<escp2Model id="111"> <media src="escp2/media/pro_ultrachrome_k3.xml"/> <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -62,10 +62,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> @@ -133,5 +133,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_112.xml b/src/xml/escp2/model/model_112.xml index fa3b364..0a0d95a 100644 --- a/src/xml/escp2/model/model_112.xml +++ b/src/xml/escp2/model/model_112.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="112"> +<escp2Model id="112"> <media src="escp2/media/pro_ultrachrome.xml"/> <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -62,12 +62,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> @@ -135,5 +135,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_113.xml b/src/xml/escp2/model/model_113.xml index c1c5202..10d0366 100644 --- a/src/xml/escp2/model/model_113.xml +++ b/src/xml/escp2/model/model_113.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="113"> +<escp2Model id="113"> <media src="escp2/media/pro_ultrachrome.xml"/> <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -62,12 +62,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> @@ -135,5 +135,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_114.xml b/src/xml/escp2/model/model_114.xml index 96e04c6..d693f13 100644 --- a/src/xml/escp2/model/model_114.xml +++ b/src/xml/escp2/model/model_114.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="114"> +<escp2Model id="114"> <media src="escp2/media/pro_ultrachrome.xml"/> <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -62,12 +62,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> @@ -135,5 +135,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_115.xml b/src/xml/escp2/model/model_115.xml index a51af5c..dd231d5 100644 --- a/src/xml/escp2/model/model_115.xml +++ b/src/xml/escp2/model/model_115.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="115"> +<escp2Model id="115"> <media src="escp2/media/f360_ultrachrome_k3v.xml"/> <inputSlots src="escp2/inputslots/r2880.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -158,5 +158,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_116.xml b/src/xml/escp2/model/model_116.xml index f9b7725..d210401 100644 --- a/src/xml/escp2/model/model_116.xml +++ b/src/xml/escp2/model/model_116.xml @@ -20,11 +20,11 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="116"> - <media src="escp2/media/pro_ultrachrome_k3v.xml"/> +<escp2Model id="116"> + <media src="escp2/media/pro_ultrachrome_k3v10.xml"/> <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/prox900.xml"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3v.xml"/> + <inkGroup src="escp2/inks/pro_ultrachrome_k3v10.xml"/> <printerWeaves src="escp2/weaves/pro7600.xml"/> <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> @@ -41,7 +41,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <FirstNozzle>0</FirstNozzle> <NozzleSeparation>1</NozzleSeparation> </headConfiguration> - <physicalChannels>8</physicalChannels> + <physicalChannels>10</physicalChannels> <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 180</minimumResolution> @@ -135,5 +135,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_117.xml b/src/xml/escp2/model/model_117.xml index 97b0ea7..980e66b 100644 --- a/src/xml/escp2/model/model_117.xml +++ b/src/xml/escp2/model/model_117.xml @@ -20,11 +20,11 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="117"> - <media src="escp2/media/pro_ultrachrome_k3v.xml"/> +<escp2Model id="117"> + <media src="escp2/media/pro_ultrachrome_k3v10.xml"/> <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/prox900.xml"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3v.xml"/> + <inkGroup src="escp2/inks/pro_ultrachrome_k3v10.xml"/> <printerWeaves src="escp2/weaves/pro7600.xml"/> <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> @@ -41,7 +41,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <FirstNozzle>0</FirstNozzle> <NozzleSeparation>1</NozzleSeparation> </headConfiguration> - <physicalChannels>8</physicalChannels> + <physicalChannels>10</physicalChannels> <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 180</minimumResolution> @@ -135,5 +135,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_118.xml b/src/xml/escp2/model/model_118.xml new file mode 100644 index 0000000..1f3d5de --- /dev/null +++ b/src/xml/escp2/model/model_118.xml @@ -0,0 +1,216 @@ +<?xml version="1.0"?> + +<gutenprint xmlns="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint.xsd"> +<copyright> + * Copyright 2008 Robert Krawitz (rlk@alum.mit.edu) + * + * 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. +</copyright> +<escp2Model id="118"> + <media src="escp2/media/c120.xml"/> + <inputSlots src="escp2/inputslots/default-duplex.xml"/> + <qualityPresets src="escp2/qualitypresets/wf40.xml"/> + <inkGroup src="escp2/inks/wf40.xml"/> + <mediaSizes src="escp2/mediasizes/standard.xml"/> + <verticalBorderlessSequence>US\003\000\000\000\002</verticalBorderlessSequence> + <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> + <preinitRemoteSequence>SN\001\000\000</preinitRemoteSequence> + <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> + <commandSet>2000</commandSet> + <borderless>Yes</borderless> + <supportsVariableDropsizes/> + <hasFastGraymode/> + <sendZeroAdvance/> + <supportsD4Mode/> + <preferredEnvelopeOrientation>Portrait</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>128</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>3</NozzleSeparation> + </headConfiguration> + <headConfiguration type="black"> + <Nozzles>384</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <headConfiguration type="fast"> + <Nozzles>384</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <physicalChannels>4</physicalChannels> + <baseSeparation>360</baseSeparation> + <resolutionScale>14400</resolutionScale> + <minimumResolution>360 120</minimumResolution> + <maximumResolution>5760 2880</maximumResolution> + <extraVerticalFeed>10</extraVerticalFeed> + <separationRows>1</separationRows> + <zeroMarginOffset>80</zeroMarginOffset> + <microLeftMargin>42</microLeftMargin> + <initialVerticalOffset>0</initialVerticalOffset> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>16588800</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <maximumMediaSize>612 86400</maximumMediaSize> + <maximumImageableArea>612 86400</maximumImageableArea> + <margins interleave="soft" media="sheet">9 9 0 9</margins> + <margins interleave="printer" media="sheet">9 9 0 9</margins> + <margins interleave="soft" media="roll">9 9 0 0</margins> + <margins interleave="printer" media="roll">9 9 0 0</margins> + <margins duplex="duplex">-32768 -32768 9 9</margins> + <AlignmentChoices>4 15 0 0</AlignmentChoices> + <ChannelNames> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + </ChannelNames> + <resolutions> + <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> + <physicalResolution>360 120</physicalResolution> + <parameter type="float" name="escp2_density">4.000000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="360sw" text="360 DPI"> + <physicalResolution>360 360</physicalResolution> + <parameter type="float" name="escp2_density">2.000000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="360hq" text="360 DPI Enhanced"> + <physicalResolution>360 360</physicalResolution> + <verticalPasses>2</verticalPasses> + <parameter type="float" name="escp2_density">2.000000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720x360sw" text="720 x 360 DPI"> + <physicalResolution>720 360</physicalResolution> + <parameter type="float" name="escp2_density">1.560000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.220000</parameter> + <parameter type="float" name="DropSize2">0.320000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720x360hq" text="720 x 360 DPI Enhanced"> + <physicalResolution>720 360</physicalResolution> + <verticalPasses>2</verticalPasses> + <parameter type="float" name="escp2_density">1.560000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.220000</parameter> + <parameter type="float" name="DropSize2">0.320000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720sw" text="720 DPI"> + <physicalResolution>720 720</physicalResolution> + <parameter type="float" name="escp2_density">0.780000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.220000</parameter> + <parameter type="float" name="DropSize2">0.320000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720hq" text="720 DPI High Quality"> + <physicalResolution>720 720</physicalResolution> + <verticalPasses>2</verticalPasses> + <parameter type="float" name="escp2_density">0.780000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.220000</parameter> + <parameter type="float" name="DropSize2">0.320000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x720sw" text="1440 x 720 DPI"> + <physicalResolution>1440 720</physicalResolution> + <parameter type="float" name="escp2_density">0.768000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x1440ov" text="1440 x 1440 DPI"> + <physicalResolution>2880 1440</physicalResolution> + <printedResolution>1440 1440</printedResolution> + <parameter type="float" name="escp2_density">0.384000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="2880x1440sw" text="2880 x 1440 DPI"> + <physicalResolution>2880 1440</physicalResolution> + <parameter type="float" name="escp2_density">0.384</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.500000</parameter> + <parameter type="float" name="DropSize2">1.000000</parameter> + </resolution> + <resolution translate="text" name="5760x1440sw" text="5760 x 1440 DPI"> + <physicalResolution>5760 1440</physicalResolution> + <parameter type="float" name="escp2_density">0.384000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="2880x2880sw" text="2880 x 2880 DPI"> + <physicalResolution>2880 2880</physicalResolution> + <parameter type="float" name="escp2_density">0.384000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="5760x2880sw" text="5760 x 2880 DPI"> + <physicalResolution>5760 2880</physicalResolution> + <parameter type="float" name="escp2_density">0.192000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + </resolutions> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/model_119.xml b/src/xml/escp2/model/model_119.xml new file mode 100644 index 0000000..d246afd --- /dev/null +++ b/src/xml/escp2/model/model_119.xml @@ -0,0 +1,216 @@ +<?xml version="1.0"?> + +<gutenprint xmlns="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint.xsd"> +<copyright> + * Copyright 2008 Robert Krawitz (rlk@alum.mit.edu) + * + * 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. +</copyright> +<escp2Model id="119"> + <media src="escp2/media/c120.xml"/> + <inputSlots src="escp2/inputslots/wf7000.xml"/> + <qualityPresets src="escp2/qualitypresets/wf40.xml"/> + <inkGroup src="escp2/inks/wf40.xml"/> + <mediaSizes src="escp2/mediasizes/standard.xml"/> + <verticalBorderlessSequence>US\003\000\000\000\002</verticalBorderlessSequence> + <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> + <preinitRemoteSequence>SN\001\000\000</preinitRemoteSequence> + <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> + <commandSet>2000</commandSet> + <borderless>Full</borderless> + <supportsVariableDropsizes/> + <hasFastGraymode/> + <sendZeroAdvance/> + <supportsD4Mode/> + <preferredEnvelopeOrientation>Portrait</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>128</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>3</NozzleSeparation> + </headConfiguration> + <headConfiguration type="black"> + <Nozzles>384</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <headConfiguration type="fast"> + <Nozzles>384</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <physicalChannels>4</physicalChannels> + <baseSeparation>360</baseSeparation> + <resolutionScale>14400</resolutionScale> + <minimumResolution>360 120</minimumResolution> + <maximumResolution>5760 2880</maximumResolution> + <extraVerticalFeed>10</extraVerticalFeed> + <separationRows>1</separationRows> + <zeroMarginOffset>80</zeroMarginOffset> + <microLeftMargin>42</microLeftMargin> + <initialVerticalOffset>0</initialVerticalOffset> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>16588800</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <maximumMediaSize>926 86400</maximumMediaSize> + <maximumImageableArea>936 86400</maximumImageableArea> + <margins interleave="soft" media="sheet">9 9 0 9</margins> + <margins interleave="printer" media="sheet">9 9 0 9</margins> + <margins interleave="soft" media="roll">9 9 0 0</margins> + <margins interleave="printer" media="roll">9 9 0 0</margins> + <margins duplex="duplex">-32768 -32768 9 9</margins> + <AlignmentChoices>4 15 0 0</AlignmentChoices> + <ChannelNames> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + </ChannelNames> + <resolutions> + <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> + <physicalResolution>360 120</physicalResolution> + <parameter type="float" name="escp2_density">4.000000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="360sw" text="360 DPI"> + <physicalResolution>360 360</physicalResolution> + <parameter type="float" name="escp2_density">2.000000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="360hq" text="360 DPI Enhanced"> + <physicalResolution>360 360</physicalResolution> + <verticalPasses>2</verticalPasses> + <parameter type="float" name="escp2_density">2.000000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720x360sw" text="720 x 360 DPI"> + <physicalResolution>720 360</physicalResolution> + <parameter type="float" name="escp2_density">1.560000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.220000</parameter> + <parameter type="float" name="DropSize2">0.320000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720x360hq" text="720 x 360 DPI Enhanced"> + <physicalResolution>720 360</physicalResolution> + <verticalPasses>2</verticalPasses> + <parameter type="float" name="escp2_density">1.560000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.220000</parameter> + <parameter type="float" name="DropSize2">0.320000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720sw" text="720 DPI"> + <physicalResolution>720 720</physicalResolution> + <parameter type="float" name="escp2_density">0.780000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.220000</parameter> + <parameter type="float" name="DropSize2">0.320000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720hq" text="720 DPI High Quality"> + <physicalResolution>720 720</physicalResolution> + <verticalPasses>2</verticalPasses> + <parameter type="float" name="escp2_density">0.780000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.220000</parameter> + <parameter type="float" name="DropSize2">0.320000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x720sw" text="1440 x 720 DPI"> + <physicalResolution>1440 720</physicalResolution> + <parameter type="float" name="escp2_density">0.768000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x1440ov" text="1440 x 1440 DPI"> + <physicalResolution>2880 1440</physicalResolution> + <printedResolution>1440 1440</printedResolution> + <parameter type="float" name="escp2_density">0.384000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="2880x1440sw" text="2880 x 1440 DPI"> + <physicalResolution>2880 1440</physicalResolution> + <parameter type="float" name="escp2_density">0.384</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.500000</parameter> + <parameter type="float" name="DropSize2">1.000000</parameter> + </resolution> + <resolution translate="text" name="5760x1440sw" text="5760 x 1440 DPI"> + <physicalResolution>5760 1440</physicalResolution> + <parameter type="float" name="escp2_density">0.384000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="2880x2880sw" text="2880 x 2880 DPI"> + <physicalResolution>2880 2880</physicalResolution> + <parameter type="float" name="escp2_density">0.384000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="5760x2880sw" text="5760 x 2880 DPI"> + <physicalResolution>5760 2880</physicalResolution> + <parameter type="float" name="escp2_density">0.192000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + </resolutions> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/model_12.xml b/src/xml/escp2/model/model_12.xml index 52491fe..f8a3c74 100644 --- a/src/xml/escp2/model/model_12.xml +++ b/src/xml/escp2/model/model_12.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="12"> +<escp2Model id="12"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -68,10 +68,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -155,5 +155,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize2">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_120.xml b/src/xml/escp2/model/model_120.xml new file mode 100644 index 0000000..28cc4f7 --- /dev/null +++ b/src/xml/escp2/model/model_120.xml @@ -0,0 +1,216 @@ +<?xml version="1.0"?> + +<gutenprint xmlns="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint.xsd"> +<copyright> + * Copyright 2008 Robert Krawitz (rlk@alum.mit.edu) + * + * 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. +</copyright> +<escp2Model id="120"> + <media src="escp2/media/c120.xml"/> + <inputSlots src="escp2/inputslots/wf7000.xml"/> + <qualityPresets src="escp2/qualitypresets/wf40.xml"/> + <inkGroup src="escp2/inks/wf40.xml"/> + <mediaSizes src="escp2/mediasizes/standard.xml"/> + <verticalBorderlessSequence>US\003\000\000\000\002</verticalBorderlessSequence> + <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> + <preinitRemoteSequence>SN\001\000\000</preinitRemoteSequence> + <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> + <commandSet>2000</commandSet> + <borderless>Yes</borderless> + <supportsVariableDropsizes/> + <hasFastGraymode/> + <sendZeroAdvance/> + <supportsD4Mode/> + <preferredEnvelopeOrientation>Portrait</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>128</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>3</NozzleSeparation> + </headConfiguration> + <headConfiguration type="black"> + <Nozzles>384</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <headConfiguration type="fast"> + <Nozzles>384</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <physicalChannels>4</physicalChannels> + <baseSeparation>360</baseSeparation> + <resolutionScale>14400</resolutionScale> + <minimumResolution>360 120</minimumResolution> + <maximumResolution>5760 2880</maximumResolution> + <extraVerticalFeed>10</extraVerticalFeed> + <separationRows>1</separationRows> + <zeroMarginOffset>80</zeroMarginOffset> + <microLeftMargin>42</microLeftMargin> + <initialVerticalOffset>0</initialVerticalOffset> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>16588800</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <maximumMediaSize>926 86400</maximumMediaSize> + <maximumImageableArea>936 86400</maximumImageableArea> + <margins interleave="soft" media="sheet">9 9 0 9</margins> + <margins interleave="printer" media="sheet">9 9 0 9</margins> + <margins interleave="soft" media="roll">9 9 0 0</margins> + <margins interleave="printer" media="roll">9 9 0 0</margins> + <margins duplex="duplex">-32768 -32768 9 9</margins> + <AlignmentChoices>4 15 0 0</AlignmentChoices> + <ChannelNames> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + </ChannelNames> + <resolutions> + <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> + <physicalResolution>360 120</physicalResolution> + <parameter type="float" name="escp2_density">4.000000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="360sw" text="360 DPI"> + <physicalResolution>360 360</physicalResolution> + <parameter type="float" name="escp2_density">2.000000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="360hq" text="360 DPI Enhanced"> + <physicalResolution>360 360</physicalResolution> + <verticalPasses>2</verticalPasses> + <parameter type="float" name="escp2_density">2.000000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720x360sw" text="720 x 360 DPI"> + <physicalResolution>720 360</physicalResolution> + <parameter type="float" name="escp2_density">1.560000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.220000</parameter> + <parameter type="float" name="DropSize2">0.320000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720x360hq" text="720 x 360 DPI Enhanced"> + <physicalResolution>720 360</physicalResolution> + <verticalPasses>2</verticalPasses> + <parameter type="float" name="escp2_density">1.560000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.220000</parameter> + <parameter type="float" name="DropSize2">0.320000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720sw" text="720 DPI"> + <physicalResolution>720 720</physicalResolution> + <parameter type="float" name="escp2_density">0.780000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.220000</parameter> + <parameter type="float" name="DropSize2">0.320000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720hq" text="720 DPI High Quality"> + <physicalResolution>720 720</physicalResolution> + <verticalPasses>2</verticalPasses> + <parameter type="float" name="escp2_density">0.780000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.220000</parameter> + <parameter type="float" name="DropSize2">0.320000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x720sw" text="1440 x 720 DPI"> + <physicalResolution>1440 720</physicalResolution> + <parameter type="float" name="escp2_density">0.768000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x1440ov" text="1440 x 1440 DPI"> + <physicalResolution>2880 1440</physicalResolution> + <printedResolution>1440 1440</printedResolution> + <parameter type="float" name="escp2_density">0.384000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="2880x1440sw" text="2880 x 1440 DPI"> + <physicalResolution>2880 1440</physicalResolution> + <parameter type="float" name="escp2_density">0.384</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.500000</parameter> + <parameter type="float" name="DropSize2">1.000000</parameter> + </resolution> + <resolution translate="text" name="5760x1440sw" text="5760 x 1440 DPI"> + <physicalResolution>5760 1440</physicalResolution> + <parameter type="float" name="escp2_density">0.384000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="2880x2880sw" text="2880 x 2880 DPI"> + <physicalResolution>2880 2880</physicalResolution> + <parameter type="float" name="escp2_density">0.384000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="5760x2880sw" text="5760 x 2880 DPI"> + <physicalResolution>5760 2880</physicalResolution> + <parameter type="float" name="escp2_density">0.192000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + </resolutions> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/model_121.xml b/src/xml/escp2/model/model_121.xml new file mode 100644 index 0000000..7b2d4e7 --- /dev/null +++ b/src/xml/escp2/model/model_121.xml @@ -0,0 +1,183 @@ +<?xml version="1.0"?> + +<gutenprint xmlns="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint.xsd"> +<copyright> + * Copyright 2008 Robert Krawitz (rlk@alum.mit.edu) + * + * 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. +</copyright> +<escp2Model id="121"> + <media src="escp2/media/wf500.xml"/> + <inputSlots src="escp2/inputslots/default.xml"/> + <qualityPresets src="escp2/qualitypresets/wf40.xml"/> + <inkGroup src="escp2/inks/sx445.xml"/> + <mediaSizes src="escp2/mediasizes/standard.xml"/> + <verticalBorderlessSequence>US\003\000\000\000\002</verticalBorderlessSequence> + <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> + <preinitRemoteSequence>JS\014\000\000GUTENPRINT\000SN\001\000\000</preinitRemoteSequence> + <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> + <commandSet>2000</commandSet> + <borderless>Yes</borderless> + <supportsVariableDropsizes/> + <hasFastGraymode/> + <sendZeroAdvance/> + <supportsD4Mode/> + <preferredEnvelopeOrientation>Portrait</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>42</Nozzles> + <MinNozzles>42</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>3</NozzleSeparation> + </headConfiguration> + <headConfiguration type="black"> + <Nozzles>128</Nozzles> + <MinNozzles>128</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>3</NozzleSeparation> + </headConfiguration> + <headConfiguration type="fast"> + <Nozzles>128</Nozzles> + <MinNozzles>128</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>3</NozzleSeparation> + </headConfiguration> + <physicalChannels>4</physicalChannels> + <baseSeparation>360</baseSeparation> + <resolutionScale>14400</resolutionScale> + <minimumResolution>360 120</minimumResolution> + <maximumResolution>5760 2880</maximumResolution> + <extraVerticalFeed>10</extraVerticalFeed> + <separationRows>1</separationRows> + <zeroMarginOffset>80</zeroMarginOffset> + <initialVerticalOffset>-257</initialVerticalOffset> + <microLeftMargin>42</microLeftMargin> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>16588800</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <maximumMediaSize>612 86400</maximumMediaSize> + <maximumImageableArea>612 86400</maximumImageableArea> + <margins interleave="soft" media="sheet">9 9 0 9</margins> + <margins interleave="printer" media="sheet">9 9 0 9</margins> + <margins interleave="soft" media="roll">9 9 0 0</margins> + <margins interleave="printer" media="roll">9 9 0 0</margins> + <extraBottom>24</extraBottom> + <CDOffset>204 191</CDOffset> + <CDMediaSize>595 842</CDMediaSize> + <AlignmentChoices>4 15 0 0</AlignmentChoices> + <ChannelNames> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + </ChannelNames> + <resolutions> + <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> + <physicalResolution>360 120</physicalResolution> + <parameter type="float" name="escp2_density">4.000000</parameter> + <parameter type="integer" name="escp2_ink_type">16</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.200000</parameter> + <parameter type="float" name="DropSize2">0.350000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="360sw" text="360 DPI"> + <physicalResolution>360 360</physicalResolution> + <parameter type="float" name="escp2_density">2.000000</parameter> + <parameter type="integer" name="escp2_ink_type">16</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.200000</parameter> + <parameter type="float" name="DropSize2">0.350000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720x360sw" text="720 x 360 DPI"> + <physicalResolution>720 360</physicalResolution> + <parameter type="float" name="escp2_density">1.560000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.300000</parameter> + <parameter type="float" name="DropSize2">0.660000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720sw" text="720 DPI"> + <physicalResolution>720 720</physicalResolution> + <parameter type="float" name="escp2_density">0.780000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.300000</parameter> + <parameter type="float" name="DropSize2">0.550000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x720sw" text="1440 x 720 DPI"> + <physicalResolution>1440 720</physicalResolution> + <parameter type="float" name="escp2_density">0.778000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.380000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x1440ov" text="1440 x 1440 DPI"> + <physicalResolution>2880 1440</physicalResolution> + <printedResolution>1440 1440</printedResolution> + <parameter type="float" name="escp2_density">0.512000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.500000</parameter> + <parameter type="float" name="DropSize2">1.000000</parameter> + </resolution> + <resolution translate="text" name="2880x1440sw" text="2880 x 1440 DPI"> + <physicalResolution>2880 1440</physicalResolution> + <parameter type="float" name="escp2_density">0.512</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="5760x1440sw" text="5760 x 1440 DPI"> + <physicalResolution>5760 1440</physicalResolution> + <parameter type="float" name="escp2_density">0.256000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="2880x2880sw" text="2880 x 2880 DPI"> + <physicalResolution>2880 2880</physicalResolution> + <parameter type="float" name="escp2_density">0.256000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="5760x2880sw" text="5760 x 2880 DPI"> + <physicalResolution>5760 2880</physicalResolution> + <parameter type="float" name="escp2_density">0.128000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + </resolutions> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/model_13.xml b/src/xml/escp2/model/model_13.xml index 18f1b60..480ae88 100644 --- a/src/xml/escp2/model/model_13.xml +++ b/src/xml/escp2/model/model_13.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="13"> +<escp2Model id="13"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -71,10 +71,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="180sw" text="180 DPI Economy"> @@ -158,5 +158,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize2">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_14.xml b/src/xml/escp2/model/model_14.xml index f4db1ed..24c4cf1 100644 --- a/src/xml/escp2/model/model_14.xml +++ b/src/xml/escp2/model/model_14.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="14"> +<escp2Model id="14"> <media src="escp2/media/photo_gen1.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -58,12 +58,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -147,5 +147,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize2">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_15.xml b/src/xml/escp2/model/model_15.xml index b905452..ce96f8f 100644 --- a/src/xml/escp2/model/model_15.xml +++ b/src/xml/escp2/model/model_15.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="15"> +<escp2Model id="15"> <media src="escp2/media/photo_gen1.xml"/> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -58,12 +58,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -147,5 +147,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize2">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_16.xml b/src/xml/escp2/model/model_16.xml index ba8a29e..ccadc24 100644 --- a/src/xml/escp2/model/model_16.xml +++ b/src/xml/escp2/model/model_16.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="16"> +<escp2Model id="16"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -71,10 +71,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -160,5 +160,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize3">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_17.xml b/src/xml/escp2/model/model_17.xml index 44b347f..128bd72 100644 --- a/src/xml/escp2/model/model_17.xml +++ b/src/xml/escp2/model/model_17.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="17"> +<escp2Model id="17"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -71,10 +71,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -160,5 +160,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize3">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_18.xml b/src/xml/escp2/model/model_18.xml index 4e8619f..f436655 100644 --- a/src/xml/escp2/model/model_18.xml +++ b/src/xml/escp2/model/model_18.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="18"> +<escp2Model id="18"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -58,10 +58,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 9 0</margins> <AlignmentChoices>1 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -144,5 +144,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_19.xml b/src/xml/escp2/model/model_19.xml index a6d6f3d..b268e98 100644 --- a/src/xml/escp2/model/model_19.xml +++ b/src/xml/escp2/model/model_19.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="19"> +<escp2Model id="19"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -71,10 +71,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -160,5 +160,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize3">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_2.xml b/src/xml/escp2/model/model_2.xml index c7502c6..0000b81 100644 --- a/src/xml/escp2/model/model_2.xml +++ b/src/xml/escp2/model/model_2.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="2"> +<escp2Model id="2"> <media src="escp2/media/cmy.xml"/> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -52,10 +52,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -140,5 +140,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_20.xml b/src/xml/escp2/model/model_20.xml index 681c1a7..5091967 100644 --- a/src/xml/escp2/model/model_20.xml +++ b/src/xml/escp2/model/model_20.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="20"> +<escp2Model id="20"> <media src="escp2/media/photo_gen1.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -58,12 +58,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90sw" text="360 x 90 DPI Fast Economy"> @@ -157,5 +157,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize2">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_21.xml b/src/xml/escp2/model/model_21.xml index a3146df..ea2ae3f 100644 --- a/src/xml/escp2/model/model_21.xml +++ b/src/xml/escp2/model/model_21.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="21"> +<escp2Model id="21"> <media src="escp2/media/x80.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -74,10 +74,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -153,5 +153,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize3">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_22.xml b/src/xml/escp2/model/model_22.xml index 387ad1f..cf35f7f 100644 --- a/src/xml/escp2/model/model_22.xml +++ b/src/xml/escp2/model/model_22.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="22"> +<escp2Model id="22"> <media src="escp2/media/photo_gen2.xml"/> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -60,12 +60,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -151,5 +151,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize3">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_23.xml b/src/xml/escp2/model/model_23.xml index d0d93bc..94d2c59 100644 --- a/src/xml/escp2/model/model_23.xml +++ b/src/xml/escp2/model/model_23.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="23"> +<escp2Model id="23"> <media src="escp2/media/photo_gen2.xml"/> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -60,12 +60,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -151,5 +151,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize3">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_24.xml b/src/xml/escp2/model/model_24.xml index a2722b1..0e892e6 100644 --- a/src/xml/escp2/model/model_24.xml +++ b/src/xml/escp2/model/model_24.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="24"> +<escp2Model id="24"> <media src="escp2/media/standard_gen0.xml"/> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -54,10 +54,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">8 9 0 0</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="180dpi" text="180 DPI Economy"> @@ -139,5 +139,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_25.xml b/src/xml/escp2/model/model_25.xml index 101c713..73d2585 100644 --- a/src/xml/escp2/model/model_25.xml +++ b/src/xml/escp2/model/model_25.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="25"> +<escp2Model id="25"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -71,10 +71,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90sw" text="360 x 90 DPI Fast Economy"> @@ -168,5 +168,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize2">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_26.xml b/src/xml/escp2/model/model_26.xml index 28ca114..1d25396 100644 --- a/src/xml/escp2/model/model_26.xml +++ b/src/xml/escp2/model/model_26.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="26"> +<escp2Model id="26"> <media src="escp2/media/photo_pigment.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -70,12 +70,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>2 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -153,5 +153,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize2">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_27.xml b/src/xml/escp2/model/model_27.xml index ee67a94..4e7d862 100644 --- a/src/xml/escp2/model/model_27.xml +++ b/src/xml/escp2/model/model_27.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="27"> +<escp2Model id="27"> <media src="escp2/media/photo_gen0.xml"/> <inputSlots src="escp2/inputslots/spro5000.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -53,12 +53,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="180sw" text="180 DPI Economy"> @@ -128,5 +128,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_28.xml b/src/xml/escp2/model/model_28.xml index 51d2496..cbf66cf 100644 --- a/src/xml/escp2/model/model_28.xml +++ b/src/xml/escp2/model/model_28.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="28"> +<escp2Model id="28"> <media src="escp2/media/pro_gen1.xml"/> <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -54,12 +54,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 9 9</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -126,5 +126,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_29.xml b/src/xml/escp2/model/model_29.xml index 767d65d..3d9cdcf 100644 --- a/src/xml/escp2/model/model_29.xml +++ b/src/xml/escp2/model/model_29.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="29"> +<escp2Model id="29"> <media src="escp2/media/pro_pigment.xml"/> <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -54,12 +54,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 9 9</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -126,5 +126,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_3.xml b/src/xml/escp2/model/model_3.xml index aa6198c..5026741 100644 --- a/src/xml/escp2/model/model_3.xml +++ b/src/xml/escp2/model/model_3.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="3"> +<escp2Model id="3"> <media src="escp2/media/standard_gen0.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -53,10 +53,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">8 9 0 0</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -147,5 +147,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_30.xml b/src/xml/escp2/model/model_30.xml index a9a3b5e..2246b7c 100644 --- a/src/xml/escp2/model/model_30.xml +++ b/src/xml/escp2/model/model_30.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="30"> +<escp2Model id="30"> <media src="escp2/media/pro_gen1.xml"/> <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -54,12 +54,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 9 9</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -126,5 +126,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_31.xml b/src/xml/escp2/model/model_31.xml index c512354..0418908 100644 --- a/src/xml/escp2/model/model_31.xml +++ b/src/xml/escp2/model/model_31.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="31"> +<escp2Model id="31"> <media src="escp2/media/pro_pigment.xml"/> <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -54,12 +54,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 9 9</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -126,5 +126,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_32.xml b/src/xml/escp2/model/model_32.xml index 1e27a53..c1f3001 100644 --- a/src/xml/escp2/model/model_32.xml +++ b/src/xml/escp2/model/model_32.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="32"> +<escp2Model id="32"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -71,10 +71,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -166,5 +166,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_33.xml b/src/xml/escp2/model/model_33.xml index ec3bdfc..1413325 100644 --- a/src/xml/escp2/model/model_33.xml +++ b/src/xml/escp2/model/model_33.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="33"> +<escp2Model id="33"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -71,10 +71,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -166,5 +166,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_34.xml b/src/xml/escp2/model/model_34.xml index 5ed9669..8776905 100644 --- a/src/xml/escp2/model/model_34.xml +++ b/src/xml/escp2/model/model_34.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="34"> +<escp2Model id="34"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -72,10 +72,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="180sw" text="180 DPI Economy"> @@ -165,5 +165,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_35.xml b/src/xml/escp2/model/model_35.xml index d31cd5e..4d53dc3 100644 --- a/src/xml/escp2/model/model_35.xml +++ b/src/xml/escp2/model/model_35.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="35"> +<escp2Model id="35"> <media src="escp2/media/photo_gen2.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -63,12 +63,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -160,5 +160,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_36.xml b/src/xml/escp2/model/model_36.xml index 54053d8..868f32e 100644 --- a/src/xml/escp2/model/model_36.xml +++ b/src/xml/escp2/model/model_36.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="36"> +<escp2Model id="36"> <media src="escp2/media/photo_gen2.xml"/> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -63,12 +63,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -160,5 +160,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_37.xml b/src/xml/escp2/model/model_37.xml index 21f5bb3..6a61c79 100644 --- a/src/xml/escp2/model/model_37.xml +++ b/src/xml/escp2/model/model_37.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="37"> +<escp2Model id="37"> <media src="escp2/media/photo_gen2.xml"/> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -63,12 +63,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -160,5 +160,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_38.xml b/src/xml/escp2/model/model_38.xml index b76194a..c2753bb 100644 --- a/src/xml/escp2/model/model_38.xml +++ b/src/xml/escp2/model/model_38.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="38"> +<escp2Model id="38"> <media src="escp2/media/x80.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -74,10 +74,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -161,5 +161,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize2">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_39.xml b/src/xml/escp2/model/model_39.xml index 83e2400..a3c4890 100644 --- a/src/xml/escp2/model/model_39.xml +++ b/src/xml/escp2/model/model_39.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="39"> +<escp2Model id="39"> <media src="escp2/media/standard_gen0.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -52,10 +52,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -121,5 +121,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_4.xml b/src/xml/escp2/model/model_4.xml index b683fc8..a64973e 100644 --- a/src/xml/escp2/model/model_4.xml +++ b/src/xml/escp2/model/model_4.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="4"> +<escp2Model id="4"> <media src="escp2/media/standard_gen0.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -53,10 +53,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">8 9 0 0</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="180dpi" text="180 DPI Economy"> @@ -138,5 +138,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_40.xml b/src/xml/escp2/model/model_40.xml index f714b0a..6efa562 100644 --- a/src/xml/escp2/model/model_40.xml +++ b/src/xml/escp2/model/model_40.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="40"> +<escp2Model id="40"> <media src="escp2/media/pro_pigment.xml"/> <inputSlots src="escp2/inputslots/spro5000.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -54,12 +54,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -126,5 +126,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_41.xml b/src/xml/escp2/model/model_41.xml index 459c7c1..e79f7d6 100644 --- a/src/xml/escp2/model/model_41.xml +++ b/src/xml/escp2/model/model_41.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="41"> +<escp2Model id="41"> <media src="escp2/media/pro_gen2.xml"/> <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -54,12 +54,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 9 9</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -133,5 +133,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize2">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_42.xml b/src/xml/escp2/model/model_42.xml index d975822..018e8fd 100644 --- a/src/xml/escp2/model/model_42.xml +++ b/src/xml/escp2/model/model_42.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="42"> +<escp2Model id="42"> <media src="escp2/media/x80.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -73,10 +73,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -152,5 +152,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize3">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_43.xml b/src/xml/escp2/model/model_43.xml index a09c4be..8a807f4 100644 --- a/src/xml/escp2/model/model_43.xml +++ b/src/xml/escp2/model/model_43.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="43"> +<escp2Model id="43"> <media src="escp2/media/x80.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -73,10 +73,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -160,5 +160,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize2">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_44.xml b/src/xml/escp2/model/model_44.xml index 94a230f..e1a3713 100644 --- a/src/xml/escp2/model/model_44.xml +++ b/src/xml/escp2/model/model_44.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="44"> +<escp2Model id="44"> <media src="escp2/media/c80.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -72,10 +72,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -155,5 +155,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_45.xml b/src/xml/escp2/model/model_45.xml index fe2c304..12aec03 100644 --- a/src/xml/escp2/model/model_45.xml +++ b/src/xml/escp2/model/model_45.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="45"> +<escp2Model id="45"> <media src="escp2/media/standard_gen0.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -52,10 +52,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -121,5 +121,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_46.xml b/src/xml/escp2/model/model_46.xml index 5c04d80..f6a9e86 100644 --- a/src/xml/escp2/model/model_46.xml +++ b/src/xml/escp2/model/model_46.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="46"> +<escp2Model id="46"> <media src="escp2/media/f360_photo.xml"/> <inputSlots src="escp2/inputslots/cd_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -71,13 +71,13 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> - <ChannelName translate="name" name="Black"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -138,5 +138,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_47.xml b/src/xml/escp2/model/model_47.xml index f2b71b0..a85b89b 100644 --- a/src/xml/escp2/model/model_47.xml +++ b/src/xml/escp2/model/model_47.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="47"> +<escp2Model id="47"> <media src="escp2/media/f360_ultrachrome.xml"/> <inputSlots src="escp2/inputslots/cd_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -70,13 +70,13 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CDOffset>204 191</CDOffset> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> - <ChannelName translate="name" name="Light Black"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> + <ChannelName translate="text" name="LightBlack" text="Light Black"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -147,5 +147,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_48.xml b/src/xml/escp2/model/model_48.xml index 402e28d..7d5abc8 100644 --- a/src/xml/escp2/model/model_48.xml +++ b/src/xml/escp2/model/model_48.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="48"> +<escp2Model id="48"> <media src="escp2/media/pro_ultrachrome.xml"/> <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -62,12 +62,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> @@ -135,5 +135,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_49.xml b/src/xml/escp2/model/model_49.xml index 0186d97..376c78f 100644 --- a/src/xml/escp2/model/model_49.xml +++ b/src/xml/escp2/model/model_49.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="49"> +<escp2Model id="49"> <media src="escp2/media/pro_ultrachrome.xml"/> <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -62,12 +62,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> @@ -135,5 +135,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_5.xml b/src/xml/escp2/model/model_5.xml index e49ebab..412118e 100644 --- a/src/xml/escp2/model/model_5.xml +++ b/src/xml/escp2/model/model_5.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="5"> +<escp2Model id="5"> <media src="escp2/media/standard_gen0.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -53,10 +53,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="180dpi" text="180 DPI Economy"> @@ -138,5 +138,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_50.xml b/src/xml/escp2/model/model_50.xml index 01e4e35..563bd1e 100644 --- a/src/xml/escp2/model/model_50.xml +++ b/src/xml/escp2/model/model_50.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="50"> +<escp2Model id="50"> <media src="escp2/media/photo_gen2.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -63,12 +63,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -156,5 +156,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_51.xml b/src/xml/escp2/model/model_51.xml index 2c0c87e..05dc317 100644 --- a/src/xml/escp2/model/model_51.xml +++ b/src/xml/escp2/model/model_51.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="51"> +<escp2Model id="51"> <media src="escp2/media/photo_gen2.xml"/> <inputSlots src="escp2/inputslots/cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -63,12 +63,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -156,5 +156,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_52.xml b/src/xml/escp2/model/model_52.xml index 30f3abe..c905bac 100644 --- a/src/xml/escp2/model/model_52.xml +++ b/src/xml/escp2/model/model_52.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="52"> +<escp2Model id="52"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -71,10 +71,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -162,5 +162,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_53.xml b/src/xml/escp2/model/model_53.xml index c197e67..7b03f47 100644 --- a/src/xml/escp2/model/model_53.xml +++ b/src/xml/escp2/model/model_53.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="53"> +<escp2Model id="53"> <media src="escp2/media/f360_photo7_japan.xml"/> <inputSlots src="escp2/inputslots/cd_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -70,13 +70,13 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> - <ChannelName translate="name" name="Dark Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> + <ChannelName translate="text" name="DarkYellow" text="Dark Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -137,5 +137,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_54.xml b/src/xml/escp2/model/model_54.xml index ccd116a..d11f135 100644 --- a/src/xml/escp2/model/model_54.xml +++ b/src/xml/escp2/model/model_54.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="54"> +<escp2Model id="54"> <media src="escp2/media/photo_gen1.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -58,12 +58,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90sw" text="360 x 90 DPI Fast Economy"> @@ -157,5 +157,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize2">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_55.xml b/src/xml/escp2/model/model_55.xml index d690c08..56136b9 100644 --- a/src/xml/escp2/model/model_55.xml +++ b/src/xml/escp2/model/model_55.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="55"> +<escp2Model id="55"> <media src="escp2/media/c82.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -72,10 +72,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -155,5 +155,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_56.xml b/src/xml/escp2/model/model_56.xml index 44e7936..774c270 100644 --- a/src/xml/escp2/model/model_56.xml +++ b/src/xml/escp2/model/model_56.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="56"> +<escp2Model id="56"> <media src="escp2/media/x80.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -72,10 +72,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -159,5 +159,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize2">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_57.xml b/src/xml/escp2/model/model_57.xml index da6ef78..e22530a 100644 --- a/src/xml/escp2/model/model_57.xml +++ b/src/xml/escp2/model/model_57.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="57"> +<escp2Model id="57"> <media src="escp2/media/f360_photo7_japan.xml"/> <inputSlots src="escp2/inputslots/cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -75,13 +75,13 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> - <ChannelName translate="name" name="Dark Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> + <ChannelName translate="text" name="DarkYellow" text="Dark Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="720x360sw" text="720 x 360 DPI"> @@ -139,5 +139,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_58.xml b/src/xml/escp2/model/model_58.xml index d5abbb4..3ddcd9c 100644 --- a/src/xml/escp2/model/model_58.xml +++ b/src/xml/escp2/model/model_58.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="58"> +<escp2Model id="58"> <media src="escp2/media/photo_gen2.xml"/> <inputSlots src="escp2/inputslots/cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -62,12 +62,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="720x360sw" text="720 x 360 DPI"> @@ -125,5 +125,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_59.xml b/src/xml/escp2/model/model_59.xml index a56aaf4..a395c3d 100644 --- a/src/xml/escp2/model/model_59.xml +++ b/src/xml/escp2/model/model_59.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="59"> +<escp2Model id="59"> <media src="escp2/media/x80.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -73,10 +73,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -160,5 +160,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize2">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_6.xml b/src/xml/escp2/model/model_6.xml index a83389f..e483625 100644 --- a/src/xml/escp2/model/model_6.xml +++ b/src/xml/escp2/model/model_6.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="6"> +<escp2Model id="6"> <media src="escp2/media/standard_gen0.xml"/> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -53,10 +53,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">8 9 0 0</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="180dpi" text="180 DPI Economy"> @@ -138,5 +138,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_60.xml b/src/xml/escp2/model/model_60.xml index 8e13707..eff87a4 100644 --- a/src/xml/escp2/model/model_60.xml +++ b/src/xml/escp2/model/model_60.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="60"> +<escp2Model id="60"> <media src="escp2/media/c82.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -76,10 +76,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -159,5 +159,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_61.xml b/src/xml/escp2/model/model_61.xml index 32c7f04..6abec7f 100644 --- a/src/xml/escp2/model/model_61.xml +++ b/src/xml/escp2/model/model_61.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="61"> +<escp2Model id="61"> <media src="escp2/media/c64.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -76,10 +76,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -169,5 +169,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_62.xml b/src/xml/escp2/model/model_62.xml index 4a6afe7..244bb10 100644 --- a/src/xml/escp2/model/model_62.xml +++ b/src/xml/escp2/model/model_62.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="62"> +<escp2Model id="62"> <media src="escp2/media/photo_gen2.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -65,12 +65,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -162,5 +162,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_63.xml b/src/xml/escp2/model/model_63.xml index 5e736e3..2eb655b 100644 --- a/src/xml/escp2/model/model_63.xml +++ b/src/xml/escp2/model/model_63.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="63"> +<escp2Model id="63"> <media src="escp2/media/photo_gen3.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -65,12 +65,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Light Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -152,5 +152,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_64.xml b/src/xml/escp2/model/model_64.xml index 3fe8624..478dedf 100644 --- a/src/xml/escp2/model/model_64.xml +++ b/src/xml/escp2/model/model_64.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="64"> +<escp2Model id="64"> <media src="escp2/media/r800.xml"/> <inputSlots src="escp2/inputslots/r1800.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -66,14 +66,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Matte Black"/> - <ChannelName translate="name" name="Photo Black"/> - <ChannelName translate="name" name="Red"/> - <ChannelName translate="name" name="Blue"/> - <ChannelName translate="name" name="Gloss Optimizer"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="MatteBlack" text="Matte Black"/> + <ChannelName translate="text" name="PhotoBlack" text="Photo Black"/> + <ChannelName translate="text" name="Red" text="Red"/> + <ChannelName translate="text" name="Blue" text="Blue"/> + <ChannelName translate="text" name="GlossOptimizer" text="Gloss Optimizer"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -170,5 +170,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_65.xml b/src/xml/escp2/model/model_65.xml index 812355a..556c1af 100644 --- a/src/xml/escp2/model/model_65.xml +++ b/src/xml/escp2/model/model_65.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="65"> +<escp2Model id="65"> <media src="escp2/media/cx3650.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -63,10 +63,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CDMediaSize>595 842</CDMediaSize> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -148,5 +148,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_66.xml b/src/xml/escp2/model/model_66.xml index 776d5b5..c08bd34 100644 --- a/src/xml/escp2/model/model_66.xml +++ b/src/xml/escp2/model/model_66.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="66"> +<escp2Model id="66"> <media src="escp2/media/c64.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -76,10 +76,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -169,5 +169,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_67.xml b/src/xml/escp2/model/model_67.xml index 0ee888b..ccb638c 100644 --- a/src/xml/escp2/model/model_67.xml +++ b/src/xml/escp2/model/model_67.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="67"> +<escp2Model id="67"> <media src="escp2/media/cmykrb.xml"/> <inputSlots src="escp2/inputslots/r1800.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -67,14 +67,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Matte Black"/> - <ChannelName translate="name" name="Photo Black"/> - <ChannelName translate="name" name="Red"/> - <ChannelName translate="name" name="Blue"/> - <ChannelName translate="name" name="Gloss Optimizer"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="MatteBlack" text="Matte Black"/> + <ChannelName translate="text" name="PhotoBlack" text="Photo Black"/> + <ChannelName translate="text" name="Red" text="Red"/> + <ChannelName translate="text" name="Blue" text="Blue"/> + <ChannelName translate="text" name="GlossOptimizer" text="Gloss Optimizer"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -171,5 +171,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_68.xml b/src/xml/escp2/model/model_68.xml index 0788063..3f82b14 100644 --- a/src/xml/escp2/model/model_68.xml +++ b/src/xml/escp2/model/model_68.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="68"> +<escp2Model id="68"> <media src="escp2/media/cmykrb.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -66,14 +66,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Matte Black"/> - <ChannelName translate="name" name="Photo Black"/> - <ChannelName translate="name" name="Red"/> - <ChannelName translate="name" name="Blue"/> - <ChannelName translate="name" name="Gloss Optimizer"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="MatteBlack" text="Matte Black"/> + <ChannelName translate="text" name="PhotoBlack" text="Photo Black"/> + <ChannelName translate="text" name="Red" text="Red"/> + <ChannelName translate="text" name="Blue" text="Blue"/> + <ChannelName translate="text" name="GlossOptimizer" text="Gloss Optimizer"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -170,5 +170,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_69.xml b/src/xml/escp2/model/model_69.xml index 1351e9d..d893b06 100644 --- a/src/xml/escp2/model/model_69.xml +++ b/src/xml/escp2/model/model_69.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="69"> +<escp2Model id="69"> <media src="escp2/media/c82.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -76,10 +76,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -167,5 +167,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_7.xml b/src/xml/escp2/model/model_7.xml index 7e6b0fa..3392389 100644 --- a/src/xml/escp2/model/model_7.xml +++ b/src/xml/escp2/model/model_7.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="7"> +<escp2Model id="7"> <media src="escp2/media/photo_gen0.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -53,12 +53,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>1 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -149,5 +149,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_70.xml b/src/xml/escp2/model/model_70.xml index 148a564..8dca4f9 100644 --- a/src/xml/escp2/model/model_70.xml +++ b/src/xml/escp2/model/model_70.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="70"> +<escp2Model id="70"> <media src="escp2/media/photo_gen4.xml"/> <inputSlots src="escp2/inputslots/rx700.xml"/> <qualityPresets src="escp2/qualitypresets/p1_5.xml"/> @@ -66,12 +66,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CDMediaSize>595 842</CDMediaSize> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Light Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -168,5 +168,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_71.xml b/src/xml/escp2/model/model_71.xml index 898d744..538b19a 100644 --- a/src/xml/escp2/model/model_71.xml +++ b/src/xml/escp2/model/model_71.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="71"> +<escp2Model id="71"> <media src="escp2/media/f360_ultrachrome_k3.xml"/> <inputSlots src="escp2/inputslots/r2400.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -67,14 +67,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CDMediaSize>595 842</CDMediaSize> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Light Light Black"/> - <ChannelName translate="name" name="Light Magenta"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Black"/> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="LightLightBlack" text="Light Light Black"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightBlack" text="Light Black"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -168,5 +168,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_72.xml b/src/xml/escp2/model/model_72.xml index 5587717..18320a5 100644 --- a/src/xml/escp2/model/model_72.xml +++ b/src/xml/escp2/model/model_72.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="72"> +<escp2Model id="72"> <media src="escp2/media/c64.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -74,10 +74,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -167,5 +167,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_73.xml b/src/xml/escp2/model/model_73.xml index 9daba8b..521a1a8 100644 --- a/src/xml/escp2/model/model_73.xml +++ b/src/xml/escp2/model/model_73.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="73"> +<escp2Model id="73"> <media src="escp2/media/picturemate_6.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/picturemate.xml"/> @@ -62,12 +62,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CDMediaSize>595 842</CDMediaSize> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Red"/> - <ChannelName translate="name" name="Blue"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Red" text="Red"/> + <ChannelName translate="text" name="Blue" text="Blue"/> </ChannelNames> <resolutions> <resolution translate="text" name="1440x720ov" text="1440 x 720 DPI"> @@ -120,5 +120,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_74.xml b/src/xml/escp2/model/model_74.xml index 55cbbfe..52ed4ba 100644 --- a/src/xml/escp2/model/model_74.xml +++ b/src/xml/escp2/model/model_74.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="74"> +<escp2Model id="74"> <media src="escp2/media/c64.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -62,10 +62,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -155,5 +155,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_75.xml b/src/xml/escp2/model/model_75.xml index 4565e95..ce5e38b 100644 --- a/src/xml/escp2/model/model_75.xml +++ b/src/xml/escp2/model/model_75.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="75"> +<escp2Model id="75"> <media src="escp2/media/c64.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -62,10 +62,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CDOffset>204 191</CDOffset> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -144,5 +144,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_76.xml b/src/xml/escp2/model/model_76.xml index cf18be9..6d263a1 100644 --- a/src/xml/escp2/model/model_76.xml +++ b/src/xml/escp2/model/model_76.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="76"> +<escp2Model id="76"> <media src="escp2/media/photo_gen4.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -64,10 +64,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CDOffset>204 191</CDOffset> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -146,5 +146,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_77.xml b/src/xml/escp2/model/model_77.xml index 2ec951b..e43b6d3 100644 --- a/src/xml/escp2/model/model_77.xml +++ b/src/xml/escp2/model/model_77.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="77"> +<escp2Model id="77"> <media src="escp2/media/photo_gen3_4.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -65,10 +65,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -158,5 +158,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_78.xml b/src/xml/escp2/model/model_78.xml index 90a5689..f402b11 100644 --- a/src/xml/escp2/model/model_78.xml +++ b/src/xml/escp2/model/model_78.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="78"> +<escp2Model id="78"> <media src="escp2/media/photo_gen2.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -63,12 +63,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>3 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -160,5 +160,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_79.xml b/src/xml/escp2/model/model_79.xml index dc9782a..74f15cb 100644 --- a/src/xml/escp2/model/model_79.xml +++ b/src/xml/escp2/model/model_79.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="79"> +<escp2Model id="79"> <media src="escp2/media/c82.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -76,10 +76,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -159,5 +159,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_8.xml b/src/xml/escp2/model/model_8.xml index 5c6ac5b..3c25414 100644 --- a/src/xml/escp2/model/model_8.xml +++ b/src/xml/escp2/model/model_8.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="8"> +<escp2Model id="8"> <media src="escp2/media/photo_gen0.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -52,12 +52,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -148,5 +148,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_80.xml b/src/xml/escp2/model/model_80.xml index 7e0ab82..b59b49b 100644 --- a/src/xml/escp2/model/model_80.xml +++ b/src/xml/escp2/model/model_80.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="80"> +<escp2Model id="80"> <media src="escp2/media/c82.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -76,10 +76,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -167,5 +167,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_81.xml b/src/xml/escp2/model/model_81.xml index cbadcdd..1c7ca95 100644 --- a/src/xml/escp2/model/model_81.xml +++ b/src/xml/escp2/model/model_81.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="81"> +<escp2Model id="81"> <media src="escp2/media/claria.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -67,12 +67,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Cyan"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90sw" text="360 x 90 DPI Fast Economy"> @@ -183,5 +183,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_82.xml b/src/xml/escp2/model/model_82.xml index 7cee45e..648a79d 100644 --- a/src/xml/escp2/model/model_82.xml +++ b/src/xml/escp2/model/model_82.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="82"> +<escp2Model id="82"> <media src="escp2/media/claria1400.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -67,12 +67,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Cyan"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90sw" text="360 x 90 DPI Fast Economy"> @@ -203,5 +203,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_83.xml b/src/xml/escp2/model/model_83.xml index 3a8b6e5..bd51f8b 100644 --- a/src/xml/escp2/model/model_83.xml +++ b/src/xml/escp2/model/model_83.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="83"> +<escp2Model id="83"> <media src="escp2/media/photo_gen3_4.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -65,10 +65,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -158,5 +158,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_84.xml b/src/xml/escp2/model/model_84.xml index bd11e7a..f6e299c 100644 --- a/src/xml/escp2/model/model_84.xml +++ b/src/xml/escp2/model/model_84.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="84"> +<escp2Model id="84"> <media src="escp2/media/photo_gen3.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -65,12 +65,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Light Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -152,5 +152,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_85.xml b/src/xml/escp2/model/model_85.xml index 2cdc01c..ccb8729 100644 --- a/src/xml/escp2/model/model_85.xml +++ b/src/xml/escp2/model/model_85.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="85"> +<escp2Model id="85"> <media src="escp2/media/c120.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -78,11 +78,11 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black 1"/> - <ChannelName translate="name" name="Black 2"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black1" text="Black 1"/> + <ChannelName translate="text" name="Black2" text="Black 2"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -211,5 +211,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_86.xml b/src/xml/escp2/model/model_86.xml index 9d04ab5..8728afe 100644 --- a/src/xml/escp2/model/model_86.xml +++ b/src/xml/escp2/model/model_86.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="86"> +<escp2Model id="86"> <media src="escp2/media/picturemate_4.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/picturemate.xml"/> @@ -62,10 +62,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CDMediaSize>595 842</CDMediaSize> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Black"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Black" text="Black"/> </ChannelNames> <resolutions> <resolution translate="text" name="1440x720ov" text="1440 x 720 DPI"> @@ -118,5 +118,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_87.xml b/src/xml/escp2/model/model_87.xml index ded92ec..9b525be 100644 --- a/src/xml/escp2/model/model_87.xml +++ b/src/xml/escp2/model/model_87.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="87"> +<escp2Model id="87"> <media src="escp2/media/b500.xml"/> <inputSlots src="escp2/inputslots/b500.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -64,10 +64,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins duplex="duplex">-32768 -32768 27 27</margins> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutionScale>14400</resolutionScale> <resolutions> @@ -189,5 +189,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_88.xml b/src/xml/escp2/model/model_88.xml index 755938c..092a770 100644 --- a/src/xml/escp2/model/model_88.xml +++ b/src/xml/escp2/model/model_88.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="88"> +<escp2Model id="88"> <media src="escp2/media/pro_ultrachrome_k3v.xml"/> <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -146,5 +146,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_89.xml b/src/xml/escp2/model/model_89.xml index 9866e37..3bbe9f2 100644 --- a/src/xml/escp2/model/model_89.xml +++ b/src/xml/escp2/model/model_89.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="89"> +<escp2Model id="89"> <media src="escp2/media/pro_ultrachrome_k3v.xml"/> <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -146,5 +146,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_9.xml b/src/xml/escp2/model/model_9.xml index 7dccef2..77cb14a 100644 --- a/src/xml/escp2/model/model_9.xml +++ b/src/xml/escp2/model/model_9.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="9"> +<escp2Model id="9"> <media src="escp2/media/photo_gen0.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -53,12 +53,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> @@ -141,5 +141,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_90.xml b/src/xml/escp2/model/model_90.xml index 0a6962d..4af4ce5 100644 --- a/src/xml/escp2/model/model_90.xml +++ b/src/xml/escp2/model/model_90.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="90"> +<escp2Model id="90"> <media src="escp2/media/pro_ultrachrome_k3v.xml"/> <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -146,5 +146,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_91.xml b/src/xml/escp2/model/model_91.xml index e55cc0b..bfcd899 100644 --- a/src/xml/escp2/model/model_91.xml +++ b/src/xml/escp2/model/model_91.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="91"> +<escp2Model id="91"> <media src="escp2/media/cmykro.xml"/> <inputSlots src="escp2/inputslots/r1800.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -67,14 +67,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Matte Black"/> - <ChannelName translate="name" name="Photo Black"/> - <ChannelName translate="name" name="Red"/> - <ChannelName translate="name" name="Orange"/> - <ChannelName translate="name" name="Gloss Optimizer"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="MatteBlack" text="Matte Black"/> + <ChannelName translate="text" name="PhotoBlack" text="Photo Black"/> + <ChannelName translate="text" name="Red" text="Red"/> + <ChannelName translate="text" name="Orange" text="Orange"/> + <ChannelName translate="text" name="GlossOptimizer" text="Gloss Optimizer"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -178,5 +178,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize2">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_92.xml b/src/xml/escp2/model/model_92.xml index c9935a7..516ef1f 100644 --- a/src/xml/escp2/model/model_92.xml +++ b/src/xml/escp2/model/model_92.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="92"> +<escp2Model id="92"> <media src="escp2/media/c120.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/wf40.xml"/> @@ -78,10 +78,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Cyan"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -212,5 +212,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_93.xml b/src/xml/escp2/model/model_93.xml index 49677b3..34c6006 100644 --- a/src/xml/escp2/model/model_93.xml +++ b/src/xml/escp2/model/model_93.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="93"> +<escp2Model id="93"> <media src="escp2/media/wf500.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/wf40.xml"/> @@ -68,10 +68,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CDMediaSize>595 842</CDMediaSize> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -200,5 +200,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_94.xml b/src/xml/escp2/model/model_94.xml index 534cfe2..f2a855e 100644 --- a/src/xml/escp2/model/model_94.xml +++ b/src/xml/escp2/model/model_94.xml @@ -1,6 +1,7 @@ <?xml version="1.0"?> <gutenprint xmlns="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0" +xmlns:escp2="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint.xsd"> <copyright> @@ -20,7 +21,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="94"> +<escp2Model id="94"> <media src="escp2/media/wf500.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/wf40.xml"/> @@ -80,10 +81,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CDMediaSize>595 842</CDMediaSize> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -179,5 +180,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_95.xml b/src/xml/escp2/model/model_95.xml index d4c0987..2bbf4b5 100644 --- a/src/xml/escp2/model/model_95.xml +++ b/src/xml/escp2/model/model_95.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="95"> +<escp2Model id="95"> <media src="escp2/media/cx3650.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -63,10 +63,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CDMediaSize>595 842</CDMediaSize> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> @@ -156,5 +156,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_96.xml b/src/xml/escp2/model/model_96.xml index e79af9d..14b6b6d 100644 --- a/src/xml/escp2/model/model_96.xml +++ b/src/xml/escp2/model/model_96.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="96"> +<escp2Model id="96"> <media src="escp2/media/artisan.xml"/> <inputSlots src="escp2/inputslots/artisan.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -67,12 +67,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CDMediaSize>595 842</CDMediaSize> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Light Magenta"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -174,5 +174,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_97.xml b/src/xml/escp2/model/model_97.xml index 9323c2f..76c428b 100644 --- a/src/xml/escp2/model/model_97.xml +++ b/src/xml/escp2/model/model_97.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="97"> +<escp2Model id="97"> <media src="escp2/media/claria.xml"/> <inputSlots src="escp2/inputslots/rx680.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -31,7 +31,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <preinitRemoteSequence>SN\001\000\000</preinitRemoteSequence> <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> <commandSet>2000</commandSet> - <borderless>Yes</borderless> + <borderless>Full</borderless> <supportsVariableDropsizes/> <hasFastGraymode/> <sendZeroAdvance/> @@ -67,12 +67,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CDMediaSize>595 842</CDMediaSize> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Yellow"/> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Magenta"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Cyan"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightMagenta" text="Light Magenta"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x90sw" text="360 x 90 DPI Fast Economy"> @@ -184,5 +184,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_98.xml b/src/xml/escp2/model/model_98.xml index ed8eb85..6e117cc 100644 --- a/src/xml/escp2/model/model_98.xml +++ b/src/xml/escp2/model/model_98.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="98"> +<escp2Model id="98"> <media src="escp2/media/f360_ultrachrome_k3v.xml"/> <inputSlots src="escp2/inputslots/r2880.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -67,14 +67,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <CDMediaSize>595 842</CDMediaSize> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Light Light Black"/> - <ChannelName translate="name" name="Vivid Light Magenta"/> - <ChannelName translate="name" name="Light Cyan"/> - <ChannelName translate="name" name="Light Black"/> - <ChannelName translate="name" name="Black"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Vivid Magenta"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="LightLightBlack" text="Light Light Black"/> + <ChannelName translate="text" name="VividLightMagenta" text="Vivid Light Magenta"/> + <ChannelName translate="text" name="LightCyan" text="Light Cyan"/> + <ChannelName translate="text" name="LightBlack" text="Light Black"/> + <ChannelName translate="text" name="Black" text="Black"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="VividMagenta" text="Vivid Magenta"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -168,5 +168,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_99.xml b/src/xml/escp2/model/model_99.xml index ab0e2a8..a56c405 100644 --- a/src/xml/escp2/model/model_99.xml +++ b/src/xml/escp2/model/model_99.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:model id="99"> +<escp2Model id="99"> <media src="escp2/media/c120.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -78,11 +78,11 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <extraBottom>24</extraBottom> <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> - <ChannelName translate="name" name="Black 1"/> - <ChannelName translate="name" name="Black 2"/> - <ChannelName translate="name" name="Magenta"/> - <ChannelName translate="name" name="Cyan"/> - <ChannelName translate="name" name="Yellow"/> + <ChannelName translate="text" name="Black1" text="Black 1"/> + <ChannelName translate="text" name="Black2" text="Black 2"/> + <ChannelName translate="text" name="Magenta" text="Magenta"/> + <ChannelName translate="text" name="Cyan" text="Cyan"/> + <ChannelName translate="text" name="Yellow" text="Yellow"/> </ChannelNames> <resolutions> <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> @@ -211,5 +211,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize1">1.000000</parameter> </resolution> </resolutions> -</escp2:model> +</escp2Model> </gutenprint> diff --git a/src/xml/escp2/qualitypresets/Makefile.in b/src/xml/escp2/qualitypresets/Makefile.in index e2fd678..cec2145 100644 --- a/src/xml/escp2/qualitypresets/Makefile.in +++ b/src/xml/escp2/qualitypresets/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -21,6 +20,51 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -39,8 +83,8 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/scripts/global.mk +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs subdir = src/xml/escp2/qualitypresets ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -60,8 +104,25 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -83,12 +144,20 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } am__installdirs = "$(DESTDIR)$(pkgxmldatadir)" DATA = $(pkgxmldata_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -146,6 +215,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -157,6 +227,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -181,6 +252,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -335,6 +408,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -352,8 +426,11 @@ clean-libtool: -rm -rf .libs _libs install-pkgxmldataDATA: $(pkgxmldata_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgxmldatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgxmldatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -367,14 +444,12 @@ uninstall-pkgxmldataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgxmldatadir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgxmldatadir)" && rm -f $$files -tags: TAGS -TAGS: + dir='$(DESTDIR)$(pkgxmldatadir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: distdir: $(DISTFILES) @@ -427,10 +502,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -512,16 +592,17 @@ uninstall-am: uninstall-pkgxmldataDATA .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ - clean-libtool dist-hook distclean distclean-generic \ - distclean-libtool distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgxmldataDATA install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am uninstall uninstall-am uninstall-pkgxmldataDATA + clean-libtool cscopelist-am ctags-am dist-hook distclean \ + distclean-generic distclean-libtool distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgxmldataDATA install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-pkgxmldataDATA @SET_MAKE@ diff --git a/src/xml/escp2/qualitypresets/p1_5.xml b/src/xml/escp2/qualitypresets/p1_5.xml index a25073c..f232653 100644 --- a/src/xml/escp2/qualitypresets/p1_5.xml +++ b/src/xml/escp2/qualitypresets/p1_5.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:QualityPresets name="p1_5"> +<escp2QualityPresets name="p1_5"> <quality translate="text" name="FastEconomy" text="Fast Economy"> <minimumResolution>180 90</minimumResolution> <maximumResolution>360 120</maximumResolution> @@ -66,5 +66,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <maximumResolution>0 1440</maximumResolution> <desiredResolution>-1 -1</desiredResolution> </quality> -</escp2:QualityPresets> +</escp2QualityPresets> </gutenprint> diff --git a/src/xml/escp2/qualitypresets/picturemate.xml b/src/xml/escp2/qualitypresets/picturemate.xml index b4b24f8..8fde2f7 100644 --- a/src/xml/escp2/qualitypresets/picturemate.xml +++ b/src/xml/escp2/qualitypresets/picturemate.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:QualityPresets name="picturemate"> +<escp2QualityPresets name="picturemate"> <quality translate="text" name="Draft" text="Draft"> <minimumResolution>1440 720</minimumResolution> <maximumResolution>1440 720</maximumResolution> @@ -56,5 +56,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <maximumResolution>5760 1440</maximumResolution> <desiredResolution>5760 1440</desiredResolution> </quality> -</escp2:QualityPresets> +</escp2QualityPresets> </gutenprint> diff --git a/src/xml/escp2/qualitypresets/prox900.xml b/src/xml/escp2/qualitypresets/prox900.xml index 35ab6e7..37758df 100644 --- a/src/xml/escp2/qualitypresets/prox900.xml +++ b/src/xml/escp2/qualitypresets/prox900.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:QualityPresets name="standard"> +<escp2QualityPresets name="standard"> <quality translate="text" name="FastEconomy" text="Fast Economy"> <minimumResolution>180 90</minimumResolution> <maximumResolution>360 120</maximumResolution> @@ -66,5 +66,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <maximumResolution>0 1440</maximumResolution> <desiredResolution>-1 -1</desiredResolution> </quality> -</escp2:QualityPresets> +</escp2QualityPresets> </gutenprint> diff --git a/src/xml/escp2/qualitypresets/standard.xml b/src/xml/escp2/qualitypresets/standard.xml index 0878aad..8875fb8 100644 --- a/src/xml/escp2/qualitypresets/standard.xml +++ b/src/xml/escp2/qualitypresets/standard.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:QualityPresets name="standard"> +<escp2QualityPresets name="standard"> <quality translate="text" name="FastEconomy" text="Fast Economy"> <minimumResolution>180 90</minimumResolution> <maximumResolution>360 120</maximumResolution> @@ -66,5 +66,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <maximumResolution>0 1440</maximumResolution> <desiredResolution>-1 -1</desiredResolution> </quality> -</escp2:QualityPresets> +</escp2QualityPresets> </gutenprint> diff --git a/src/xml/escp2/qualitypresets/v2880.xml b/src/xml/escp2/qualitypresets/v2880.xml index 82735ce..022cb42 100644 --- a/src/xml/escp2/qualitypresets/v2880.xml +++ b/src/xml/escp2/qualitypresets/v2880.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:QualityPresets name="v2880"> +<escp2QualityPresets name="v2880"> <quality translate="text" name="FastEconomy" text="Fast Economy"> <minimumResolution>180 90</minimumResolution> <maximumResolution>360 120</maximumResolution> @@ -66,5 +66,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <maximumResolution>0 0</maximumResolution> <desiredResolution>-1 -1</desiredResolution> </quality> -</escp2:QualityPresets> +</escp2QualityPresets> </gutenprint> diff --git a/src/xml/escp2/qualitypresets/wf40.xml b/src/xml/escp2/qualitypresets/wf40.xml index 2f135a4..272190f 100644 --- a/src/xml/escp2/qualitypresets/wf40.xml +++ b/src/xml/escp2/qualitypresets/wf40.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:QualityPresets name="standard"> +<escp2QualityPresets name="standard"> <quality translate="text" name="Economy" text="Economy"> <minimumResolution>180 90</minimumResolution> <maximumResolution>360 120</maximumResolution> @@ -61,5 +61,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <maximumResolution>0 1440</maximumResolution> <desiredResolution>-1 -1</desiredResolution> </quality> -</escp2:QualityPresets> +</escp2QualityPresets> </gutenprint> diff --git a/src/xml/escp2/weaves/Makefile.in b/src/xml/escp2/weaves/Makefile.in index c2d0c83..c9b6ba7 100644 --- a/src/xml/escp2/weaves/Makefile.in +++ b/src/xml/escp2/weaves/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -21,6 +20,51 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -39,8 +83,8 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/scripts/global.mk +DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs subdir = src/xml/escp2/weaves ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -60,8 +104,25 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -83,12 +144,20 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } am__installdirs = "$(DESTDIR)$(pkgxmldatadir)" DATA = $(pkgxmldata_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -146,6 +215,7 @@ GUTENPRINTUI2_INTERFACE_AGE = @GUTENPRINTUI2_INTERFACE_AGE@ GUTENPRINTUI2_LIBDEPS = @GUTENPRINTUI2_LIBDEPS@ GUTENPRINTUI2_LIBS = $(top_builddir)/src/gutenprintui2/libgutenprintui2.la GUTENPRINTUI2_VERSION = @GUTENPRINTUI2_VERSION@ +GUTENPRINT_BASE_VERSION = @GUTENPRINT_BASE_VERSION@ GUTENPRINT_BINARY_AGE = @GUTENPRINT_BINARY_AGE@ GUTENPRINT_CFLAGS = @GUTENPRINT_CFLAGS@ GUTENPRINT_CURRENT_INTERFACE = @GUTENPRINT_CURRENT_INTERFACE@ @@ -157,6 +227,7 @@ GUTENPRINT_LIBS = $(top_builddir)/src/main/libgutenprint.la GUTENPRINT_MAJOR_VERSION = @GUTENPRINT_MAJOR_VERSION@ GUTENPRINT_MICRO_VERSION = @GUTENPRINT_MICRO_VERSION@ GUTENPRINT_MINOR_VERSION = @GUTENPRINT_MINOR_VERSION@ +GUTENPRINT_RELEASE_VERSION = @GUTENPRINT_RELEASE_VERSION@ GUTENPRINT_VERSION = @GUTENPRINT_VERSION@ IJS_CFLAGS = @IJS_CFLAGS@ IJS_CONFIG = @IJS_CONFIG@ @@ -181,6 +252,8 @@ LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ LIBS = $(INTLLIBS) @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ @@ -333,6 +406,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/scripts/global.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -350,8 +424,11 @@ clean-libtool: -rm -rf .libs _libs install-pkgxmldataDATA: $(pkgxmldata_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgxmldatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgxmldatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgxmldatadir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -365,14 +442,12 @@ uninstall-pkgxmldataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgxmldatadir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgxmldatadir)" && rm -f $$files -tags: TAGS -TAGS: + dir='$(DESTDIR)$(pkgxmldatadir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: distdir: $(DISTFILES) @@ -425,10 +500,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -510,16 +590,17 @@ uninstall-am: uninstall-pkgxmldataDATA .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ - clean-libtool dist-hook distclean distclean-generic \ - distclean-libtool distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgxmldataDATA install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am uninstall uninstall-am uninstall-pkgxmldataDATA + clean-libtool cscopelist-am ctags-am dist-hook distclean \ + distclean-generic distclean-libtool distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgxmldataDATA install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-pkgxmldataDATA @SET_MAKE@ diff --git a/src/xml/escp2/weaves/pro7000.xml b/src/xml/escp2/weaves/pro7000.xml index b700f82..35cacb1 100644 --- a/src/xml/escp2/weaves/pro7000.xml +++ b/src/xml/escp2/weaves/pro7000.xml @@ -20,11 +20,11 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:PrinterWeaves name="pro7000"> +<escp2PrinterWeaves name="pro7000"> <weave translate="text" name="Off" text="Off" command="\033(i\001\000\000"/> <weave translate="text" name="On" text="Interleave" command="\033(i\001\000\001"/> <weave translate="text" name="FOL" text="Full Overlap" command="\033(i\001\000\002"/> <weave translate="text" name="FourPass" text="Four Pass" command="\033(i\001\000\003"/> <weave translate="text" name="FOL2" text="Full Overlap 2" command="\033(i\001\000\004"/> -</escp2:PrinterWeaves> +</escp2PrinterWeaves> </gutenprint> diff --git a/src/xml/escp2/weaves/pro7500.xml b/src/xml/escp2/weaves/pro7500.xml index 9522415..b8f1664 100644 --- a/src/xml/escp2/weaves/pro7500.xml +++ b/src/xml/escp2/weaves/pro7500.xml @@ -20,12 +20,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:PrinterWeaves name="pro7500"> +<escp2PrinterWeaves name="pro7500"> <weave translate="text" name="Off" text="Off" command="\033(i\001\000\000"/> <weave translate="text" name="On" text="Interleave" command="\033(i\001\000\001"/> <weave translate="text" name="FOL" text="Full Overlap" command="\033(i\001\000\002"/> <weave translate="text" name="FourPass" text="Four Pass" command="\033(i\001\000\003"/> <weave translate="text" name="FOL2" text="Full Overlap 2" command="\033(i\001\000\004"/> <weave translate="text" name="MW2" text="Interleave 2" command="\033(i\001\000\005"/> -</escp2:PrinterWeaves> +</escp2PrinterWeaves> </gutenprint> diff --git a/src/xml/escp2/weaves/pro7600.xml b/src/xml/escp2/weaves/pro7600.xml index a0b98a3..32c2727 100644 --- a/src/xml/escp2/weaves/pro7600.xml +++ b/src/xml/escp2/weaves/pro7600.xml @@ -20,7 +20,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:PrinterWeaves name="pro7600"> +<escp2PrinterWeaves name="pro7600"> <weave translate="text" name="Off" text="Off" command="\033(i\001\000\000"/> <weave translate="text" name="On" text="Interleave" command="\033(i\001\000\001"/> <weave translate="text" name="FOL" text="Full Overlap" command="\033(i\001\000\002"/> @@ -28,5 +28,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <weave translate="text" name="FOL2" text="Full Overlap 2" command="\033(i\001\000\004"/> <weave translate="text" name="MW2" text="Interleave 2" command="\033(i\001\000\005"/> <weave translate="text" name="EightPass" text="Eight Pass" command="\033(i\001\000\006"/> -</escp2:PrinterWeaves> +</escp2PrinterWeaves> </gutenprint> diff --git a/src/xml/escp2/weaves/standard.xml b/src/xml/escp2/weaves/standard.xml index 98112bf..6c82fea 100644 --- a/src/xml/escp2/weaves/standard.xml +++ b/src/xml/escp2/weaves/standard.xml @@ -20,8 +20,8 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. </copyright> -<escp2:PrinterWeaves name="standard"> +<escp2PrinterWeaves name="standard"> <weave translate="text" name="Off" text="Off" command="\033(i\001\000\000"/> <weave translate="text" name="On" text="On" command="\033(i\001\000\001"/> -</escp2:PrinterWeaves> +</escp2PrinterWeaves> </gutenprint> diff --git a/src/xml/extract-strings.c b/src/xml/extract-strings.c index e6cecec..0f1b286 100644 --- a/src/xml/extract-strings.c +++ b/src/xml/extract-strings.c @@ -1,5 +1,5 @@ /* - * "$Id: extract-strings.c,v 1.2 2008/06/14 02:25:25 rlk Exp $" + * "$Id: extract-strings.c,v 1.3 2013/12/14 19:30:45 rlk Exp $" * * Extract translation strings * @@ -37,19 +37,25 @@ main(int argc, char **argv) if (top) { stp_mxml_node_t *n = top; + stp_string_list_t *sl = stp_string_list_create(); do { const char *attr = stp_mxmlElementGetAttr(n, "translate"); if (attr) { const char *str = stp_mxmlElementGetAttr(n, attr); - char *s; - stp_asprintf(&s, "N_(\"%s\");", str); - printf("%-40s /* %s */\n", s, *argv); - stp_free(s); + if (! stp_string_list_is_present(sl, str)) + { + char *s; + stp_string_list_add_string_unsafe(sl, str, str); + stp_asprintf(&s, "N_(\"%s\");", str); + printf("%-40s /* %s */\n", s, *argv); + stp_free(s); + } } n = stp_mxmlWalkNext(n, top, STP_MXML_DESCEND); } while (n); + stp_string_list_destroy(sl); stp_mxmlDelete(top); } else diff --git a/src/xml/papers.xml b/src/xml/papers.xml index 86e2e5a..a532352 100644 --- a/src/xml/papers.xml +++ b/src/xml/papers.xml @@ -1,7 +1,7 @@ <?xml version="1.0"?> <!-- - "$Id: papers.xml,v 1.10 2011/11/06 06:21:15 gernot2270 Exp $" + "$Id: papers.xml,v 1.16 2014/01/22 13:52:41 rlk Exp $" XML description of papers known to libgutenprint. You can add additional paper sizes here. @@ -128,6 +128,12 @@ <height value="360"/> <unit value="english-extended"/> </paper> + <paper name="w144h432"> + <description translate="value" value="2x6"/> + <width value="144"/> + <height value="432"/> + <unit value="english"/> + </paper> <paper name="w288h432"> <description translate="value" value="4x6"/> <width value="288"/> @@ -184,12 +190,30 @@ <height value="576"/> <unit value="english-extended"/> </paper> + <paper name="w432h432"> + <description translate="value" value="6x6"/> + <width value="432"/> + <height value="432"/> + <unit value="english-extended"/> + </paper> <paper name="w432h576"> <description translate="value" value="6x8"/> <width value="432"/> <height value="576"/> <unit value="english-extended"/> </paper> + <paper name="w432h612"> + <description translate="value" value="6x8.5"/> + <width value="432"/> + <height value="612"/> + <unit value="english-extended"/> + </paper> + <paper name="w432h648"> + <description translate="value" value="6x9"/> + <width value="432"/> + <height value="648"/> + <unit value="english-extended"/> + </paper> <paper name="c8x10"> <description translate="value" value="8x10"/> <width value="576"/> @@ -232,6 +256,12 @@ <!-- Other common photographic paper sizes --> + <paper name="w576h576"> + <description translate="value" value="8x8"/> + <width value="576"/> + <height value="576"/> + <unit value="english-extended"/> + </paper> <paper name="w576h864"> <description translate="value" value="8x12"/> <comment value="Sometimes used for 35mm"/> @@ -239,6 +269,13 @@ <height value="864"/> <unit value="english-extended"/> </paper> + <paper name="w612h864"> + <description translate="value" value="8.5x12"/> + <comment value="8.5in x 12in"/> + <width value="612"/> + <height value="864"/> + <unit value="english"/> + </paper> <paper name="w720h864J"> <description translate="value" value="YonKire"/> <comment value="10in x 12in"/> @@ -1267,14 +1304,14 @@ <unit value="metric-extended"/> </paper> <paper name="w155h244"> - <description translate="value" value="Card"/> + <description translate="value" value="Credit Card"/> <comment value="54mm x 86mm"/> <width value="155"/> <height value="244"/> <unit value="metric-extended"/> </paper> <paper name="w155h257"> - <description translate="value" value="Card"/> + <description translate="value" value="Japanese Business Card"/> <comment value="55mm x 91mm"/> <width value="155"/> <height value="257"/> diff --git a/src/xml/printers.xml b/src/xml/printers.xml index d94996f..84f0ce9 100644 --- a/src/xml/printers.xml +++ b/src/xml/printers.xml @@ -1,7 +1,7 @@ <?xml version="1.0"?> <!-- - "$Id: printers.xml,v 1.247 2012/05/27 15:11:29 gernot2270 Exp $" + "$Id: printers.xml,v 1.354 2014/02/13 04:36:16 speachy Exp $" XML description of printers known to libgutenprint You can add additional printers here, but the underlying driver has @@ -113,6 +113,7 @@ <printer translate="name" name="Canon BJC-4550" driver="bjc-4550" manufacturer="Canon" model="4550" parameters="density_800_params" foomaticid="Canon-BJC-4550" /> <printer translate="name" name="Canon BJC-5100" driver="bjc-5100" manufacturer="Canon" model="5100" parameters="density_800_params" foomaticid="Canon-BJC-5100" /> <printer translate="name" name="Canon BJC-5500" driver="bjc-5500" manufacturer="Canon" model="5500" parameters="density_800_params" foomaticid="Canon-BJC-5500" /> + <printer translate="name" name="Canon BJC-5500J" driver="bjc-5500j" manufacturer="Canon" model="5500" parameters="density_800_params" foomaticid="Canon-BJC-5500J" /> <printer translate="name" name="Canon BJC-6000" deviceid="MFG:Canon;MDL:BJC-6000;DES:Canon BJC-6000;CMD:BJL,BJRaster3,BSCC,TXT;" driver="bjc-6000" manufacturer="Canon" model="6000" parameters="gamma_750_params" foomaticid="Canon-BJC-6000" /> <printer translate="name" name="Canon BJC-6100" driver="bjc-6100" manufacturer="Canon" model="6100" parameters="density_800_params" foomaticid="Canon-BJC-6100" /> <printer translate="name" name="Canon BJC-6200" deviceid="MFG:Canon;MDL:BJC-6200;DES:Canon BJC-6200;CMD:BJL,BJRaster3,BSCC,TXT01,BJScan2;" driver="bjc-6200" manufacturer="Canon" model="6200" parameters="gamma_750_params" foomaticid="Canon-BJC-6200" /> @@ -148,140 +149,816 @@ <printer translate="name" name="Canon PIXMA iP90v" driver="bjc-PIXMA-iP90v" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP90v" /> <printer translate="name" name="Canon PIXMA iP100" driver="bjc-PIXMA-iP100" manufacturer="Canon" model="3000100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP100" /> <printer translate="name" name="Canon PIXMA iP2000" driver="bjc-PIXMA-iP2000" manufacturer="Canon" model="3002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2000" /> + <!-- Canon iP2700 family --> + <printer translate="name" name="Canon iP2700 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe,IVEC,IVECPLI;SOJ:TXT01;MDL:iP2700 series;CLS:PRINTER;DES:Canon iP2700 series;VER:1.030;STA:30;FSI:00;HRI:EU;MSI:AOFF,BOFF,DAT,E3;PDR:4;" driver="bjc-iP2700-series" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP2700-series" /> <printer translate="name" name="Canon PIXMA iP2700" driver="bjc-PIXMA-iP2700" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2700" /> - <printer translate="name" name="Canon PIXMA iP3000" driver="bjc-PIXMA-iP3000" manufacturer="Canon" model="3003000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3000" /> + <printer translate="name" name="Canon PIXUS iP2700" driver="bjc-PIXUS-iP2700" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP2700" /> + <printer translate="name" name="Canon PIXMA iP2701" driver="bjc-PIXMA-iP2701" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2701" /> + <printer translate="name" name="Canon PIXMA iP2702" driver="bjc-PIXMA-iP2702" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2702" /> + <printer translate="name" name="Canon PIXMA iP2740" driver="bjc-PIXMA-iP2740" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2740" /> + <printer translate="name" name="Canon PIXMA iP2760" driver="bjc-PIXMA-iP2760" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2760" /> + <printer translate="name" name="Canon PIXMA iP2770" driver="bjc-PIXMA-iP2770" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2770" /> + <printer translate="name" name="Canon PIXMA iP2772" driver="bjc-PIXMA-iP2772" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2772" /> + <printer translate="name" name="Canon PIXMA iP2780" driver="bjc-PIXMA-iP2780" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2780" /> + <printer translate="name" name="Canon PIXMA iP2788" driver="bjc-PIXMA-iP2788" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2788" /> + <!-- Canon iP3000 --> + <printer translate="name" name="Canon PIXMA iP3000" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe;SOJ:TXT01;MDL:iP3000;CLS:PRINTER;DES:Canon iP3000;VER:1.06;STA:10;FSI:03;" driver="bjc-PIXMA-iP3000" manufacturer="Canon" model="3003000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3000" /> + <!-- Canon iP3100 (PIXUS only, PIXMA iP3100 does not exist) --> <printer translate="name" name="Canon PIXMA iP3100" driver="bjc-PIXMA-iP3100" manufacturer="Canon" model="3003100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3100" /> + <printer translate="name" name="Canon PIXUS iP3100" driver="bjc-PIXUS-iP3100" manufacturer="Canon" model="3003100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP3100" /> + <!-- Canon iP3300 family --> + <printer translate="name" name="Canon iP3300 series" driver="bjc-iP3300-series" manufacturer="Canon" model="3003300" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP3300-series" /> <printer translate="name" name="Canon PIXMA iP3300" driver="bjc-PIXMA-iP3300" manufacturer="Canon" model="3003300" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3300" /> + <printer translate="name" name="Canon PIXUS iP3300" driver="bjc-PIXUS-iP3300" manufacturer="Canon" model="3003300" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP3300" /> + <!-- Canon iP3500 family --> + <printer translate="name" name="Canon iP3500 series" driver="bjc-iP3500-series" manufacturer="Canon" model="3003500" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP3500-series" /> <printer translate="name" name="Canon PIXMA iP3500" driver="bjc-PIXMA-iP3500" manufacturer="Canon" model="3003500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3500" /> + <printer translate="name" name="Canon PIXUS iP3500" driver="bjc-PIXUS-iP3500" manufacturer="Canon" model="3003500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP3500" /> + <!-- Canon iP3600 family --> + <printer translate="name" name="Canon iP3600 series" driver="bjc-iP3600-series" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP3600-series" /> <printer translate="name" name="Canon PIXMA iP3600" driver="bjc-PIXMA-iP3600" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3600" /> - <printer translate="name" name="Canon PIXMA iP4000" driver="bjc-iP4000" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP4000" /> - <printer translate="name" name="Canon PIXMA iP4000R" driver="bjc-PIXMA-iP4000R" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP4000R" /> + <printer translate="name" name="Canon PIXUS iP3600" driver="bjc-PIXUS-iP3600" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP3600" /> + <printer translate="name" name="Canon PIXMA iP3680" driver="bjc-PIXMA-iP3680" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3680" /> + <!-- Canon iP4000 --> + <printer translate="name" name="Canon PIXMA iP4000" deviceid="MFG:Canon;MDL:iP4000;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-iP4000" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP4000" /><!-- driver and foomaticid legacy: missing brand name in both --> + <!-- Canon iP4000R --> + <printer translate="name" name="Canon PIXMA iP4000R" driver="bjc-PIXMA-iP4000R" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP4000R" /><!-- driver and foomaticid legacy: missing brand name in one --> + <!-- Canon iP4100 (PIXUS only, PIXMA iP4100 does not exist) --> <printer translate="name" name="Canon PIXMA iP4100" driver="bjc-PIXMA-iP4100" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP4100" /> + <printer translate="name" name="Canon PIXUS iP4100" driver="bjc-PIXUS-iP4100" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP4100" /> + <!-- Canon iP4100R (PIXUS only, PIXMA iP4100R does not exist) --> + <printer translate="name" name="Canon PIXUS iP4100R" driver="bjc-PIXUS-iP4100R" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP4100R" /> <printer translate="name" name="Canon PIXMA iP4100R" driver="bjc-PIXMA-iP4100R" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP4100R" /> - <printer translate="name" name="Canon PIXMA iP4200" driver="bjc-PIXMA-iP4200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params" foomaticid="Canon-PIXMA-iP4200" /> + <!-- Canon iP4200 family --> + <printer translate="name" name="Canon iP4200 series" deviceid="MFG:Canon;MDL:iP4200;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-iP4200-series" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params" foomaticid="Canon-iP4200-series" /> + <printer translate="name" name="Canon PIXMA iP4200" driver="bjc-PIXMA-iP4200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params" foomaticid="Canon-PIXMA-iP4200" /> + <printer translate="name" name="Canon PIXUS iP4200" driver="bjc-PIXUS-iP4200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params" foomaticid="Canon-PIXUS-iP4200" /> + <!-- Canon iP4300 family --> + <printer translate="name" name="Canon iP4300 series" driver="bjc-iP4300-series" manufacturer="Canon" model="3004300" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4300-series" /> <printer translate="name" name="Canon PIXMA iP4300" driver="bjc-PIXMA-iP4300" manufacturer="Canon" model="3004300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4300" /> + <printer translate="name" name="Canon PIXUS iP4300" driver="bjc-PIXUS-iP4300" manufacturer="Canon" model="3004300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4300" /> + <!-- Canon iP4500 family --> + <printer translate="name" name="Canon iP4500 series" driver="bjc-iP4500-series" manufacturer="Canon" model="3004500" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4500-series" /> <printer translate="name" name="Canon PIXMA iP4500" driver="bjc-PIXMA-iP4500" manufacturer="Canon" model="3004500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4500" /> + <printer translate="name" name="Canon PIXUS iP4500" driver="bjc-PIXUS-iP4500" manufacturer="Canon" model="3004500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4500" /> + <!-- Canon iP4600 family --> + <printer translate="name" name="Canon iP4600 series" driver="bjc-iP4600-series" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4600-series" /> <printer translate="name" name="Canon PIXMA iP4600" driver="bjc-PIXMA-iP4600" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4600" /> + <printer translate="name" name="Canon PIXUS iP4600" driver="bjc-PIXUS-iP4600" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4600" /> + <printer translate="name" name="Canon PIXMA iP4680" driver="bjc-PIXMA-iP4680" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4680" /> + <!-- Canon iP4700 family --> + <printer translate="name" name="Canon iP4700 series" driver="bjc-iP4700-series" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4700-series" /> <printer translate="name" name="Canon PIXMA iP4700" driver="bjc-PIXMA-iP4700" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4700" /> + <printer translate="name" name="Canon PIXUS iP4700" driver="bjc-PIXUS-iP4700" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4700" /> + <printer translate="name" name="Canon PIXMA iP4760" driver="bjc-PIXMA-iP4760" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4760" /> + <!-- Canon iP4800 family --> + <printer translate="name" name="Canon iP4800 series" driver="bjc-iP4800-series" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4800-series" /> <printer translate="name" name="Canon PIXMA iP4800" driver="bjc-PIXMA-iP4800" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4800" /> + <printer translate="name" name="Canon PIXMA iP4810" driver="bjc-PIXMA-iP4810" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4810" /> + <printer translate="name" name="Canon PIXMA iP4820" driver="bjc-PIXMA-iP4820" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4820" /> + <printer translate="name" name="Canon PIXUS iP4830" driver="bjc-PIXUS-iP4830" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4830" /> + <printer translate="name" name="Canon PIXMA iP4840" driver="bjc-PIXMA-iP4840" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4840" /> + <printer translate="name" name="Canon PIXMA iP4850" driver="bjc-PIXMA-iP4850" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4850" /> + <printer translate="name" name="Canon PIXMA iP4870" driver="bjc-PIXMA-iP4870" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4870" /> + <printer translate="name" name="Canon PIXMA iP4880" driver="bjc-PIXMA-iP4880" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4880" /> + <!-- Canon iP4900 family --> + <printer translate="name" name="Canon iP4900 series" driver="bjc-iP4900-series" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4900-series" /> <printer translate="name" name="Canon PIXMA iP4900" driver="bjc-PIXMA-iP4900" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4900" /> + <printer translate="name" name="Canon PIXMA iP4910" driver="bjc-PIXMA-iP4910" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4910" /> + <printer translate="name" name="Canon PIXMA iP4920" driver="bjc-PIXMA-iP4920" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4920" /> + <printer translate="name" name="Canon PIXUS iP4930" driver="bjc-PIXUS-iP4930" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4930" /> + <printer translate="name" name="Canon PIXMA iP4940" driver="bjc-PIXMA-iP4940" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4940" /> + <printer translate="name" name="Canon PIXMA iP4950" driver="bjc-PIXMA-iP4950" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4950" /> + <printer translate="name" name="Canon PIXMA iP4970" driver="bjc-PIXMA-iP4970" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4970" /> + <printer translate="name" name="Canon PIXMA iP4980" driver="bjc-PIXMA-iP4980" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4980" /> + <!-- Canon iP5000 --> <printer translate="name" name="Canon PIXMA iP5000" driver="bjc-PIXMA-iP5000" manufacturer="Canon" model="3005000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP5000" /> + <!-- Canon iP5200 --> <printer translate="name" name="Canon PIXMA iP5200" driver="bjc-PIXMA-iP5200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP5200" /> + <!-- Canon iP5200R family --> + <printer translate="name" name="Canon iP5200R series" driver="bjc-iP5200R-series" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP5200R-series" /> <printer translate="name" name="Canon PIXMA iP5200R" driver="bjc-PIXMA-iP5200R" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP5200R" /> + <printer translate="name" name="Canon PIXUS iP5200R" driver="bjc-PIXUS-iP5200R" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP5200R" /> + <!-- Canon iP5300 --> <printer translate="name" name="Canon PIXMA iP5300" driver="bjc-PIXMA-iP5300" manufacturer="Canon" model="3005300" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP5300" /> + <!-- Canon iP6000D --> <printer translate="name" name="Canon PIXMA iP6000D" driver="bjc-PIXMA-iP6000D" manufacturer="Canon" model="3006000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6000D" /> + <!-- Canon iP6100D (PIXUS only, PIXMA iP6100D does not exist) --> <printer translate="name" name="Canon PIXMA iP6100D" driver="bjc-PIXMA-iP6100D" manufacturer="Canon" model="3006100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6100D" /> + <printer translate="name" name="Canon PIXUS iP6100D" driver="bjc-PIXUS-iP6100D" manufacturer="Canon" model="3006100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP6100D" /> + <!-- Canon iP6210 --> <printer translate="name" name="Canon PIXMA iP6210D" driver="bjc-PIXMA-iP6210D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6210D" /> + <!-- Canon iP6220 --> <printer translate="name" name="Canon PIXMA iP6220D" driver="bjc-PIXMA-iP6220D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6220D" /> + <!-- Canon iP6310 --> <printer translate="name" name="Canon PIXMA iP6310D" driver="bjc-PIXMA-iP6310D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6310D" /> + <!-- Canon iP6320D --> <printer translate="name" name="Canon PIXMA iP6320D" driver="bjc-PIXMA-iP6320D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6320D" /> + <!-- Canon iP6600D family --> + <printer translate="name" name="Canon iP6600D series" driver="bjc-iP6600D-series" manufacturer="Canon" model="3006600" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP6600D-series" /> <printer translate="name" name="Canon PIXMA iP6600D" driver="bjc-PIXMA-iP6600D" manufacturer="Canon" model="3006600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6600D" /> - <printer translate="name" name="Canon PIXMA iP6700" driver="bjc-PIXMA-iP6700" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6700" /> + <printer translate="name" name="Canon PIXUS iP6600D" driver="bjc-PIXUS-iP6600D" manufacturer="Canon" model="3006600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP6600D" /> + <!-- Canon iP6700D family --> + <printer translate="name" name="Canon iP6700D series" driver="bjc-iP6700-series" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP6700-series" /> + <printer translate="name" name="Canon PIXMA iP6700D" driver="bjc-PIXMA-iP6700" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6700" /> + <printer translate="name" name="Canon PIXUS iP6700D" driver="bjc-PIXUS-iP6700" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP6700" /> + <!-- Canon iP7100 (PIXUS only, PIXMA iP7100 does not exist) --> <printer translate="name" name="Canon PIXMA iP7100" driver="bjc-PIXMA-iP7100" manufacturer="Canon" model="3007100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7100" /> + <printer translate="name" name="Canon PIXUS iP7100" driver="bjc-PIXUS-iP7100" manufacturer="Canon" model="3007100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP7100" /> + <!-- Canon iP7200 family --> + <printer translate="name" name="Canon iP7200 series" driver="bjc-iP7200-series" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP7200-series" /> + <printer translate="name" name="Canon PIXMA iP7210" driver="bjc-PIXMA-iP7210" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7210" /> + <printer translate="name" name="Canon PIXMA iP7220" driver="bjc-PIXMA-iP7220" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7220" /> + <printer translate="name" name="Canon PIXUS iP7230" driver="bjc-PIXUS-iP7230" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP7230" /> + <printer translate="name" name="Canon PIXMA iP7240" driver="bjc-PIXMA-iP7240" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7240" /> + <printer translate="name" name="Canon PIXMA iP7250" driver="bjc-PIXMA-iP7250" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7250" /> + <printer translate="name" name="Canon PIXMA iP7260" driver="bjc-PIXMA-iP7260" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7260" /> + <printer translate="name" name="Canon PIXMA iP7270" driver="bjc-PIXMA-iP7270" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7270" /> + <printer translate="name" name="Canon PIXMA iP7280" driver="bjc-PIXMA-iP7280" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7280" /> + <!-- Canon iP7500 (PIXUS only, PIXMA iP7500 does not exist) --> <printer translate="name" name="Canon PIXMA iP7500" driver="bjc-PIXMA-iP7500" manufacturer="Canon" model="3007500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7500" /> + <printer translate="name" name="Canon PIXUS iP7500" driver="bjc-PIXUS-iP7500" manufacturer="Canon" model="3007500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP7500" /> + <!-- Canon iP8100 (PIXUS only, PIXMA iP8100 does not exist) --> <printer translate="name" name="Canon PIXMA iP8100" driver="bjc-PIXMA-iP8100" manufacturer="Canon" model="3008100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP8100" /> + <printer translate="name" name="Canon PIXUS iP8100" driver="bjc-PIXUS-iP8100" manufacturer="Canon" model="3008100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP8100" /> + <!-- 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" /> + <!-- Canon iP8600 (PIXUS only, PIXMA iP8600 does not exist) --> <printer translate="name" name="Canon PIXMA iP8600" driver="bjc-PIXMA-iP8600" manufacturer="Canon" model="3008600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP8600" /> + <printer translate="name" name="Canon PIXUS iP8600" driver="bjc-PIXUS-iP8600" manufacturer="Canon" model="3008600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP8600" /> + <!-- Canon iP9910 (PIXUS only, PIXMA iP9910 does not exist) --> <printer translate="name" name="Canon PIXMA iP9910" driver="bjc-PIXMA-iP9910" manufacturer="Canon" model="3009910" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP9910" /> + <printer translate="name" name="Canon PIXUS iP9910" driver="bjc-PIXUS-iP9910" manufacturer="Canon" model="3009910" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP9910" /> + <!-- Canon iX4000 --> <printer translate="name" name="Canon PIXMA iX4000" driver="bjc-PIXMA-iX4000" manufacturer="Canon" model="4004000" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX4000" /> + <!-- Canon iX5000 family --> + <printer translate="name" name="Canon iX5000 series" driver="bjc-iX5000-series" manufacturer="Canon" model="4005000" parameters="PIXMA_iX5000_params" foomaticid="Canon-iX5000-series" /> <printer translate="name" name="Canon PIXMA iX5000" driver="bjc-PIXMA-iX5000" manufacturer="Canon" model="4005000" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX5000" /> + <printer translate="name" name="Canon PIXUS iX5000" driver="bjc-PIXUS-iX5000" manufacturer="Canon" model="4005000" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXUS-iX5000" /> + <!-- Canon iX6500 family --> + <printer translate="name" name="Canon iX6500 series" driver="bjc-iX6500-series" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-iX6500-series" /> <printer translate="name" name="Canon PIXMA iX6500" driver="bjc-PIXMA-iX6500" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6500" /> + <printer translate="name" name="Canon PIXMA iX6510" driver="bjc-PIXMA-iX6510" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6510" /> + <printer translate="name" name="Canon PIXMA iX6520" driver="bjc-PIXMA-iX6520" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6520" /> + <printer translate="name" name="Canon PIXUS iX6530" driver="bjc-PIXUS-iX6530" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXUS-iX6530" /> + <printer translate="name" name="Canon PIXMA iX6540" driver="bjc-PIXMA-iX6540" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6540" /> + <printer translate="name" name="Canon PIXMA iX6550" driver="bjc-PIXMA-iX6550" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6550" /> + <printer translate="name" name="Canon PIXMA iX6560" driver="bjc-PIXMA-iX6560" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6560" /> + <printer translate="name" name="Canon PIXMA iX6580" driver="bjc-PIXMA-iX6580" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6580" /> + <!-- Canon iX7000 family --> + <printer translate="name" name="Canon iX7000 series" driver="bjc-iX7000-series" manufacturer="Canon" model="4007000" parameters="PIXMA_iX5000_params" foomaticid="Canon-iX7000-series" /> <printer translate="name" name="Canon PIXMA iX7000" driver="bjc-PIXMA-iX7000" manufacturer="Canon" model="4007000" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX7000" /> + <printer translate="name" name="Canon PIXUS iX7000" driver="bjc-PIXUS-iX7000" manufacturer="Canon" model="4007000" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXUS-iX7000" /> + <!-- Canon Pro9000 family --> + <printer translate="name" name="Canon Pro9000 series" driver="bjc-Pro9000-series" manufacturer="Canon" model="7009000" parameters="PIXMA_iP4000_params" foomaticid="Canon-Pro9000-series" /> <printer translate="name" name="Canon PIXMA Pro9000" driver="bjc-PIXMA-Pro9000" manufacturer="Canon" model="7009000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-Pro9000" /> + <printer translate="name" name="Canon PIXUS Pro9000" driver="bjc-PIXUS-Pro9000" manufacturer="Canon" model="7009000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-Pro9000" /> + <!-- Canon Pro9000 Mk.II family --> + <printer translate="name" name="Canon Pro9000 Mk.II series" deviceid="MFG:Canon;MDL:Pro9000II series;CMD:BJL,BJRaster3,BSCCe,PLI;" driver="bjc-Pro9000mk2-series" manufacturer="Canon" model="7009002" parameters="PIXMA_iP4000_params" foomaticid="Canon-Pro9000-Mk2-series" /> <printer translate="name" name="Canon PIXMA Pro9000mk2" driver="bjc-PIXMA-Pro9000mk2" manufacturer="Canon" model="7009002" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-Pro9000-Mk2" /> + <printer translate="name" name="Canon PIXUS Pro9000mk2" driver="bjc-PIXUS-Pro9000mk2" manufacturer="Canon" model="7009002" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-Pro9000-Mk2" /> + <!-- Canon Pro9500 family --> + <printer translate="name" name="Canon Pro9500 series" driver="bjc-Pro9500-series" manufacturer="Canon" model="7009500" parameters="PIXMA_iP4000_params" foomaticid="Canon-Pro9500-series" /> <printer translate="name" name="Canon PIXMA Pro9500" driver="bjc-PIXMA-Pro9500" manufacturer="Canon" model="7009500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-Pro9500" /> - <printer translate="name" name="Canon PIXMA Pro9500mk2" driver="bjc-PIXMA-Pro9500mk2" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-Pro9500-Mk2" /> - <printer translate="name" name="Canon PIXMA MP140" driver="bjc-MULTIPASS-MP140" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP140" /> - <printer translate="name" name="Canon PIXMA MP150" driver="bjc-MULTIPASS-MP150" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP150" /> - <printer translate="name" name="Canon PIXMA MP160" driver="bjc-MULTIPASS-MP160" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP160" /> - <printer translate="name" name="Canon PIXMA MP170" driver="bjc-MULTIPASS-MP170" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP170" /> - <printer translate="name" name="Canon PIXMA MP180" driver="bjc-MULTIPASS-MP180" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP180" /> - <printer translate="name" name="Canon PIXMA MP190" driver="bjc-MULTIPASS-MP190" manufacturer="Canon" model="5000190" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP190" /> - <printer translate="name" name="Canon PIXMA MP210" driver="bjc-MULTIPASS-MP210" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP210" /> - <printer translate="name" name="Canon PIXMA MP220" driver="bjc-MULTIPASS-MP220" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP220" /> - <printer translate="name" name="Canon PIXMA MP240" driver="bjc-MULTIPASS-MP240" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP240" /> - <printer translate="name" name="Canon PIXMA MP250" driver="bjc-MULTIPASS-MP250" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP250" /> - <printer translate="name" name="Canon PIXMA MP260" driver="bjc-MULTIPASS-MP260" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP260" /> - <printer translate="name" name="Canon PIXMA MP270" driver="bjc-MULTIPASS-MP270" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP270" /> - <printer translate="name" name="Canon PIXMA MP280" driver="bjc-MULTIPASS-MP280" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP280" /> - <printer translate="name" name="Canon PIXMA MP360" driver="bjc-MULTIPASS-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP360" /> - <printer translate="name" name="Canon PIXMA MP370" driver="bjc-MULTIPASS-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP370" /> - <printer translate="name" name="Canon PIXMA MP375R" driver="bjc-MULTIPASS-MP375R" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP375R" /> - <printer translate="name" name="Canon PIXMA MP390" driver="bjc-MULTIPASS-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP390" /> - <printer translate="name" name="Canon PIXMA MP450" driver="bjc-MULTIPASS-MP450" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP450" /> - <printer translate="name" name="Canon PIXMA MP460" driver="bjc-MULTIPASS-MP460" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP460" /> - <printer translate="name" name="Canon PIXMA MP470" driver="bjc-MULTIPASS-MP470" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP470" /> - <printer translate="name" name="Canon PIXMA MP480" driver="bjc-MULTIPASS-MP480" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP480" /> - <printer translate="name" name="Canon PIXMA MP490" driver="bjc-MULTIPASS-MP490" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP490" /> - <printer translate="name" name="Canon PIXMA MP493" driver="bjc-MULTIPASS-MP493" manufacturer="Canon" model="5000493" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP493" /> - <printer translate="name" name="Canon PIXMA MP495" driver="bjc-MULTIPASS-MP495" manufacturer="Canon" model="5000495" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP495" /> - <printer translate="name" name="Canon PIXMA MP500" driver="bjc-MULTIPASS-MP500" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP500" /> - <printer translate="name" name="Canon PIXMA MP510" driver="bjc-MULTIPASS-MP510" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP510" /> - <printer translate="name" name="Canon PIXMA MP520" driver="bjc-MULTIPASS-MP520" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP520" /> - <printer translate="name" name="Canon PIXMA MP530" driver="bjc-MULTIPASS-MP530" manufacturer="Canon" model="5000530" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP530" /> - <printer translate="name" name="Canon PIXMA MP540" driver="bjc-MULTIPASS-MP540" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP540" /> - <printer translate="name" name="Canon PIXMA MP550" driver="bjc-MULTIPASS-MP550" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP550" /> - <printer translate="name" name="Canon PIXMA MP560" driver="bjc-MULTIPASS-MP560" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP560" /> - <printer translate="name" name="Canon PIXMA MP600" driver="bjc-MULTIPASS-MP600" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP600" /> - <printer translate="name" name="Canon PIXMA MP600R" driver="bjc-MULTIPASS-MP600R" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP600R" /> - <printer translate="name" name="Canon PIXMA MP610" driver="bjc-MULTIPASS-MP610" manufacturer="Canon" model="5000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP610" /> - <printer translate="name" name="Canon PIXMA MP620" driver="bjc-MULTIPASS-MP620" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP620" /> - <printer translate="name" name="Canon PIXMA MP630" driver="bjc-MULTIPASS-MP630" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP630" /> - <printer translate="name" name="Canon PIXMA MP640" driver="bjc-MULTIPASS-MP640" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP640" /> - <printer translate="name" name="Canon PIXMA MP700" driver="bjc-MULTIPASS-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP700" /> - <printer translate="name" name="Canon PIXMA MP710" driver="bjc-MULTIPASS-MP710" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP710" /> - <printer translate="name" name="Canon PIXMA MP730" driver="bjc-MULTIPASS-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP730" /> - <printer translate="name" name="Canon PIXMA MP740" driver="bjc-MULTIPASS-MP740" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP740" /> - <printer translate="name" name="Canon PIXMA MP750" driver="bjc-MULTIPASS-MP750" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP750" /> - <printer translate="name" name="Canon PIXMA MP760" driver="bjc-MULTIPASS-MP760" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP760" /> - <printer translate="name" name="Canon PIXMA MP770" driver="bjc-MULTIPASS-MP770" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP770" /> - <printer translate="name" name="Canon PIXMA MP780" driver="bjc-MULTIPASS-MP780" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP780" /> - <printer translate="name" name="Canon PIXMA MP790" driver="bjc-MULTIPASS-MP790" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP790" /> - <printer translate="name" name="Canon PIXMA MP800" driver="bjc-MULTIPASS-MP800" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP800" /> - <printer translate="name" name="Canon PIXMA MP800R" driver="bjc-MULTIPASS-MP800R" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP800R" /> - <printer translate="name" name="Canon PIXMA MP810" driver="bjc-MULTIPASS-MP810" manufacturer="Canon" model="5000810" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP810" /> - <printer translate="name" name="Canon PIXMA MP830" driver="bjc-MULTIPASS-MP830" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP830" /> - <printer translate="name" name="Canon PIXMA MP900" driver="bjc-MULTIPASS-MP900" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP900" /> - <printer translate="name" name="Canon PIXMA MP950" driver="bjc-MULTIPASS-MP950" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP950" /> - <printer translate="name" name="Canon PIXMA MP960" driver="bjc-MULTIPASS-MP960" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP960" /> - <printer translate="name" name="Canon PIXMA MP970" driver="bjc-MULTIPASS-MP970" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP970" /> - <printer translate="name" name="Canon PIXMA MP980" driver="bjc-MULTIPASS-MP980" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP980" /> - <printer translate="name" name="Canon PIXMA MP990" driver="bjc-MULTIPASS-MP990" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP990" /> - <printer translate="name" name="Canon PIXUS iP2700" driver="bjc-PIXUS-iP2700" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP2700" /> - <printer translate="name" name="Canon PIXUS iP3100" driver="bjc-PIXUS-iP3100" manufacturer="Canon" model="3003100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP3100" /> - <printer translate="name" name="Canon PIXUS iP4100" driver="bjc-PIXUS-iP4100" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP4100" /> + <printer translate="name" name="Canon PIXUS Pro9500" driver="bjc-PIXUS-Pro9500" manufacturer="Canon" model="7009500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-Pro9500" /> + <!-- Canon Pro9500 Mk.II family --> + <printer translate="name" name="Canon Pro9500 Mk.II series" driver="bjc-Pro9500mk2-series" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params" foomaticid="Canon-Pro9500-Mk2-series" /> + <printer translate="name" name="Canon PIXMA Pro9500mk2" driver="bjc-PIXMA-Pro9500mk2" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-Pro9500- Mk2" /> + <printer translate="name" name="Canon PIXUS Pro9500mk2" driver="bjc-PIXUS-Pro9500mk2" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-Pro9500-Mk2" /> + <!-- Canon MP140 family --> + <printer translate="name" name="Canon MP140 series" driver="bjc-MP140-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP140-series" /> + <printer translate="name" name="Canon PIXMA MP140" driver="bjc-MULTIPASS-MP140" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP140" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MP145" driver="bjc-PIXMA-MP145" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP145" /> + <!-- Canon MP150 family --> + <printer translate="name" name="Canon MP150 series" driver="bjc-MP150-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP150-series" /> + <printer translate="name" name="Canon PIXMA MP150" driver="bjc-MULTIPASS-MP150" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP150" /><!-- driver and foomaticid legacy names used --> + <!-- Canon MP160 family --> + <printer translate="name" name="Canon MP160 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe;SOJ:TXT01;MDL:MP160;CLS:PRINTER;DES:Canon MP160;VER:1.06;STA:10;HRI:OTH;" driver="bjc-MP160-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP160-series" /> + <printer translate="name" name="Canon PIXMA MP160" driver="bjc-MULTIPASS-MP160" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP160" /><!-- driver and foomaticid legacy names used --> + <!-- Canon MP170 family --> + <printer translate="name" name="Canon MP170 series" driver="bjc-MP170-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP170-series" /> + <printer translate="name" name="Canon PIXMA MP170" driver="bjc-MULTIPASS-MP170" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP170" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP170" driver="bjc-PIXUS-MP170" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP170" /> + <!-- Canon MP180 family --> + <printer translate="name" name="Canon MP180 series" driver="bjc-MP180-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP180-series" /> + <printer translate="name" name="Canon PIXMA MP180" driver="bjc-MULTIPASS-MP180" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP180" /><!-- driver and foomaticid legacy names used --> + <!-- Canon MP190 family --> + <printer translate="name" name="Canon MP190 series" driver="bjc-MP190-series" manufacturer="Canon" model="5000190" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP190-series" /> + <printer translate="name" name="Canon PIXMA MP190" driver="bjc-MULTIPASS-MP190" manufacturer="Canon" model="5000190" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP190" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MP198" driver="bjc-PIXMA-MP198" manufacturer="Canon" model="5000190" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP198" /> + <!-- Canon MP210 family --> + <printer translate="name" name="Canon MP210 series" driver="bjc-MP210-series" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP210-series" /> + <printer translate="name" name="Canon PIXMA MP210" driver="bjc-MULTIPASS-MP210" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP210" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MP218" driver="bjc-PIXMA-MP218" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP218" /> + <!-- Canon MP220 family --> + <printer translate="name" name="Canon MP220 series" driver="bjc-MP220-series" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP220-series" /> + <printer translate="name" name="Canon PIXMA MP220" driver="bjc-MULTIPASS-MP220" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP220" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MP228" driver="bjc-PIXMA-MP228" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP228" /> + <!-- Canon MP230 family --> + <printer translate="name" name="Canon MP230 series" driver="bjc-MP230-series" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP230-series" /> + <printer translate="name" name="Canon PIXMA MP230" driver="bjc-MULTIPASS-MP230" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP230" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MP236" driver="bjc-PIXMA-MP236" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP236" /> + <printer translate="name" name="Canon PIXMA MP237" driver="bjc-PIXMA-MP237" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP237" /> + <!-- Canon MP240 family --> + <printer translate="name" name="Canon MP240 series" driver="bjc-MP240-series" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP240-series" /> + <printer translate="name" name="Canon PIXMA MP240" driver="bjc-MULTIPASS-MP240" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP240" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MP245" driver="bjc-PIXMA-MP245" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP245" /> + <!-- Canon MP250 family --> + <printer translate="name" name="Canon MP250 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe,IVEC,IVECPLI;MDL:MP250 series;DES:Canon MP250 series;" driver="bjc-MP250-series" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP250-series" /> + <printer translate="name" name="Canon PIXMA MP250" driver="bjc-MULTIPASS-MP250" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP250" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MP252" driver="bjc-PIXMA-MP252" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP252" /> + <printer translate="name" name="Canon PIXMA MP258" driver="bjc-PIXMA-MP258" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP258" /> + <printer translate="name" name="Canon PIXMA MP259" driver="bjc-PIXMA-MP259" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP259" /> + <!-- Canon MP260 family --> + <printer translate="name" name="Canon MP260 series" driver="bjc-MP260-series" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP260-series" /> + <printer translate="name" name="Canon PIXMA MP260" driver="bjc-MULTIPASS-MP260" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP260" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MP268" driver="bjc-PIXMA-MP268" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP268" /> + <!-- Canon MP270 family --> + <printer translate="name" name="Canon MP270 series" driver="bjc-MP270-series" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP270-series" /> + <printer translate="name" name="Canon PIXMA MP270" driver="bjc-MULTIPASS-MP270" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP270" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP270" driver="bjc-PIXUS-MP270" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP270" /> + <printer translate="name" name="Canon PIXMA MP272" driver="bjc-PIXMA-MP272" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP272" /> + <printer translate="name" name="Canon PIXMA MP276" driver="bjc-PIXMA-MP276" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP276" /> + <!-- Canon MP280 family --> + <printer translate="name" name="Canon MP280 series" driver="bjc-MP280-series" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP280-series" /> + <printer translate="name" name="Canon PIXMA MP280" deviceid="MFG:Canon;MDL:MP280 series;" driver="bjc-MULTIPASS-MP280" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP280" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP280" driver="bjc-PIXUS-MP280" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP280" /> + <printer translate="name" name="Canon PIXMA MP282" driver="bjc-PIXMA-MP282" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP282" /> + <printer translate="name" name="Canon PIXMA MP287" driver="bjc-PIXMA-MP287" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP287" /> + <printer translate="name" name="Canon PIXMA MP288" driver="bjc-PIXMA-MP288" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP288" /> + <!-- Canon MP360 family (PIXMA MP360 does not exist) --> + <printer translate="name" name="Canon MP360 series" driver="bjc-MP360-series" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP360-series" /> + <printer translate="name" name="Canon PIXMA MP360" driver="bjc-PIXMA-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP360" /><!-- driver and foomaticid legacy names updated since MultiPASS entry added --> + <printer translate="name" name="Canon PIXUS MP360" driver="bjc-PIXUS-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP360" /> + <printer translate="name" name="Canon SmartBase MP360" driver="bjc-SmartBase-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP360" /> + <printer translate="name" name="Canon SmartBase MP360S" driver="bjc-SmartBase-MP360S" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP360S" /> + <printer translate="name" name="Canon MultiPASS MP360" driver="bjc-MULTIPASS-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP360" /><!-- introduced the MultiPASS entry so changed previous PIXMA MP360 entry to reflect proper brand name --> + <!-- Canon MP370 family (PIXMA MP370, MP375R do not exist) --> + <printer translate="name" name="Canon MP370 series" driver="bjc-MP370-series" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP370-series" /> + <printer translate="name" name="Canon PIXMA MP370" driver="bjc-PIXMA-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP370" /><!-- driver and foomaticid legacy names updated since MultiPASS entry added --> + <printer translate="name" name="Canon PIXUS MP370" driver="bjc-PIXUS-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP370" /> + <printer translate="name" name="Canon SmartBase MP370" driver="bjc-SmartBase-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP370" /> + <printer translate="name" name="Canon MultiPASS MP370" driver="bjc-MULTIPASS-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP370" /><!-- introduced the MultiPASS entry so changed previous PIXMA MP370 entry to reflect proper brand name --> + <printer translate="name" name="Canon PIXMA MP375R" driver="bjc-MULTIPASS-MP375R" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP375R" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP375R" driver="bjc-PIXUS-MP375R" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP375R" /> + <!-- Canon MP390 family (PIXMA MP390 does not exist) --> + <printer translate="name" name="Canon MP390 series" driver="bjc-MP390-series" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP390-series" /> + <printer translate="name" name="Canon PIXMA MP390" driver="bjc-PIXMA-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP390" /><!-- driver and foomaticid legacy names updated since MultiPASS entry added --> + <printer translate="name" name="Canon PIXUS MP390" driver="bjc-PIXUS-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP390" /> + <printer translate="name" name="Canon SmartBase MP390" driver="bjc-SmartBase-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP390" /> + <printer translate="name" name="Canon MultiPASS MP390" driver="bjc-MULTIPASS-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP390" /><!-- introduced the MultiPASS entry so changed previous PIXMA MP390 entry to reflect proper brand name --> + <!-- Canon MP450 family --> + <printer translate="name" name="Canon MP450 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe;MDL:MP450;DES:Canon MP450;CLS:PRINTER;VER:1.08;STA:10;HRI:JP;SOJ:TXT01;" driver="bjc-MP450-series" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP450-series" /> + <printer translate="name" name="Canon PIXMA MP450" driver="bjc-MULTIPASS-MP450" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP450" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP450" driver="bjc-PIXUS-MP450" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP450" /> + <!-- Canon MP460 family --> + <printer translate="name" name="Canon MP460 series" driver="bjc-MP460-series" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP460-series" /> + <printer translate="name" name="Canon PIXMA MP460" driver="bjc-MULTIPASS-MP460" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP460" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP460" driver="bjc-PIXUS-MP460" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP460" /> + <!-- Canon MP470 family --> + <printer translate="name" name="Canon MP470 series" driver="bjc-MP470-series" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP470-series" /> + <printer translate="name" name="Canon PIXMA MP470" driver="bjc-MULTIPASS-MP470" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP470" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP470" driver="bjc-PIXUS-MP470" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP470" /> + <printer translate="name" name="Canon PIXMA MP476" driver="bjc-PIXMA-MP476" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP476" /> + <!-- Canon MP480 family --> + <printer translate="name" name="Canon MP480 series" driver="bjc-MP480-series" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP480-series" /> + <printer translate="name" name="Canon PIXMA MP480" driver="bjc-MULTIPASS-MP480" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP480" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP480" driver="bjc-PIXUS-MP480" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP480" /> + <printer translate="name" name="Canon PIXMA MP486" driver="bjc-PIXMA-MP486" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP486" /> + <!-- Canon MP490 family (TODO: combine separate drivers for 493, 495. PIXMA MP493 does not exist) --> + <printer translate="name" name="Canon MP490 series" driver="bjc-MP490-series" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP490-series" /> + <printer translate="name" name="Canon PIXMA MP490" driver="bjc-MULTIPASS-MP490" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP490" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP490" driver="bjc-PIXUS-MP490" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP490" /> + <printer translate="name" name="Canon PIXMA MP492" driver="bjc-PIXMA-MP492" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP492" /> + <printer translate="name" name="Canon PIXMA MP493" driver="bjc-MULTIPASS-MP493" manufacturer="Canon" model="5000493" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP493" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP493" driver="bjc-PIXUS-MP493" manufacturer="Canon" model="5000493" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP493" /> + <printer translate="name" name="Canon PIXMA MP495" driver="bjc-MULTIPASS-MP495" manufacturer="Canon" model="5000495" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP495" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MP496" driver="bjc-PIXMA-MP496" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP496" /> + <printer translate="name" name="Canon PIXMA MP497" driver="bjc-PIXMA-MP497" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP497" /> + <printer translate="name" name="Canon PIXMA MP498" driver="bjc-PIXMA-MP498" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP498" /> + <printer translate="name" name="Canon PIXMA MP499" driver="bjc-PIXMA-MP499" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP499" /> + <!-- Canon MP500 family --> + <printer translate="name" name="Canon MP500 series" deviceid="MFG:Canon;MDL:MP500;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-MP500-series" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP500-series" /> + <printer translate="name" name="Canon PIXMA MP500" driver="bjc-MULTIPASS-MP500" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP500" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP500" driver="bjc-PIXUS-MP500" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP500" /> + <!-- Canon MP510 family --> + <printer translate="name" name="Canon MP510 series" driver="bjc-MP510-series" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP510-series" /> + <printer translate="name" name="Canon PIXMA MP510" driver="bjc-MULTIPASS-MP510" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP510" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP510" driver="bjc-PIXUS-MP510" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP510" /> + <!-- Canon MP520 family --> + <printer translate="name" name="Canon MP520 series" driver="bjc-MP520-series" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP520-series" /> + <printer translate="name" name="Canon PIXMA MP520" driver="bjc-MULTIPASS-MP520" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP520" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP520" driver="bjc-PIXUS-MP520" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP520" /> + <!-- Canon MP530 family --> + <printer translate="name" name="Canon MP530 series" driver="bjc-MP530-series" manufacturer="Canon" model="5000530" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP530-series" /> + <printer translate="name" name="Canon PIXMA MP530" driver="bjc-MULTIPASS-MP530" manufacturer="Canon" model="5000530" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP530" /><!-- driver and foomaticid legacy names used --> + <!-- Canon MP540 family --> + <printer translate="name" name="Canon MP540 series" driver="bjc-MP540-series" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP540-series" /> + <printer translate="name" name="Canon PIXMA MP540" driver="bjc-MULTIPASS-MP540" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP540" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP540" driver="bjc-PIXUS-MP540" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP540" /> + <printer translate="name" name="Canon PIXMA MP545" driver="bjc-PIXMA-MP545" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP545" /> + <!-- Canon MP550 family --> + <printer translate="name" name="Canon MP550 series" driver="bjc-MP550-series" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP550-series" /> + <printer translate="name" name="Canon PIXMA MP550" driver="bjc-MULTIPASS-MP550" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP550" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP550" driver="bjc-PIXUS-MP550" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP550" /> + <printer translate="name" name="Canon PIXMA MP558" driver="bjc-PIXMA-MP558" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP558" /> + <!-- Canon MP560 family --> + <printer translate="name" name="Canon MP560 series" driver="bjc-MP560-series" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP560-series" /> + <printer translate="name" name="Canon PIXMA MP560" driver="bjc-MULTIPASS-MP560" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP560" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP560" driver="bjc-PIXUS-MP560" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP560" /> + <printer translate="name" name="Canon PIXMA MP568" driver="bjc-PIXMA-MP568" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP568" /> + <!-- Canon MP600 family --> + <printer translate="name" name="Canon MP600 series" driver="bjc-MP600-series" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP600-series" /> + <printer translate="name" name="Canon PIXMA MP600" driver="bjc-MULTIPASS-MP600" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP600" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP600" driver="bjc-PIXUS-MP600" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP600" /> + <printer translate="name" name="Canon PIXMA MP600R" driver="bjc-MULTIPASS-MP600R" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP600R" /><!-- driver and foomaticid legacy names used --> + <!-- Canon MP610 family --> + <printer translate="name" name="Canon MP610 series" driver="bjc-MP610-series" manufacturer="Canon" model="5000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP610-series" /> + <printer translate="name" name="Canon PIXMA MP610" driver="bjc-MULTIPASS-MP610" manufacturer="Canon" model="5000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP610" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP610" driver="bjc-PIXUS-MP610" manufacturer="Canon" model="5000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP610" /> + <!-- Canon MP620 family --> + <printer translate="name" name="Canon MP620 series" driver="bjc-MP620-series" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP620-series" /> + <printer translate="name" name="Canon PIXMA MP620" driver="bjc-MULTIPASS-MP620" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP620" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP620" driver="bjc-PIXUS-MP620" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP620" /> + <printer translate="name" name="Canon PIXMA MP628" driver="bjc-PIXMA-MP628" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP628" /> + <!-- Canon MP630 family --> + <printer translate="name" name="Canon MP630 series" driver="bjc-MP630-series" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP630-series" /> + <printer translate="name" name="Canon PIXMA MP630" driver="bjc-MULTIPASS-MP630" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP630" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP630" driver="bjc-PIXUS-MP630" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP630" /> + <printer translate="name" name="Canon PIXMA MP638" driver="bjc-PIXMA-MP638" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP638" /> + <!-- Canon MP640 family --> + <printer translate="name" name="Canon MP640 series" driver="bjc-MP640-series" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP640-series" /> + <printer translate="name" name="Canon PIXMA MP640" driver="bjc-MULTIPASS-MP640" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP640" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP640" driver="bjc-PIXUS-MP640" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP640" /> + <printer translate="name" name="Canon PIXMA MP648" driver="bjc-PIXMA-MP648" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP648" /> + <!-- Canon MP700 family --> + <printer translate="name" name="Canon MP700 series" driver="bjc-MP700-series" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP700-series" /> + <printer translate="name" name="Canon PIXMA MP700" driver="bjc-PIXMA-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP700" /><!-- driver and foomaticid legacy names updated since MultiPASS entry added --> + <printer translate="name" name="Canon PIXUS MP700" driver="bjc-PIXUS-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP700" /> + <printer translate="name" name="Canon SmartBase MP700" driver="bjc-SmartBase-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP700" /> + <printer translate="name" name="Canon MultiPASS MP700" driver="bjc-MULTIPASS-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP700" /><!-- introduced the MultiPASS entry so changed previous PIXMA MP700 entry to reflect proper brand name --> + <!-- Canon MP710 family (PIXMA MP710 does not exit) --> + <printer translate="name" name="Canon MP710 series" driver="bjc-MP710-series" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP710-series" /> + <printer translate="name" name="Canon PIXMA MP710" driver="bjc-MULTIPASS-MP710" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP710" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP710" driver="bjc-PIXUS-MP710" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP710" /> + <!-- Canon MP730 family --> + <printer translate="name" name="Canon MP730 series" driver="bjc-MP730-series" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP730-series" /> + <printer translate="name" name="Canon PIXMA MP730" driver="bjc-PIXMA-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP730" /><!-- driver and foomaticid legacy names updated since MultiPASS entry added --> + <printer translate="name" name="Canon PIXUS MP730" driver="bjc-PIXUS-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP730" /> + <printer translate="name" name="Canon SmartBase MP730" driver="bjc-SmartBasw-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP730" /> + <printer translate="name" name="Canon MultiPASS MP730" driver="bjc-MULTIPASS-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP730" /><!-- introduced the MultiPASS entry so changed previous PIXMA MP730 entry to reflect proper brand name --> + <!-- Canon MP740 family (PIXMA MP740 does not exit) --> + <printer translate="name" name="Canon MP740 series" driver="bjc-MP740-series" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP740-series" /> + <printer translate="name" name="Canon PIXMA MP740" driver="bjc-MULTIPASS-MP740" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP740" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP740" driver="bjc-PIXUS-MP740" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP740" /> + <!-- Canon MP750 family --> + <printer translate="name" name="Canon MP750 series" driver="bjc-MP750-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP750-series" /> + <printer translate="name" name="Canon PIXMA MP750" driver="bjc-MULTIPASS-MP750" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP750" /><!-- driver and foomaticid legacy names used --> + <!-- Canon MP760 family --> + <printer translate="name" name="Canon MP760 series" driver="bjc-MULTIPASS-MP760-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP760-series" /> + <printer translate="name" name="Canon PIXMA MP760" driver="bjc-MULTIPASS-MP760" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP760" /><!-- driver and foomaticid legacy names used --> + <!-- Canon MP770 family (PIXMA MP770 does not exist) --> + <printer translate="name" name="Canon MP770 series" driver="bjc-MULTIPASS-MP770-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP770-series" /> + <printer translate="name" name="Canon PIXMA MP770" driver="bjc-MULTIPASS-MP770" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP770" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP770" driver="bjc-PIXUS-MP770" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP770" /> + <!-- Canon MP780 family --> + <printer translate="name" name="Canon MP780 series" driver="bjc-MP780-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP780-series" /> + <printer translate="name" name="Canon PIXMA MP780" driver="bjc-MULTIPASS-MP780" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP780" /><!-- driver and foomaticid legacy names used --> + <!-- Canon MP790 family (PIXMA MP770 does not exist) --> + <printer translate="name" name="Canon MP790 series" driver="bjc-MP790-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP790-series" /> + <printer translate="name" name="Canon PIXMA MP790" driver="bjc-MULTIPASS-MP790" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP790" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP790" driver="bjc-PIXUS-MP790" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP790" /> + <!-- Canon MP800 family --> + <printer translate="name" name="Canon MP800 series" driver="bjc-MP800-series" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP800-series" /> + <printer translate="name" name="Canon PIXMA MP800" driver="bjc-MULTIPASS-MP800" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP800" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP800" driver="bjc-PIXUS-MP800" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP800" /> + <printer translate="name" name="Canon PIXMA MP800R" driver="bjc-MULTIPASS-MP800R" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP800R" /><!-- driver and foomaticid legacy names used --> + <!-- Canon MP810 family --> + <printer translate="name" name="Canon MP810 series" driver="bjc-MP810-series" manufacturer="Canon" model="5000810" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP810-series" /> + <printer translate="name" name="Canon PIXMA MP810" driver="bjc-MULTIPASS-MP810" manufacturer="Canon" model="5000810" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP810" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP810" driver="bjc-PIXUS-MP810" manufacturer="Canon" model="5000810" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP810" /> + <!-- Canon MP830 family --> + <printer translate="name" name="Canon MP830 series" driver="bjc-MP830-series" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP830-series" /> + <printer translate="name" name="Canon PIXMA MP830" driver="bjc-MULTIPASS-MP830" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP830" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP830" driver="bjc-PIXUS-MP830" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP830" /> + <!-- Canon MP900 family --> + <printer translate="name" name="Canon MP900 series" driver="bjc-MP900-series" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP900-series" /> + <printer translate="name" name="Canon PIXMA MP900" driver="bjc-MULTIPASS-MP900" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP900" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP900" driver="bjc-PIXUS-MP900" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP900" /> + <!-- Canon MP950 family --> + <printer translate="name" name="Canon MP950 series" driver="bjc-MP950-series" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP950-series" /> + <printer translate="name" name="Canon PIXMA MP950" driver="bjc-MULTIPASS-MP950" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP950" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP950" driver="bjc-PIXUS-MP950" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP950" /> + <!-- Canon MP960 family --> + <printer translate="name" name="Canon MP960 series" driver="bjc-MP960-series" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP960-series" /> + <printer translate="name" name="Canon PIXMA MP960" driver="bjc-MULTIPASS-MP960" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP960" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP960" driver="bjc-PIXUS-MP960" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP960" /> + <!-- Canon MP970 family --> + <printer translate="name" name="Canon MP970 series" driver="bjc-MP970-series" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP970-series" /> + <printer translate="name" name="Canon PIXMA MP970" driver="bjc-MULTIPASS-MP970" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP970" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP970" driver="bjc-PIXUS-MP970" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP970" /> + <!-- Canon MP980 family --> + <printer translate="name" name="Canon MP980 series" driver="bjc-MP980-series" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP980-series" /> + <printer translate="name" name="Canon PIXMA MP980" driver="bjc-MULTIPASS-MP980" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP980" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP980" driver="bjc-PIXUS-MP980" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP980" /> + <printer translate="name" name="Canon PIXMA MP988" driver="bjc-PIXMA-MP988" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP988" /> + <!-- Canon MP990 family --> + <printer translate="name" name="Canon MP990 series" driver="bjc-MP990-series" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP990-series" /> + <printer translate="name" name="Canon PIXMA MP990" driver="bjc-MULTIPASS-MP990" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP990" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MP990" driver="bjc-PIXUS-MP990" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP990" /> + <printer translate="name" name="Canon PIXMA MP996" driver="bjc-PIXMA-MP996" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP996" /> + <!-- Canon MG2100 family --> + <printer translate="name" name="Canon MG2100 series" driver="bjc-MG2100-series" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG2100-series" /> <printer translate="name" name="Canon PIXMA MG2100" driver="bjc-PIXMA-MG2100" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2100" /> + <printer translate="name" name="Canon PIXMA MG2110" driver="bjc-PIXMA-MG2110" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2110" /> + <printer translate="name" name="Canon PIXMA MG2120" driver="bjc-PIXMA-MG2120" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2120" /> + <printer translate="name" name="Canon PIXUS MG2130" driver="bjc-PIXUS-MG2130" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG2130" /> + <printer translate="name" name="Canon PIXMA MG2140" driver="bjc-PIXMA-MG2140" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2140" /> + <printer translate="name" name="Canon PIXMA MG2150" driver="bjc-PIXMA-MG2150" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2150" /> + <printer translate="name" name="Canon PIXMA MG2160" driver="bjc-PIXMA-MG2160" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2160" /> + <printer translate="name" name="Canon PIXMA MG2170" driver="bjc-PIXMA-MG2170" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2170" /> + <printer translate="name" name="Canon PIXMA MG2180" driver="bjc-PIXMA-MG2180" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2180" /> + <!-- Canon MG2200 family --> + <printer translate="name" name="Canon MG2200 series" driver="bjc-MG2200-series" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG2200-series" /> + <printer translate="name" name="Canon PIXMA MG2210" driver="bjc-PIXMA-MG2210" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2210" /> + <printer translate="name" name="Canon PIXMA MG2220" driver="bjc-PIXMA-MG2220" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2220" /> + <printer translate="name" name="Canon PIXMA MG2240" driver="bjc-PIXMA-MG2240" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2240" /> + <printer translate="name" name="Canon PIXMA MG2250" driver="bjc-PIXMA-MG2250" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2250" /> + <printer translate="name" name="Canon PIXMA MG2260" driver="bjc-PIXMA-MG2260" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2260" /> + <printer translate="name" name="Canon PIXMA MG2270" driver="bjc-PIXMA-MG2270" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2270" /> + <printer translate="name" name="Canon PIXMA MG2280" driver="bjc-PIXMA-MG2280" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2280" /> + <!-- Canon MG2400 family --> + <printer translate="name" name="Canon MG2400 series" driver="bjc-MG2400-series" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG2400-series" /> + <printer translate="name" name="Canon PIXMA MG2400" driver="bjc-PIXMA-MG2400" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2400" /> + <printer translate="name" name="Canon PIXMA MG2410" driver="bjc-PIXMA-MG2410" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2410" /> + <printer translate="name" name="Canon PIXMA MG2420" driver="bjc-PIXMA-MG2420" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2420" /> + <printer translate="name" name="Canon PIXMA MG2440" driver="bjc-PIXMA-MG2440" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2440" /> + <printer translate="name" name="Canon PIXMA MG2450" driver="bjc-PIXMA-MG2450" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2450" /> + <printer translate="name" name="Canon PIXMA MG2470" driver="bjc-PIXMA-MG2470" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2470" /> + <!-- Canon MG2500 family --> + <printer translate="name" name="Canon MG2500 series" driver="bjc-MG2500-series" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG2500-series" /> + <printer translate="name" name="Canon PIXMA MG2510" driver="bjc-PIXMA-MG2510" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2510" /> + <printer translate="name" name="Canon PIXMA MG2520" driver="bjc-PIXMA-MG2520" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2520" /> + <printer translate="name" name="Canon PIXMA MG2540" driver="bjc-PIXMA-MG2540" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2540" /> + <printer translate="name" name="Canon PIXMA MG2550" driver="bjc-PIXMA-MG2550" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2550" /> + <printer translate="name" name="Canon PIXMA MG2560" driver="bjc-PIXMA-MG2560" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2560" /> + <printer translate="name" name="Canon PIXMA MG2570" driver="bjc-PIXMA-MG2570" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2570" /> + <printer translate="name" name="Canon PIXMA MG2580" driver="bjc-PIXMA-MG2580" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2580" /> + <!-- Canon MG3100 family --> + <printer translate="name" name="Canon MG3100 series" driver="bjc-MG3100-series" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG3100-series" /> <printer translate="name" name="Canon PIXMA MG3100" driver="bjc-PIXMA-MG3100" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3100" /> + <printer translate="name" name="Canon PIXMA MG3110" driver="bjc-PIXMA-MG3110" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3110" /> + <printer translate="name" name="Canon PIXMA MG3120" driver="bjc-PIXMA-MG3120" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3120" /> + <printer translate="name" name="Canon PIXMA MG3122" driver="bjc-PIXMA-MG3122" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3122" /> + <printer translate="name" name="Canon PIXUS MG3130" driver="bjc-PIXUS-MG3130" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG3130" /> + <printer translate="name" name="Canon PIXMA MG3140" driver="bjc-PIXMA-MG3140" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3140" /> + <printer translate="name" name="Canon PIXMA MG3150" driver="bjc-PIXMA-MG3150" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3150" /> + <printer translate="name" name="Canon PIXMA MG3160" driver="bjc-PIXMA-MG3160" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3160" /> + <printer translate="name" name="Canon PIXMA MG3170" driver="bjc-PIXMA-MG3170" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3170" /> + <printer translate="name" name="Canon PIXMA MG3180" driver="bjc-PIXMA-MG3180" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3180" /> + <!-- Canon MG3200 family --> + <printer translate="name" name="Canon MG3200 series" driver="bjc-MG3200-series" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG3200-series" /> + <printer translate="name" name="Canon PIXMA MG3210" driver="bjc-PIXMA-MG3210" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3210" /> + <printer translate="name" name="Canon PIXMA MG3220" driver="bjc-PIXMA-MG3220" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3220" /> + <printer translate="name" name="Canon PIXMA MG3222" driver="bjc-PIXMA-MG3222" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3222" /> + <printer translate="name" name="Canon PIXUS MG3230" driver="bjc-PIXUS-MG3230" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG3230" /> + <printer translate="name" name="Canon PIXMA MG3240" driver="bjc-PIXMA-MG3240" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3240" /> + <printer translate="name" name="Canon PIXMA MG3250" driver="bjc-PIXMA-MG3250" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3250" /> + <printer translate="name" name="Canon PIXMA MG3260" driver="bjc-PIXMA-MG3260" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3260" /> + <printer translate="name" name="Canon PIXMA MG3270" driver="bjc-PIXMA-MG3270" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3270" /> + <!-- Canon MG3500 family --> + <printer translate="name" name="Canon MG3500 series" driver="bjc-MG3500-series" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG3500-series" /> + <printer translate="name" name="Canon PIXMA MG3510" driver="bjc-PIXMA-MG3510" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3510" /> + <printer translate="name" name="Canon PIXMA MG3520" driver="bjc-PIXMA-MG3520" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3520" /> + <printer translate="name" name="Canon PIXUS MG3530" driver="bjc-PIXUS-MG3530" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG3530" /> + <printer translate="name" name="Canon PIXMA MG3540" driver="bjc-PIXMA-MG3540" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3540" /> + <printer translate="name" name="Canon PIXMA MG3550" driver="bjc-PIXMA-MG3550" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3550" /> + <printer translate="name" name="Canon PIXMA MG3560" driver="bjc-PIXMA-MG3560" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3560" /> + <printer translate="name" name="Canon PIXMA MG3570" driver="bjc-PIXMA-MG3570" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3570" /> + <printer translate="name" name="Canon PIXMA MG3580" driver="bjc-PIXMA-MG3580" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3580" /> + <!-- Canon MG4100 family --> + <printer translate="name" name="Canon MG4100 series" driver="bjc-MG4100-series" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG4100-series" /> <printer translate="name" name="Canon PIXMA MG4100" driver="bjc-PIXMA-MG4100" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4100" /> + <printer translate="name" name="Canon PIXMA MG4110" driver="bjc-PIXMA-MG4110" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4110" /> + <printer translate="name" name="Canon PIXMA MG4120" driver="bjc-PIXMA-MG4120" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4120" /> + <printer translate="name" name="Canon PIXUS MG4130" driver="bjc-PIXUS-MG4130" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG4130" /> + <printer translate="name" name="Canon PIXMA MG4140" driver="bjc-PIXMA-MG4140" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4140" /> + <printer translate="name" name="Canon PIXMA MG4150" driver="bjc-PIXMA-MG4150" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4150" /> + <printer translate="name" name="Canon PIXMA MG4160" driver="bjc-PIXMA-MG4160" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4160" /> + <printer translate="name" name="Canon PIXMA MG4170" driver="bjc-PIXMA-MG4170" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4170" /> + <printer translate="name" name="Canon PIXMA MG4180" driver="bjc-PIXMA-MG4180" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4180" /> + <!-- Canon MG4200 family --> + <printer translate="name" name="Canon MG4200 series" driver="bjc-MG4200-series" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG4200-series" /> + <printer translate="name" name="Canon PIXMA MG4210" driver="bjc-PIXMA-MG4210" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4210" /> + <printer translate="name" name="Canon PIXMA MG4220" driver="bjc-PIXMA-MG4220" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4220" /> + <printer translate="name" name="Canon PIXUS MG4230" driver="bjc-PIXUS-MG4230" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG4230" /> + <printer translate="name" name="Canon PIXMA MG4240" driver="bjc-PIXMA-MG4240" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4240" /> + <printer translate="name" name="Canon PIXMA MG4250" driver="bjc-PIXMA-MG4250" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4250" /> + <printer translate="name" name="Canon PIXMA MG4260" driver="bjc-PIXMA-MG4260" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4260" /> + <printer translate="name" name="Canon PIXMA MG4270" driver="bjc-PIXMA-MG4270" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4270" /> + <printer translate="name" name="Canon PIXMA MG4280" driver="bjc-PIXMA-MG4280" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4280" /> + <!-- Canon MG5100 family --> + <printer translate="name" name="Canon MG5100 series" driver="bjc-MG5100-series" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5100-series" /> <printer translate="name" name="Canon PIXMA MG5100" driver="bjc-PIXMA-MG5100" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5100" /> + <printer translate="name" name="Canon PIXMA MG5120" driver="bjc-PIXMA-MG5120" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5120" /> + <printer translate="name" name="Canon PIXUS MG5130" driver="bjc-PIXUS-MG5130" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5130" /> + <printer translate="name" name="Canon PIXMA MG5140" driver="bjc-PIXMA-MG5140" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5140" /> + <printer translate="name" name="Canon PIXMA MG5150" driver="bjc-PIXMA-MG5150" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5150" /> + <printer translate="name" name="Canon PIXMA MG5170" driver="bjc-PIXMA-MG5170" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5170" /> + <printer translate="name" name="Canon PIXMA MG5180" driver="bjc-PIXMA-MG5180" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5180" /> + <!-- Canon MG5200 family --> + <printer translate="name" name="Canon MG5200 series" driver="bjc-MG5200-series" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5200-series" /> <printer translate="name" name="Canon PIXMA MG5200" driver="bjc-PIXMA-MG5200" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5200" /> + <printer translate="name" name="Canon PIXMA MG5210" driver="bjc-PIXMA-MG5210" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5210" /> + <printer translate="name" name="Canon PIXMA MG5220" driver="bjc-PIXMA-MG5220" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5220" /> + <printer translate="name" name="Canon PIXUS MG5230" driver="bjc-PIXUS-MG5230" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5230" /> + <printer translate="name" name="Canon PIXMA MG5240" driver="bjc-PIXMA-MG5240" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5240" /> + <printer translate="name" name="Canon PIXMA MG5250" driver="bjc-PIXMA-MG5250" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5250" /> + <printer translate="name" name="Canon PIXMA MG5270" driver="bjc-PIXMA-MG5270" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5270" /> + <printer translate="name" name="Canon PIXMA MG5280" driver="bjc-PIXMA-MG5280" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5280" /> + <!-- Canon MG5300 family --> + <printer translate="name" name="Canon MG5300 series" driver="bjc-MG5300-series" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5300-series" /> <printer translate="name" name="Canon PIXMA MG5300" driver="bjc-PIXMA-MG5300" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5300" /> + <printer translate="name" name="Canon PIXMA MG5310" driver="bjc-PIXMA-MG5310" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5310" /> + <printer translate="name" name="Canon PIXMA MG5320" driver="bjc-PIXMA-MG5320" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5320" /> + <printer translate="name" name="Canon PIXUS MG5330" driver="bjc-PIXUS-MG5330" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5330" /> + <printer translate="name" name="Canon PIXMA MG5340" driver="bjc-PIXMA-MG5340" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5340" /> + <printer translate="name" name="Canon PIXMA MG5350" driver="bjc-PIXMA-MG5350" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5350" /> + <printer translate="name" name="Canon PIXMA MG5370" driver="bjc-PIXMA-MG5370" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5370" /> + <printer translate="name" name="Canon PIXMA MG5380" driver="bjc-PIXMA-MG5380" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5380" /> + <!-- Canon MG5400 family --> + <printer translate="name" name="Canon MG5400 series" driver="bjc-MG5400-series" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5400-series" /> + <printer translate="name" name="Canon PIXMA MG5410" driver="bjc-PIXMA-MG5410" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5410" /> + <printer translate="name" name="Canon PIXMA MG5420" driver="bjc-PIXMA-MG5420" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5420" /> + <printer translate="name" name="Canon PIXMA MG5422" driver="bjc-PIXMA-MG5422" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5422" /> + <printer translate="name" name="Canon PIXUS MG5430" driver="bjc-PIXUS-MG5430" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5430" /> + <printer translate="name" name="Canon PIXMA MG5440" driver="bjc-PIXMA-MG5440" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5440" /> + <printer translate="name" name="Canon PIXMA MG5450" driver="bjc-PIXMA-MG5450" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5450" /> + <printer translate="name" name="Canon PIXMA MG5460" driver="bjc-PIXMA-MG5460" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5460" /> + <printer translate="name" name="Canon PIXMA MG5470" driver="bjc-PIXMA-MG5470" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5470" /> + <printer translate="name" name="Canon PIXMA MG5480" driver="bjc-PIXMA-MG5480" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5480" /> + <!-- Canon MG5500 family --> + <printer translate="name" name="Canon MG5500 series" driver="bjc-MG5500-series" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5500-series" /> + <printer translate="name" name="Canon PIXMA MG5510" driver="bjc-PIXMA-MG5510" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5510" /> + <printer translate="name" name="Canon PIXMA MG5520" driver="bjc-PIXMA-MG5520" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5520" /> + <printer translate="name" name="Canon PIXMA MG5522" driver="bjc-PIXMA-MG5522" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5522" /> + <printer translate="name" name="Canon PIXUS MG5530" driver="bjc-PIXUS-MG5530" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5530" /> + <printer translate="name" name="Canon PIXMA MG5540" driver="bjc-PIXMA-MG5540" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5540" /> + <printer translate="name" name="Canon PIXMA MG5550" driver="bjc-PIXMA-MG5550" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5550" /> + <printer translate="name" name="Canon PIXMA MG5560" driver="bjc-PIXMA-MG5560" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5560" /> + <printer translate="name" name="Canon PIXMA MG5570" driver="bjc-PIXMA-MG5570" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5570" /> + <printer translate="name" name="Canon PIXMA MG5580" driver="bjc-PIXMA-MG5580" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5580" /> + <!-- Canon MG6100 family --> + <printer translate="name" name="Canon MG6100 series" driver="bjc-MG6100-series" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6100-series" /> <printer translate="name" name="Canon PIXMA MG6100" driver="bjc-PIXMA-MG6100" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6100" /> + <printer translate="name" name="Canon PIXMA MG6110" driver="bjc-PIXMA-MG6110" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6110" /> + <printer translate="name" name="Canon PIXMA MG6120" driver="bjc-PIXMA-MG6120" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6120" /> + <printer translate="name" name="Canon PIXUS MG6130" driver="bjc-PIXUS-MG6130" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG6130" /> + <printer translate="name" name="Canon PIXMA MG6140" driver="bjc-PIXMA-MG6140" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6140" /> + <printer translate="name" name="Canon PIXMA MG6150" driver="bjc-PIXMA-MG6150" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6150" /> + <printer translate="name" name="Canon PIXMA MG6170" driver="bjc-PIXMA-MG6170" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6170" /> + <printer translate="name" name="Canon PIXMA MG6180" driver="bjc-PIXMA-MG6180" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6180" /> + <!-- Canon MG6200 family --> + <printer translate="name" name="Canon MG6200 series" driver="bjc-MG6200-series" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6200-series" /> <printer translate="name" name="Canon PIXMA MG6200" driver="bjc-PIXMA-MG6200" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6200" /> + <printer translate="name" name="Canon PIXMA MG6210" driver="bjc-PIXMA-MG6210" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6210" /> + <printer translate="name" name="Canon PIXMA MG6220" driver="bjc-PIXMA-MG6220" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6220" /> + <printer translate="name" name="Canon PIXUS MG6230" driver="bjc-PIXUS-MG6230" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG6230" /> + <printer translate="name" name="Canon PIXMA MG6240" driver="bjc-PIXMA-MG6240" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6240" /> + <printer translate="name" name="Canon PIXMA MG6250" driver="bjc-PIXMA-MG6250" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6250" /> + <printer translate="name" name="Canon PIXMA MG6270" driver="bjc-PIXMA-MG6270" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6270" /> + <printer translate="name" name="Canon PIXMA MG6280" driver="bjc-PIXMA-MG6280" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6280" /> + <!-- Canon MG6300 family --> + <printer translate="name" name="Canon MG6300 series" driver="bjc-MG6300-series" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6300-series" /> + <printer translate="name" name="Canon PIXMA MG6310" driver="bjc-PIXMA-MG6310" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6310" /> + <printer translate="name" name="Canon PIXMA MG6320" driver="bjc-PIXMA-MG6320" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6320" /> + <printer translate="name" name="Canon PIXUS MG6330" driver="bjc-PIXUS-MG6330" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG6330" /> + <printer translate="name" name="Canon PIXMA MG6340" driver="bjc-PIXMA-MG6340" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6340" /> + <printer translate="name" name="Canon PIXMA MG6350" driver="bjc-PIXMA-MG6350" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6350" /> + <printer translate="name" name="Canon PIXMA MG6360" driver="bjc-PIXMA-MG6360" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6360" /> + <printer translate="name" name="Canon PIXMA MG6370" driver="bjc-PIXMA-MG6370" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6370" /> + <printer translate="name" name="Canon PIXMA MG6380" driver="bjc-PIXMA-MG6380" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6380" /> + <!-- Canon MG6400 family --> + <printer translate="name" name="Canon MG6400 series" driver="bjc-MG6400-series" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6400-series" /> + <printer translate="name" name="Canon PIXMA MG6400" driver="bjc-PIXMA-MG6400" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6400" /> + <printer translate="name" name="Canon PIXMA MG6410" driver="bjc-PIXMA-MG6410" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6410" /> + <printer translate="name" name="Canon PIXMA MG6420" driver="bjc-PIXMA-MG6420" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6420" /> + <printer translate="name" name="Canon PIXMA MG6440" driver="bjc-PIXMA-MG6440" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6440" /> + <printer translate="name" name="Canon PIXMA MG6450" driver="bjc-PIXMA-MG6450" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6450" /> + <printer translate="name" name="Canon PIXMA MG6470" driver="bjc-PIXMA-MG6470" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6470" /> + <!-- Canon MG6500 family --> + <printer translate="name" name="Canon MG6500 series" driver="bjc-MG6500-series" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6500-series" /> + <printer translate="name" name="Canon PIXUS MG6530" driver="bjc-PIXUS-MG6530" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG6530" /> + <!-- Canon MG7100 family --> + <printer translate="name" name="Canon MG7100 series" driver="bjc-MG7100-series" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG7100-series" /> + <printer translate="name" name="Canon PIXMA MG7110" driver="bjc-PIXMA-MG7110" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7110" /> + <printer translate="name" name="Canon PIXMA MG7120" driver="bjc-PIXMA-MG7120" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7120" /> + <printer translate="name" name="Canon PIXUS MG7130" driver="bjc-PIXUS-MG7130" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG7130" /> + <printer translate="name" name="Canon PIXMA MG7140" driver="bjc-PIXMA-MG7140" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7140" /> + <printer translate="name" name="Canon PIXMA MG7150" driver="bjc-PIXMA-MG7150" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7150" /> + <printer translate="name" name="Canon PIXMA MG7170" driver="bjc-PIXMA-MG7170" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7170" /> + <printer translate="name" name="Canon PIXMA MG7180" driver="bjc-PIXMA-MG7180" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7180" /> + <!-- Canon MG8100 family --> + <printer translate="name" name="Canon MG8100 series" driver="bjc-MG8100-series" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG8100-series" /> <printer translate="name" name="Canon PIXMA MG8100" driver="bjc-PIXMA-MG8100" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8100" /> + <printer translate="name" name="Canon PIXMA MG8120" driver="bjc-PIXMA-MG8120" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8120" /> + <printer translate="name" name="Canon PIXUS MG8130" driver="bjc-PIXUS-MG8130" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG8130" /> + <printer translate="name" name="Canon PIXMA MG8140" driver="bjc-PIXMA-MG8140" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8140" /> + <printer translate="name" name="Canon PIXMA MG8150" driver="bjc-PIXMA-MG8150" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8150" /> + <printer translate="name" name="Canon PIXMA MG8170" driver="bjc-PIXMA-MG8170" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8170" /> + <printer translate="name" name="Canon PIXMA MG8180" driver="bjc-PIXMA-MG8180" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8180" /> + <!-- Canon MG8200 family --> + <printer translate="name" name="Canon MG8200 series" driver="bjc-MG8200-series" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG8200-series" /> <printer translate="name" name="Canon PIXMA MG8200" driver="bjc-PIXMA-MG8200" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8200" /> - <printer translate="name" name="Canon PIXMA MX300" driver="bjc-MULTIPASS-MX300" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX300" /> - <printer translate="name" name="Canon PIXMA MX310" driver="bjc-MULTIPASS-MX310" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX310" /> - <printer translate="name" name="Canon PIXMA MX320" driver="bjc-MULTIPASS-MX320" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX320" /> - <printer translate="name" name="Canon PIXMA MX330" driver="bjc-MULTIPASS-MX330" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX330" /> - <printer translate="name" name="Canon PIXMA MX340" driver="bjc-MULTIPASS-MX340" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX340" /> - <printer translate="name" name="Canon PIXMA MX350" driver="bjc-MULTIPASS-MX350" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX350" /> - <printer translate="name" name="Canon PIXMA MX360" driver="bjc-MULTIPASS-MX360" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX360" /> - <printer translate="name" name="Canon PIXMA MX370" driver="bjc-MULTIPASS-MX370" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX370" /> - <printer translate="name" name="Canon PIXMA MX410" driver="bjc-MULTIPASS-MX410" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX410" /> - <printer translate="name" name="Canon PIXMA MX420" driver="bjc-MULTIPASS-MX420" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX420" /> - <printer translate="name" name="Canon PIXMA MX430" driver="bjc-MULTIPASS-MX430" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX430" /> - <printer translate="name" name="Canon PIXMA MX510" driver="bjc-MULTIPASS-MX510" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX510" /> - <printer translate="name" name="Canon PIXMA MX700" driver="bjc-MULTIPASS-MX700" manufacturer="Canon" model="9000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX700" /> - <printer translate="name" name="Canon PIXMA MX710" driver="bjc-MULTIPASS-MX710" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX710" /> - <printer translate="name" name="Canon PIXMA MX850" driver="bjc-MULTIPASS-MX850" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX850" /> - <printer translate="name" name="Canon PIXMA MX860" driver="bjc-MULTIPASS-MX860" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX860" /> - <printer translate="name" name="Canon PIXMA MX870" driver="bjc-MULTIPASS-MX870" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX870" /> - <printer translate="name" name="Canon PIXMA MX880" driver="bjc-MULTIPASS-MX880" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX880" /> - <printer translate="name" name="Canon PIXMA MX890" driver="bjc-MULTIPASS-MX890" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX890" /> - <printer translate="name" name="Canon PIXMA MX7600" driver="bjc-MULTIPASS-MX7600" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX7600" /> - <printer translate="name" name="Canon PIXMA E500" driver="bjc-MULTIPASS-E500" manufacturer="Canon" model="12000500" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-E500" /> - <printer translate="name" name="Canon PIXMA E600" driver="bjc-MULTIPASS-E600" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-E600" /> + <printer translate="name" name="Canon PIXMA MG8220" driver="bjc-PIXMA-MG8220" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8220" /> + <printer translate="name" name="Canon PIXUS MG8230" driver="bjc-PIXUS-MG8230" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG8230" /> + <printer translate="name" name="Canon PIXMA MG8240" driver="bjc-PIXMA-MG8240" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8240" /> + <printer translate="name" name="Canon PIXMA MG8250" driver="bjc-PIXMA-MG8250" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8250" /> + <printer translate="name" name="Canon PIXMA MG8270" driver="bjc-PIXMA-MG8270" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8270" /> + <printer translate="name" name="Canon PIXMA MG8280" driver="bjc-PIXMA-MG8280" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8280" /> + <!-- Canon MX300 family --> + <printer translate="name" name="Canon MX300 series" driver="bjc-MX300-series" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX300-series" /> + <printer translate="name" name="Canon PIXMA MX300" driver="bjc-MULTIPASS-MX300" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX300" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MX308" driver="bjc-PIXMA-MX308" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX308" /> + <!-- Canon MX310 family--> + <printer translate="name" name="Canon MX310 series" driver="bjc-MX310-series" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX310-series" /> + <printer translate="name" name="Canon PIXMA MX310" driver="bjc-MULTIPASS-MX310" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX310" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MX318" driver="bjc-PIXMA-MX318" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX318" /> + <!-- Canon MX320 family--> + <printer translate="name" name="Canon MX320 series" driver="bjc-MX320-series" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX320-series" /> + <printer translate="name" name="Canon PIXMA MX320" driver="bjc-MULTIPASS-MX320" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX320" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MX328" driver="bjc-PIXMA-MX328" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX328" /> + <!-- Canon MX330 family--> + <printer translate="name" name="Canon MX330 series" driver="bjc-MX330-series" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX330-series" /> + <printer translate="name" name="Canon PIXMA MX330" driver="bjc-MULTIPASS-MX330" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX330" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MX338" driver="bjc-PIXMA-MX338" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX338" /> + <!-- Canon MX340 family --> + <printer translate="name" name="Canon MX340 series" driver="bjc-MX340-series" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX340-series" /> + <printer translate="name" name="Canon PIXMA MX340" driver="bjc-MULTIPASS-MX340" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX340" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MX347" driver="bjc-PIXMA-MX347" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX347" /> + <printer translate="name" name="Canon PIXMA MX348" driver="bjc-PIXMA-MX348" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX348" /> + <!-- Canon MX350 family --> + <printer translate="name" name="Canon MX350 series" driver="bjc-MX350-series" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX350-series" /> + <printer translate="name" name="Canon PIXMA MX350" driver="bjc-MULTIPASS-MX350" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX350" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MX350" driver="bjc-PIXUS-MX350" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX350" /> + <printer translate="name" name="Canon PIXMA MX357" driver="bjc-PIXMA-MX357" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX357" /> + <printer translate="name" name="Canon PIXMA MX358" driver="bjc-PIXMA-MX358" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX358" /> + <!-- Canon MX360 family --> + <printer translate="name" name="Canon MX360 series" driver="bjc-MX360-series" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX360-series" /> + <printer translate="name" name="Canon PIXMA MX360" driver="bjc-MULTIPASS-MX360" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX360" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MX366" driver="bjc-PIXMA-MX366" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX366" /> + <printer translate="name" name="Canon PIXMA MX368" driver="bjc-PIXMA-MX368" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX368" /> + <!-- Canon MX370 family --> + <printer translate="name" name="Canon MX370 series" driver="bjc-MX370-series" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX370-series" /> + <printer translate="name" name="Canon PIXMA MX370" driver="bjc-MULTIPASS-MX370" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX370" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MX371" driver="bjc-PIXMA-MX371" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX371" /> + <printer translate="name" name="Canon PIXMA MX372" driver="bjc-PIXMA-MX372" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX372" /> + <printer translate="name" name="Canon PIXMA MX374" driver="bjc-PIXMA-MX374" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX374" /> + <printer translate="name" name="Canon PIXMA MX375" driver="bjc-PIXMA-MX375" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX375" /> + <printer translate="name" name="Canon PIXMA MX376" driver="bjc-PIXMA-MX376" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX376" /> + <printer translate="name" name="Canon PIXMA MX377" driver="bjc-PIXMA-MX377" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX377" /> + <printer translate="name" name="Canon PIXMA MX378" driver="bjc-PIXMA-MX378" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX378" /> + <!-- Canon MX390 family --> + <printer translate="name" name="Canon MX390 series" driver="bjc-MX390-series" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX390-series" /> + <printer translate="name" name="Canon PIXMA MX391" driver="bjc-PIXMA-MX391" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX391" /> + <printer translate="name" name="Canon PIXMA MX392" driver="bjc-PIXMA-MX392" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX392" /> + <printer translate="name" name="Canon PIXMA MX394" driver="bjc-PIXMA-MX394" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX394" /> + <printer translate="name" name="Canon PIXMA MX395" driver="bjc-PIXMA-MX395" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX395" /> + <printer translate="name" name="Canon PIXMA MX396" driver="bjc-PIXMA-MX396" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX396" /> + <printer translate="name" name="Canon PIXMA MX397" driver="bjc-PIXMA-MX397" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX397" /> + <printer translate="name" name="Canon PIXMA MX398" driver="bjc-PIXMA-MX398" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX398" /> + <!-- Canon MX410 family --> + <printer translate="name" name="Canon MX410 series" driver="bjc-MX410-series" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX410-series" /> + <printer translate="name" name="Canon PIXMA MX410" driver="bjc-MULTIPASS-MX410" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX410" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MX416" driver="bjc-PIXMA-MX416" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX416" /> + <printer translate="name" name="Canon PIXMA MX418" driver="bjc-PIXMA-MX418" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX418" /> + <!-- Canon MX420 family --> + <printer translate="name" name="Canon MX420 series" driver="bjc-MX420-series" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX420-series" /> + <printer translate="name" name="Canon PIXMA MX420" driver="bjc-MULTIPASS-MX420" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX420" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MX420" driver="bjc-PIXUS-MX420" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX420" /> + <printer translate="name" name="Canon PIXMA MX426" driver="bjc-PIXMA-MX426" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX426" /> + <printer translate="name" name="Canon PIXMA MX428" driver="bjc-PIXMA-MX428" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX428" /> + <!-- Canon MX430 family --> + <printer translate="name" name="Canon MX430 series" driver="bjc-MX430-series" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX430-series" /> + <printer translate="name" name="Canon PIXMA MX430" driver="bjc-MULTIPASS-MX430" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX430" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MX431" driver="bjc-PIXMA-MX431" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX431" /> + <printer translate="name" name="Canon PIXMA MX432" driver="bjc-PIXMA-MX432" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX432" /> + <printer translate="name" name="Canon PIXMA MX434" driver="bjc-PIXMA-MX434" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX434" /> + <printer translate="name" name="Canon PIXMA MX435" driver="bjc-PIXMA-MX435" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX435" /> + <printer translate="name" name="Canon PIXMA MX436" driver="bjc-PIXMA-MX436" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX436" /> + <printer translate="name" name="Canon PIXMA MX437" driver="bjc-PIXMA-MX437" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX437" /> + <printer translate="name" name="Canon PIXMA MX438" driver="bjc-PIXMA-MX438" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX438" /> + <printer translate="name" name="Canon PIXMA MX439" driver="bjc-PIXMA-MX439" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX439" /> + <!-- Canon MX450 family --> + <printer translate="name" name="Canon MX450 series" driver="bjc-MX450-series" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX450-series" /> + <printer translate="name" name="Canon PIXMA MX451" driver="bjc-PIXMA-MX451" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX451" /> + <printer translate="name" name="Canon PIXMA MX452" driver="bjc-PIXMA-MX452" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX452" /> + <printer translate="name" name="Canon PIXMA MX454" driver="bjc-PIXMA-MX454" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX454" /> + <printer translate="name" name="Canon PIXMA MX455" driver="bjc-PIXMA-MX455" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX455" /> + <printer translate="name" name="Canon PIXMA MX456" driver="bjc-PIXMA-MX456" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX456" /> + <printer translate="name" name="Canon PIXMA MX457" driver="bjc-PIXMA-MX457" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX457" /> + <printer translate="name" name="Canon PIXMA MX458" driver="bjc-PIXMA-MX458" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX458" /> + <printer translate="name" name="Canon PIXMA MX459" driver="bjc-PIXMA-MX459" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX459" /> + <!-- Canon MX510 family --> + <printer translate="name" name="Canon MX510 series" driver="bjc-MX510-series" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX510-series" /> + <printer translate="name" name="Canon PIXMA MX510" driver="bjc-MULTIPASS-MX510" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX510" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MX511" driver="bjc-PIXMA-MX511" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX511" /> + <printer translate="name" name="Canon PIXMA MX512" driver="bjc-PIXMA-MX512" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX512" /> + <printer translate="name" name="Canon PIXUS MX513" driver="bjc-PIXUS-MX513" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX513" /> + <printer translate="name" name="Canon PIXMA MX514" driver="bjc-PIXMA-MX514" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX514" /> + <printer translate="name" name="Canon PIXMA MX515" driver="bjc-PIXMA-MX515" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX515" /> + <printer translate="name" name="Canon PIXMA MX516" driver="bjc-PIXMA-MX516" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX516" /> + <printer translate="name" name="Canon PIXMA MX517" driver="bjc-PIXMA-MX517" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX517" /> + <printer translate="name" name="Canon PIXMA MX518" driver="bjc-PIXMA-MX518" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX518" /> + <!-- Canon MX520 family --> + <printer translate="name" name="Canon MX520 series" driver="bjc-MX520-series" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX520-series" /> + <printer translate="name" name="Canon PIXMA MX521" driver="bjc-PIXMA-MX521" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX521" /> + <printer translate="name" name="Canon PIXMA MX522" driver="bjc-PIXMA-MX522" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX522" /> + <printer translate="name" name="Canon PIXUS MX523" driver="bjc-PIXUS-MX523" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX523" /> + <printer translate="name" name="Canon PIXMA MX524" driver="bjc-PIXMA-MX524" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX524" /> + <printer translate="name" name="Canon PIXMA MX525" driver="bjc-PIXMA-MX525" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX525" /> + <printer translate="name" name="Canon PIXMA MX526" driver="bjc-PIXMA-MX526" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX526" /> + <printer translate="name" name="Canon PIXMA MX527" driver="bjc-PIXMA-MX527" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX527" /> + <printer translate="name" name="Canon PIXMA MX528" driver="bjc-PIXMA-MX528" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX528" /> + <!-- Canon MX700 family --> + <printer translate="name" name="Canon MX700 series" driver="bjc-MX700-series" manufacturer="Canon" model="9000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX700-series" /> + <printer translate="name" name="Canon PIXMA MX700" driver="bjc-MULTIPASS-MX700" manufacturer="Canon" model="9000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX700" /><!-- driver and foomaticid legacy names used --> + <!-- Canon MX710 family --> + <printer translate="name" name="Canon MX710 series" driver="bjc-MX710-series" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX710-series" /> + <printer translate="name" name="Canon PIXMA MX710" driver="bjc-MULTIPASS-MX710" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX710" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MX711" driver="bjc-PIXMA-MX711" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX711" /> + <printer translate="name" name="Canon PIXMA MX712" driver="bjc-PIXMA-MX712" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX712" /> + <printer translate="name" name="Canon PIXMA MX714" driver="bjc-PIXMA-MX714" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX714" /> + <printer translate="name" name="Canon PIXMA MX715" driver="bjc-PIXMA-MX715" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX715" /> + <!-- Canon MX720 family --> + <printer translate="name" name="Canon MX720 series" driver="bjc-MX720-series" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX720-series" /> + <printer translate="name" name="Canon PIXMA MX721" driver="bjc-PIXMA-MX721" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX721" /> + <printer translate="name" name="Canon PIXMA MX722" driver="bjc-PIXMA-MX722" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX722" /> + <printer translate="name" name="Canon PIXMA MX725" driver="bjc-PIXMA-MX725" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX725" /> + <printer translate="name" name="Canon PIXMA MX726" driver="bjc-PIXMA-MX726" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX726" /> + <printer translate="name" name="Canon PIXMA MX727" driver="bjc-PIXMA-MX727" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX727" /> + <printer translate="name" name="Canon PIXMA MX728" driver="bjc-PIXMA-MX728" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX728" /> + <!-- Canon MX850 family--> + <printer translate="name" name="Canon MX850 series" driver="bjc-MX850-series" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX850-series" /> + <printer translate="name" name="Canon PIXMA MX850" driver="bjc-MULTIPASS-MX850" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX850" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MX850" driver="bjc-PIXUS-MX850" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX850" /> + <!-- Canon MX860 family --> + <printer translate="name" name="Canon MX860 series" driver="bjc-MX860-series" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX860-series" /> + <printer translate="name" name="Canon PIXMA MX860" driver="bjc-MULTIPASS-MX860" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX860" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MX860" driver="bjc-PIXUS-MX860" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX860" /> + <printer translate="name" name="Canon PIXMA MX868" driver="bjc-PIXMA-MX868" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX868" /> + <!-- Canon MX870 family --> + <printer translate="name" name="Canon MX870 series" driver="bjc-MX870-series" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX870-series" /> + <printer translate="name" name="Canon PIXMA MX870" driver="bjc-MULTIPASS-MX870" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX870" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MX870" driver="bjc-PIXUS-MX870" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX870" /> + <printer translate="name" name="Canon PIXMA MX876" driver="bjc-PIXMA-MX876" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX876" /> + <!-- Canon MX880 family --> + <printer translate="name" name="Canon MX880 series" driver="bjc-MX880-series" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX880-series" /> + <printer translate="name" name="Canon PIXMA MX880" driver="bjc-MULTIPASS-MX880" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX880" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MX882" driver="bjc-PIXMA-MX882" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX882" /> + <printer translate="name" name="Canon PIXUS MX883" driver="bjc-PIXUS-MX883" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX883" /> + <printer translate="name" name="Canon PIXMA MX884" driver="bjc-PIXMA-MX884" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX884" /> + <printer translate="name" name="Canon PIXMA MX885" driver="bjc-PIXMA-MX885" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX885" /> + <printer translate="name" name="Canon PIXMA MX886" driver="bjc-PIXMA-MX886" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX886" /> + <printer translate="name" name="Canon PIXMA MX888" driver="bjc-PIXMA-MX888" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX888" /> + <!-- Canon MX890 family --> + <printer translate="name" name="Canon MX890 series" driver="bjc-MX890-series" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX890-series" /> + <printer translate="name" name="Canon PIXMA MX890" driver="bjc-MULTIPASS-MX890" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX890" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA MX892" driver="bjc-PIXMA-MX892" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX892" /> + <printer translate="name" name="Canon PIXUS MX893" driver="bjc-PIXUS-MX893" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX893" /> + <printer translate="name" name="Canon PIXMA MX894" driver="bjc-PIXMA-MX894" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX894" /> + <printer translate="name" name="Canon PIXMA MX895" driver="bjc-PIXMA-MX895" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX895" /> + <printer translate="name" name="Canon PIXMA MX897" driver="bjc-PIXMA-MX897" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX897" /> + <printer translate="name" name="Canon PIXMA MX898" driver="bjc-PIXMA-MX898" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX898" /> + <!-- Canon MX920 family --> + <printer translate="name" name="Canon MX920 series" driver="bjc-MX920-series" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX920-series" /> + <printer translate="name" name="Canon PIXMA MX922" driver="bjc-PIXMA-MX922" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX922" /> + <printer translate="name" name="Canon PIXUS MX923" driver="bjc-PIXUS-MX923" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX923" /> + <printer translate="name" name="Canon PIXMA MX924" driver="bjc-PIXMA-MX924" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX924" /> + <printer translate="name" name="Canon PIXMA MX925" driver="bjc-PIXMA-MX925" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX925" /> + <printer translate="name" name="Canon PIXMA MX926" driver="bjc-PIXMA-MX926" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX926" /> + <printer translate="name" name="Canon PIXMA MX927" driver="bjc-PIXMA-MX927" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX927" /> + <printer translate="name" name="Canon PIXMA MX928" driver="bjc-PIXMA-MX928" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX928" /> + <!-- Canon MX7600 family --> + <printer translate="name" name="Canon MX7600 series" driver="bjc-MX7600-series" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX7600-series" /> + <printer translate="name" name="Canon PIXMA MX7600" driver="bjc-MULTIPASS-MX7600" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX7600" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXUS MX7600" driver="bjc-PIXUS-MX7600" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX7600" /> + <!-- Canon E500 family --> + <printer translate="name" name="Canon E500 series" driver="bjc-E500-series" manufacturer="Canon" model="12000500" parameters="PIXMA_iP4000_params" foomaticid="Canon-E500-series" /> + <printer translate="name" name="Canon PIXMA E500" driver="bjc-MULTIPASS-E500" manufacturer="Canon" model="12000500" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-E500" /><!-- driver and foomaticid legacy names used --> + <!-- Canon E510 family --> + <printer translate="name" name="Canon E510 series" driver="bjc-E510-series" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-E510-series" /> + <printer translate="name" name="Canon PIXMA E510" driver="bjc-PIXMA-E510" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E510" /> + <printer translate="name" name="Canon PIXMA E518" driver="bjc-PIXMA-E518" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E518" /> + <!-- Canon E600 family --> + <printer translate="name" name="Canon E600 series" driver="bjc-E600-series" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-E600-series" /> + <printer translate="name" name="Canon PIXMA E600" driver="bjc-MULTIPASS-E600" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-E600" /><!-- driver and foomaticid legacy names used --> + <printer translate="name" name="Canon PIXMA E608" driver="bjc-PIXMA-E608" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E608" /> + <!-- Canon E610 family --> + <printer translate="name" name="Canon E610 series" driver="bjc-E610-series" manufacturer="Canon" model="12000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-E610-series" /> + <printer translate="name" name="Canon PIXMA E610" driver="bjc-PIXMA-E610" manufacturer="Canon" model="12000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E610" /> + <printer translate="name" name="Canon PIXMA E618" driver="bjc-PIXMA-E618" manufacturer="Canon" model="12000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E618" /> + <!-- --> <printer translate="name" name="Canon 50i" driver="bjc-50i" manufacturer="Canon" model="2000050" parameters="density_800_params" foomaticid="Canon-50i" /> <printer translate="name" name="Canon 80i" driver="bjc-80i" manufacturer="Canon" model="2000080" parameters="density_800_params" foomaticid="Canon-80i" /> <printer translate="name" name="Canon 450i" driver="bjc-450i" manufacturer="Canon" model="2000450" parameters="density_800_params" foomaticid="Canon-450i" /> @@ -407,6 +1084,7 @@ <printer translate="name" name="Epson Stylus C86" deviceid="MFG:EPSON;MDL:Stylus C86;DES:EPSON Stylus C86;CMD:ESCPL2,BDC,D4;" driver="escp2-c86" manufacturer="Epson" model="69" parameters="standard_params" foomaticid="Epson-Stylus_C86" /> <printer translate="name" name="Epson Stylus C87" driver="escp2-c87" manufacturer="Epson" model="69" parameters="standard_params" foomaticid="Epson-Stylus_C87" /> <printer translate="name" name="Epson Stylus C88" deviceid="MFG:EPSON;MDL:Stylus C88;DES:EPSON Stylus C88;CMD:ESCPL2,BDC,D4;" driver="escp2-c88" manufacturer="Epson" model="69" parameters="standard_params" foomaticid="Epson-Stylus_C88" /> + <printer translate="name" name="Epson Stylus C92" deviceid="MFG:EPSON;MDL:Stylus C92;DES:EPSON Stylus C92;CMD:ESCPL2,BDC,D4,D4PX;" driver="escp2-c92" manufacturer="Epson" model="66" parameters="standard_params" foomaticid="Epson-Stylus_C92" /> <printer translate="name" name="Epson Stylus C110" driver="escp2-c110" manufacturer="Epson" model="85" parameters="standard_params" foomaticid="Epson-Stylus_C110" /> <printer translate="name" name="Epson Stylus C120" driver="escp2-c120" manufacturer="Epson" model="85" parameters="standard_params" foomaticid="Epson-Stylus_C120" /> <printer translate="name" name="Epson Stylus Color" driver="escp2" manufacturer="Epson" model="0" parameters="standard_params" foomaticid="Epson-Stylus_Color" /> @@ -425,7 +1103,7 @@ <printer translate="name" name="Epson Stylus Color 640" driver="escp2-640" manufacturer="Epson" model="11" parameters="standard_params" foomaticid="Epson-Stylus_Color_640" /> <printer translate="name" name="Epson Stylus Color 660" driver="escp2-660" manufacturer="Epson" model="18" parameters="standard_params" foomaticid="Epson-Stylus_Color_660" /> <printer translate="name" name="Epson Stylus Color 670" deviceid="MFG:EPSON;MDL:Stylus COLOR 670;DES:EPSON Stylus COLOR 670;CMD:ESCPL2,BDC,D4;" driver="escp2-670" manufacturer="Epson" model="25" parameters="standard_params" foomaticid="Epson-Stylus_Color_670" /> - <printer translate="name" name="Epson Stylus Color 680" driver="escp2-680" manufacturer="Epson" model="32" parameters="standard_params" foomaticid="Epson-Stylus_Color_680" /> + <printer translate="name" name="Epson Stylus Color 680" deviceid="MFG:EPSON;MDL:Stylus COLOR 680;DES:EPSON Stylus COLOR 680;CMD:ESCPL2,BDC,D4;" driver="escp2-680" manufacturer="Epson" model="32" parameters="standard_params" foomaticid="Epson-Stylus_Color_680" /> <printer translate="name" name="Epson Stylus Color 740" deviceid="MFG:EPSON;MDL:Stylus COLOR 740;DES:EPSON Stylus COLOR 740;CMD:ESCPL2,BDC,D4;" driver="escp2-740" manufacturer="Epson" model="12" parameters="standard_params" foomaticid="Epson-Stylus_Color_740" /> <printer translate="name" name="Epson Stylus Color 760" deviceid="MFG:EPSON;MDL:Stylus COLOR 760;DES:EPSON Stylus COLOR 760;CMD:ESCPL2,BDC,D4;" driver="escp2-760" manufacturer="Epson" model="19" parameters="standard_params" foomaticid="Epson-Stylus_Color_760" /> <printer translate="name" name="Epson Stylus Color 777" deviceid="MFG:EPSON;MDL:Stylus COLOR 777;DES:EPSON Stylus COLOR 777;CMD:ESCPL2,BDC,D4;" driver="escp2-777" manufacturer="Epson" model="32" parameters="standard_params" foomaticid="Epson-Stylus_Color_777" /> @@ -487,7 +1165,7 @@ <printer translate="name" name="Epson Stylus Photo 950" driver="escp2-950" manufacturer="Epson" model="46" parameters="standard_params" foomaticid="Epson-Stylus_Photo_950" /> <printer translate="name" name="Epson Stylus Photo 960" driver="escp2-960" manufacturer="Epson" model="46" parameters="standard_params" foomaticid="Epson-Stylus_Photo_960" /> <printer translate="name" name="Epson Stylus Photo 1200" driver="escp2-1200" manufacturer="Epson" model="15" parameters="standard_params" foomaticid="Epson-Stylus_Photo_1200" /> - <printer translate="name" name="Epson Stylus Photo 1270" driver="escp2-1270" manufacturer="Epson" model="23" parameters="standard_params" foomaticid="Epson-Stylus_Photo_1270" /> + <printer translate="name" name="Epson Stylus Photo 1270" deviceid="MFG:EPSON;MDL:Stylus Photo 1270;DES:EPSON Stylus Photo 1270;CMD:ESCPL2,BDC,D4;CLS:PRINTER;" driver="escp2-1270" manufacturer="Epson" model="23" parameters="standard_params" foomaticid="Epson-Stylus_Photo_1270" /> <printer translate="name" name="Epson Stylus Photo 1280" driver="escp2-1280" manufacturer="Epson" model="37" parameters="standard_params" foomaticid="Epson-Stylus_Photo_1280" /> <printer translate="name" name="Epson Stylus Photo 1290" driver="escp2-1290" manufacturer="Epson" model="37" parameters="standard_params" foomaticid="Epson-Stylus_Photo_1290" /> <printer translate="name" name="Epson Stylus Photo 1290s" driver="escp2-1290s" manufacturer="Epson" model="37" parameters="standard_params" foomaticid="Epson-Stylus_Photo_1290s" /> @@ -521,7 +1199,7 @@ <printer translate="name" name="Epson Stylus Photo R1800" driver="escp2-r1800" manufacturer="Epson" model="67" parameters="standard_params" foomaticid="Epson-Stylus_Photo_R1800" /> <printer translate="name" name="Epson Stylus Photo R1900" driver="escp2-r1900" manufacturer="Epson" model="91" parameters="standard_params" foomaticid="Epson-Stylus_Photo_R1900" /> <printer translate="name" name="Epson Stylus Photo R2000" driver="escp2-r2000" manufacturer="Epson" model="91" parameters="standard_params" foomaticid="Epson-Stylus_Photo_R2000" /> - <printer translate="name" name="Epson Stylus Photo R2400" driver="escp2-r2400" manufacturer="Epson" model="71" parameters="standard_params" foomaticid="Epson-Stylus_Photo_R2400" /> + <printer translate="name" name="Epson Stylus Photo R2400" deviceid="MFG:EPSON;MDL:Stylus Photo R2400;DES:EPSON Stylus Photo R2400;CMD:ESCPL2,BDC,D4;" driver="escp2-r2400" manufacturer="Epson" model="71" parameters="standard_params" foomaticid="Epson-Stylus_Photo_R2400" /> <printer translate="name" name="Epson Stylus Photo R2880" driver="escp2-r2880" manufacturer="Epson" model="98" parameters="standard_params" foomaticid="Epson-Stylus_Photo_R2880" /> <printer translate="name" name="Epson Stylus Photo R3000" driver="escp2-r3000" manufacturer="Epson" model="115" parameters="standard_params" foomaticid="Epson-Stylus_Photo_R3000" /> <printer translate="name" name="Epson Stylus Photo RX400" deviceid="MFG:EPSON;MDL:Stylus Photo RX400;DES:EPSON Stylus Photo RX400;CMD:ESCPL2,BDC,D4;" driver="escp2-rx400" manufacturer="Epson" model="84" parameters="standard_params" foomaticid="Epson-Stylus_Photo_RX400" /> @@ -615,6 +1293,7 @@ <printer translate="name" name="Epson Stylus CX6500" deviceid="MFG:EPSON;MDL:Stylus CX6500;DES:EPSON Stylus CX6500;CMD:ESCPL2,BDC,D4;" driver="escp2-cx6500" manufacturer="Epson" model="80" parameters="cx3500_params" foomaticid="Epson-Stylus_CX6500" /> <printer translate="name" name="Epson Stylus CX6600" deviceid="MFG:EPSON;MDL:Stylus CX6600;DES:EPSON Stylus CX6600;CMD:ESCPL2,BDC,D4;" driver="escp2-cx6600" manufacturer="Epson" model="80" parameters="cx3500_params" foomaticid="Epson-Stylus_CX6600" /> <printer translate="name" name="Epson Stylus CX7000F" driver="escp2-cx7000f" manufacturer="Epson" model="65" parameters="cx3500_params" foomaticid="Epson-Stylus_CX7000F" /> + <printer translate="name" name="Epson Stylus CX7300" driver="escp2-cx7300" manufacturer="Epson" model="65" parameters="cx3500_params" foomaticid="Epson-Stylus_CX7300" /> <printer translate="name" name="Epson Stylus CX7400" driver="escp2-cx7400" manufacturer="Epson" model="65" parameters="cx3500_params" foomaticid="Epson-Stylus_CX7400" /> <printer translate="name" name="Epson Stylus CX7700" deviceid="MFG:EPSON;MDL:Stylus CX7700;DES:EPSON Stylus CX7700;CMD:ESCPL2,BDC,D4;" driver="escp2-cx7700" manufacturer="Epson" model="95" parameters="cx3500_params" foomaticid="Epson-Stylus_CX7700" /> <printer translate="name" name="Epson Stylus CX7800" deviceid="MFG:EPSON;MDL:Stylus CX7800;DES:EPSON Stylus CX7800;CMD:ESCPL2,BDC,D4;" driver="escp2-cx7800" manufacturer="Epson" model="95" parameters="cx3500_params" foomaticid="Epson-Stylus_CX7800" /> @@ -625,6 +1304,7 @@ <printer translate="name" name="Epson Stylus CX9400F" driver="escp2-cx9400f" manufacturer="Epson" model="65" parameters="cx3500_params" foomaticid="Epson-Stylus_CX9400F" /> <printer translate="name" name="Epson Stylus CX9475F" driver="escp2-cx9475f" manufacturer="Epson" model="65" parameters="cx3500_params" foomaticid="Epson-Stylus_CX9475F" /> <printer translate="name" name="Epson Stylus D68" deviceid="MFG:EPSON;MDL:Stylus D68;DES:EPSON Stylus D68;CMD:ESCPL2,BDC,D4;" driver="escp2-d68" manufacturer="Epson" model="66" parameters="standard_params" foomaticid="Epson-Stylus_D68" /> + <printer translate="name" name="Epson Stylus D78" deviceid="MFG:EPSON;MDL:Stylus D78;DES:EPSON Stylus D78;CMD:ESCPL2,BDC,D4,D4PX;" driver="escp2-d78" manufacturer="Epson" model="66" parameters="standard_params" foomaticid="Epson-Stylus_D78" /> <printer translate="name" name="Epson Stylus D88" deviceid="MFG:EPSON;MDL:Stylus D88;DES:EPSON Stylus D88;CMD:ESCPL2,BDC,D4;" driver="escp2-d88" manufacturer="Epson" model="69" parameters="standard_params" foomaticid="Epson-Stylus_D88" /> <printer translate="name" name="Epson Stylus D92" deviceid="MFG:EPSON;CMD:ESCPL2,BDC,D4,D4PX;MDL:Stylus D92;DES:EPSON Stylus D92;" driver="escp2-d92" manufacturer="Epson" model="66" parameters="standard_params" foomaticid="Epson-Stylus_D92" /> <printer translate="name" name="Epson Stylus D120" driver="escp2-d120" manufacturer="Epson" model="85" parameters="standard_params" foomaticid="Epson-Stylus_D120" /> @@ -677,6 +1357,7 @@ <printer translate="name" name="Epson Stylus SX410" driver="escp2-sx410" manufacturer="Epson" model="93" parameters="standard_params" foomaticid="Epson-Stylus_SX410" /> <printer translate="name" name="Epson Stylus SX415" driver="escp2-sx415" manufacturer="Epson" model="93" parameters="standard_params" foomaticid="Epson-Stylus_SX415" /> <printer translate="name" name="Epson Stylus SX420" driver="escp2-sx420" manufacturer="Epson" model="94" parameters="standard_params" foomaticid="Epson-Stylus_SX420" /> + <printer translate="name" name="Epson Stylus SX445W" driver="escp2-sx445w" manufacturer="Epson" model="121" parameters="standard_params" foomaticid="Epson-Stylus_SX445w" /> <printer translate="name" name="Epson Stylus SX510W" driver="escp2-sx510w" manufacturer="Epson" model="92" parameters="standard_params" foomaticid="Epson-Stylus_SX510W" /> <printer translate="name" name="Epson Stylus SX515" driver="escp2-sx515" manufacturer="Epson" model="92" parameters="standard_params" foomaticid="Epson-Stylus_SX515" /> <printer translate="name" name="Epson Stylus SX525" driver="escp2-sx525" manufacturer="Epson" model="92" parameters="standard_params" foomaticid="Epson-Stylus_SX525" /> @@ -705,6 +1386,7 @@ <printer translate="name" name="Epson Stylus TX106" driver="escp2-tx106" manufacturer="Epson" model="94" parameters="standard_params" foomaticid="Epson-Stylus_TX106" /> <printer translate="name" name="Epson Stylus TX109" driver="escp2-tx109" manufacturer="Epson" model="94" parameters="standard_params" foomaticid="Epson-Stylus_TX109" /> <printer translate="name" name="Epson Stylus TX110" driver="escp2-tx110" manufacturer="Epson" model="94" parameters="standard_params" foomaticid="Epson-Stylus_TX110" /> + <printer translate="name" name="Epson Stylus TX125" driver="escp2-tx125" manufacturer="Epson" model="94" parameters="standard_params" foomaticid="Epson-Stylus_TX125" /> <printer translate="name" name="Epson Stylus TX200" driver="escp2-tx200" manufacturer="Epson" model="93" parameters="standard_params" foomaticid="Epson-Stylus_TX200" /> <!-- The TX210 has the same head configuration as the TX100, not TX200 --> <printer translate="name" name="Epson Stylus TX210" driver="escp2-tx210" manufacturer="Epson" model="94" parameters="standard_params" foomaticid="Epson-Stylus_TX210" /> @@ -747,8 +1429,18 @@ <printer translate="name" name="Epson WorkForce 615" driver="escp2-wf615" manufacturer="Epson" model="92" parameters="standard_params" foomaticid="Epson-WorkForce_615" /> <printer translate="name" name="Epson WorkForce 630" driver="escp2-wf630" manufacturer="Epson" model="92" parameters="standard_params" foomaticid="Epson-WorkForce_630" /> <printer translate="name" name="Epson WorkForce 635" driver="escp2-wf636" manufacturer="Epson" model="92" parameters="standard_params" foomaticid="Epson-WorkForce_635" /> - <printer translate="name" name="Epson WorkForce 645" driver="escp2-wf645" manufacturer="Epson" model="92" parameters="standard_params" foomaticid="Epson-WorkForce_645" /> + <printer translate="name" name="Epson WorkForce 645" driver="escp2-wf645" manufacturer="Epson" model="118" parameters="standard_params" foomaticid="Epson-WorkForce_645" /> <printer translate="name" name="Epson WorkForce 1100" driver="escp2-wf1100" manufacturer="Epson" model="99" parameters="standard_params" foomaticid="Epson-WorkForce_1100" /> + <printer translate="name" name="Epson WF-7010 Series" driver="escp2-wf7010" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7010" /> + <printer translate="name" name="Epson WF-7011 Series" driver="escp2-wf7011" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7011" /> + <printer translate="name" name="Epson WF-7015 Series" driver="escp2-wf7015" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7015" /> + <printer translate="name" name="Epson WF-7018 Series" driver="escp2-wf7018" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7018" /> + <printer translate="name" name="Epson WF-7510 Series" driver="escp2-wf7510" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7510" /> + <printer translate="name" name="Epson WF-7511 Series" driver="escp2-wf7511" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7511" /> + <printer translate="name" name="Epson WF-7515 Series" driver="escp2-wf7515" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7515" /> + <printer translate="name" name="Epson WF-7520 Series" driver="escp2-wf7520" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7520" /> + <printer translate="name" name="Epson WF-7521 Series" driver="escp2-wf7521" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7521" /> + <printer translate="name" name="Epson WF-7525 Series" driver="escp2-wf7525" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7525" /> <printer translate="name" name="Epson CL 700" driver="escp2-cl700" manufacturer="Epson" model="38" parameters="480_params" foomaticid="Epson-CL_700" /> <printer translate="name" name="Epson CL 750" driver="escp2-cl750" manufacturer="Epson" model="43" parameters="480_params" foomaticid="Epson-CL_750" /> <printer translate="name" name="Epson CL 760" driver="escp2-cl760" manufacturer="Epson" model="56" parameters="480_params" foomaticid="Epson-CL_760" /> @@ -847,6 +1539,9 @@ <printer translate="name" name="Epson PX 504A" driver="escp2-px504a" manufacturer="Epson" model="92" parameters="standard_params" foomaticid="Epson-PX_504A" /> <printer translate="name" name="Epson PX 601F" driver="escp2-px601f" manufacturer="Epson" model="92" parameters="standard_params" foomaticid="Epson-PX_601F" /> <printer translate="name" name="Epson PX 1001" driver="escp2-px1001" manufacturer="Epson" model="100" parameters="standard_params" foomaticid="Epson-PX_1001" /> + <printer translate="name" name="Epson PX 1200" driver="escp2-px1200" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-PX_1200" /> + <printer translate="name" name="Epson PX 1600F" driver="escp2-px1600f" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-PX_1600F" /> + <printer translate="name" name="Epson PX 1700F" driver="escp2-px1700f" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-PX_1700F" /> <printer translate="name" name="Epson PX G900" driver="escp2-pxg900" manufacturer="Epson" model="64" parameters="standard_params" foomaticid="Epson-PX_G900" /> <printer translate="name" name="Epson PX G920" driver="escp2-pxg920" manufacturer="Epson" model="64" parameters="standard_params" foomaticid="Epson-PX_G920" /> <printer translate="name" name="Epson PX G5000" driver="escp2-pxg5000" manufacturer="Epson" model="67" parameters="standard_params" foomaticid="Epson-PX_G5000" /> @@ -902,8 +1597,10 @@ <printer translate="name" name="Brother HL-1670N" driver="brother-hl-1670n" manufacturer="Brother" model="6" parameters="pcl_laser_params" foomaticid="Brother-HL-1670N" /> <printer translate="name" name="Brother HL-1850" driver="brother-hl-1850" manufacturer="Brother" model="6" parameters="pcl_laser_params" foomaticid="Brother-HL-1850" /> <printer translate="name" name="Brother HL-1870N" driver="brother-hl-1870n" manufacturer="Brother" model="6" parameters="pcl_laser_params" foomaticid="Brother-HL-1870N" /> - <printer translate="name" name="Brother HL-2030" driver="brother-hl-2030" manufacturer="Brother" model="6" parameters="pcl_laser_params" foomaticid="Brother-HL-2030" /> + <!-- Brother HL-2030 series --> + <printer translate="name" name="Brother HL-2030" deviceid="MFG:Brother;MDL:HL-2030 series;CMD:PJL,HBP;" driver="brother-hl-2030" manufacturer="Brother" model="6" parameters="pcl_laser_params" foomaticid="Brother-HL-2030" /> <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-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" /> @@ -1036,9 +1733,9 @@ <printer translate="name" name="HP Business Inkjet 2280" deviceid="MFG:HEWLETT-PACKARD;MDL:HP BUSINESS INKJET 2280;DES:Hewlett-Packard Business Inkjet 2280;CMD:MLC,PML,PJL,PCL5,POSTSCRIPT;" driver="hp-bij_2280" manufacturer="HP" model="900" parameters="pcl_inkjet_params" foomaticid="HP-Business_Inkjet_2280" /> <printer translate="name" name="HP Color Inkjet Printer CP1160" driver="hp-cij_cp1160" manufacturer="HP" model="900" parameters="pcl_inkjet_params" foomaticid="HP-Color_Inkjet_Printer_CP1160" /> <printer translate="name" name="HP Color Inkjet Printer CP1700" deviceid="MFG:HEWLETT-PACKARD;MDL:HP Color Inkjet CP1700;DES:HP Color Inkjet CP1700;" driver="hp-cij_cp1700" manufacturer="HP" model="901" parameters="pcl_inkjet_params" foomaticid="HP-Color_Inkjet_Printer_CP1700" /> - <printer translate="name" name="HP Color LaserJet 2500" driver="hp-clj_2500" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-Color_LaserJet_2500" /> + <printer translate="name" name="HP Color LaserJet 2500" deviceid="MFG:Hewlett-Packard;MDL:hp color LaserJet 2500;CMD:PJL,MLC,BIDI-ECP,POSTSCRIPT,PJL,PCLXL,PCL;" driver="hp-clj_2500" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-Color_LaserJet_2500" /> <printer translate="name" name="HP Color LaserJet 4500" deviceid="MFG:Hewlett-Packard;MDL:LaserJet Color 4500;" driver="hp-clj_4500" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-Color_LaserJet_4500" /> - <printer translate="name" name="HP Color LaserJet 4550" deviceid="MFG:Hewlett-Packard;MDL:HP Color LaserJet 4550;DES:Hewlett-Packard Color LaserJet 4550;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL,PJL;" driver="hp-clj_4550" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-Color_LaserJet_4550" /> + <printer translate="name" name="HP Color LaserJet 4550" deviceid="MFG:Hewlett-Packard;MDL:HP Color LaserJet 4550 ;DES:Hewlett-Packard Color LaserJet 4550;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL,PJL;" driver="hp-clj_4550" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-Color_LaserJet_4550" /> <printer translate="name" name="HP Color LaserJet 4600" deviceid="MFG:Hewlett-Packard;MDL:hp color LaserJet 4600;DES:Hewlett-Packard color LaserJet 4600;" driver="hp-clj_4600" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-Color_LaserJet_4600" /> <printer translate="name" name="HP Color LaserJet 5" driver="hp-clj_5" manufacturer="HP" model="3" parameters="pcl_laser_params" foomaticid="HP-Color_LaserJet_5" /> <printer translate="name" name="HP Color LaserJet 5000" driver="hp-clj_5000" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-Color_LaserJet_5000" /> @@ -1208,19 +1905,19 @@ <printer translate="name" name="HP LaserJet 3390" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3390;DES:Hewlett-Packard LaserJet 3390;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3390" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_3390" /> <printer translate="name" name="HP LaserJet 3392" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3390;DES:Hewlett-Packard LaserJet 3390;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3392" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_3392" /> <printer translate="name" name="HP LaserJet 4000" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 4000 Series;DES:Hewlett-Packard LaserJet 4000 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_4000" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_4000" /> - <printer translate="name" name="HP LaserJet 4050" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 4050 Series;DES:Hewlett-Packard LaserJet 4050 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_4050" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_4050" /> - <printer translate="name" name="HP LaserJet 4100" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 4100 Series;DES:Hewlett-Packard LaserJet 4100 Series;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL,PJL;" driver="hp-lj_4100" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_4100" /> + <printer translate="name" name="HP LaserJet 4050" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 4050 Series ;DES:Hewlett-Packard LaserJet 4050 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_4050" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_4050" /> + <printer translate="name" name="HP LaserJet 4100" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 4100 Series ;DES:Hewlett-Packard LaserJet 4100 Series;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL,PJL;" driver="hp-lj_4100" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_4100" /> <printer translate="name" name="HP LaserJet 4200" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 4200;DES:Hewlett-Packard LaserJet 4200;CMD:PJL,MLC,POSTSCRIPT,PJL,PCLXL,PCL;" driver="hp-lj_4200" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_4200" /> <printer translate="name" name="HP LaserJet 4240" driver="hp-lj_4240" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_4240" /> <printer translate="name" name="HP LaserJet 4250" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 4250;DES:Hewlett-Packard LaserJet 4250;CMD:PJL,MLC,PCLXL,PCL,PJL,POSTSCRIPT;" driver="hp-lj_4250" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_4250" /> <printer translate="name" name="HP LaserJet 4300" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 4300;CMD:PJL,MLC,POSTSCRIPT,PJL,PCLXL,PCL;" driver="hp-lj_4300" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_4300" /> <printer translate="name" name="HP LaserJet 4345 mfp" driver="hp-lj_4345_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_4345_mfp" /> - <printer translate="name" name="HP LaserJet 4350" deviceid="MFG:HP;MDL:hp LaserJet 4350L;" driver="hp-lj_4350" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_4350" /> + <printer translate="name" name="HP LaserJet 4350" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 4350;CMD:PJL,MLC,PCLXL,PCL,PJL,POSTSCRIPT,PDF;" driver="hp-lj_4350" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_4350" /> <printer translate="name" name="HP LaserJet 5000" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 5000 Series;DES:Hewlett-Packard LaserJet 5000 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_5000" manufacturer="HP" model="63" parameters="pcl_laser_params" foomaticid="HP-LaserJet_5000" /> - <printer translate="name" name="HP LaserJet 5100" driver="hp-lj_5100" manufacturer="HP" model="63" parameters="pcl_laser_params" foomaticid="HP-LaserJet_5100" /> + <printer translate="name" name="HP LaserJet 5100" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 5100 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_5100" manufacturer="HP" model="63" parameters="pcl_laser_params" foomaticid="HP-LaserJet_5100" /> <printer translate="name" name="HP LaserJet 5200" driver="hp-lj_5200" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_5200" /> <printer translate="name" name="HP LaserJet 5200L" driver="hp-lj_5200l" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_5200L" /> - <printer translate="name" name="HP LaserJet 8000" driver="hp-lj_8000" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_8000" /> + <printer translate="name" name="HP LaserJet 8000" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 8000 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_8000" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_8000" /> <printer translate="name" name="HP LaserJet 8100" driver="hp-lj_8100" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_8100" /> <printer translate="name" name="HP LaserJet 8150" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 8150 Series;DES:Hewlett-Packard LaserJet 8150 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_8150" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_8150" /> <printer translate="name" name="HP LaserJet 9000" driver="hp-lj_9000" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_9000" /> @@ -1228,15 +1925,15 @@ <printer translate="name" name="HP LaserJet 9040 MFP" driver="hp-lj_9040_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_9040_MFP" /> <printer translate="name" name="HP LaserJet 9050" driver="hp-lj_9050" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_9050" /> <printer translate="name" name="HP LaserJet 9050 MFP" driver="hp-lj_9050_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_9050_MFP" /> - <printer translate="name" name="HP LaserJet M3027 MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 8150 Series;DES:Hewlett-Packard LaserJet 8150 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_m3027_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_M3027_MFP" /> - <printer translate="name" name="HP LaserJet M3035 MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 8150 Series;DES:Hewlett-Packard LaserJet 8150 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_m3035_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_M3035_MFP" /> + <printer translate="name" name="HP LaserJet M3027 MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet M3027 MFP;DES:Hewlett-Packard LaserJet 8150 Series;CMD:PJL,MLC,BIDI-ECP,PCLXL,PCL,PDF,PJL,POSTSCRIPT;" driver="hp-lj_m3027_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_M3027_MFP" /> + <printer translate="name" name="HP LaserJet M3035 MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet M3035 MFP;DES:Hewlett-Packard LaserJet 8150 Series;CMD:PJL,MLC,BIDI-ECP,PJL,PCLXL,PCL,PDF,POSTSCRIPT;" driver="hp-lj_m3035_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_M3035_MFP" /> <printer translate="name" name="HP LaserJet M4345 MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 8150 Series;DES:Hewlett-Packard LaserJet 8150 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_m4345_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_M4345_MFP" /> <printer translate="name" name="HP LaserJet M5025 MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 8150 Series;DES:Hewlett-Packard LaserJet 8150 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_m5025_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_M5025_MFP" /> <printer translate="name" name="HP LaserJet M5035 MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 8150 Series;DES:Hewlett-Packard LaserJet 8150 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_m5035_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_M5035_MFP" /> <printer translate="name" name="HP LaserJet P2010" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet P2010 series;DES:Hewlett-Packard LaserJet P2010 series;CMD:PJL,MLC,BIDI-ECP,PCL,DW-PCL;" driver="hp-lj_p2010" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_P2010" /> <printer translate="name" name="HP LaserJet P2015" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet P2015 Series;DES:Hewlett-Packard LaserJet P2015 series;CMD:PJL,MLC,BIDI-ECP,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_p2015" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_P2015" /> <printer translate="name" name="HP LaserJet P3004" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet P3004 Series;DES:Hewlett-Packard LaserJet P3004 Series;CMD:PJL,MLC,BIDI-ECP,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_p3004" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_P3004" /> - <printer translate="name" name="HP LaserJet P3005" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet P3005 Series;DES:Hewlett-Packard LaserJet P3005 Series;CMD:PJL,MLC,BIDI-ECP,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_p3005" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_P3005" /> + <printer translate="name" name="HP LaserJet P3005" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet P3005;DES:Hewlett-Packard LaserJet P3005 Series;CMD:PJL,MLC,BIDI-ECP,POSTSCRIPT,PJL,PCLXL,PCL;" driver="hp-lj_p3005" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-LaserJet_P3005" /> <printer translate="name" name="HP Mopier 240" driver="hp-mopier_240" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-Mopier_240" /> <printer translate="name" name="HP Mopier 320" driver="hp-mopier_320" manufacturer="HP" model="6" parameters="pcl_laser_params" foomaticid="HP-Mopier_320" /> <printer translate="name" name="HP OfficeJet 300" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 300;DES:Hewlett-Packard OfficeJet Series 300;CMD:MLC,PCL,PML;" driver="hp-oj_300" manufacturer="HP" model="500" parameters="pcl_inkjet_params" foomaticid="HP-OfficeJet_300" /> @@ -1384,7 +2081,7 @@ <printer translate="name" name="Kyocera FS-1020D" driver="kyocera-fs-1020d" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" foomaticid="Kyocera-FS-1020D" /> <printer translate="name" name="Kyocera FS-1030D" driver="kyocera-fs-1030d" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" foomaticid="Kyocera-FS-1030D" /> <printer translate="name" name="Kyocera FS-1050" deviceid="MFG:Kyocera Mita;MDL:Kyocera Mita FS-1050;DES:Kyocera FS-1050;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-1050" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" foomaticid="Kyocera-FS-1050" /> - <printer translate="name" name="Kyocera FS-1118MFP" driver="kyocera-fs-1118mfp" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" foomaticid="Kyocera-FS-1118MFP" /> + <printer translate="name" name="Kyocera FS-1118MFP" deviceid="MFG:Kyocera;MDL:FS-1118MFP;CMD:PCLXL,PostScript Emulation,PCL5E,PJL;" driver="kyocera-fs-1118mfp" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" foomaticid="Kyocera-FS-1118MFP" /> <printer translate="name" name="Kyocera FS-1200" deviceid="MFG:Kyocera;MDL:Kyocera FS-1200;DES:Kyocera FS-1200;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-1200" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" foomaticid="Kyocera-FS-1200" /> <printer translate="name" name="Kyocera FS-1600" deviceid="MFG:Kyocera;MDL:FS-1600;DES:Kyocera FS-1600;" driver="kyocera-fs-1600" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" foomaticid="Kyocera-FS-1600" /> <printer translate="name" name="Kyocera FS-1600+" driver="kyocera-fs-1600plus" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" foomaticid="Kyocera-FS-1600plus" /> @@ -1571,6 +2268,7 @@ <printer translate="name" name="NRG MP 6500" driver="nrg-mp_6500" manufacturer="NRG" model="61" parameters="pcl_laser_params" foomaticid="NRG-MP_6500" /> <printer translate="name" name="NRG MP 7500" driver="nrg-mp_7500" manufacturer="NRG" model="61" parameters="pcl_laser_params" foomaticid="NRG-MP_7500" /> <printer translate="name" name="NRG MP 9000" driver="nrg-mp_9000" manufacturer="NRG" model="61" parameters="pcl_laser_params" foomaticid="NRG-MP_9000" /> + <printer translate="name" name="Oki B401d" driver="oki-b401d" manufacturer="Oki" model="6" parameters="pcl_laser_params" foomaticid="Oki-B4401d" /> <printer translate="name" name="Oki B4350" driver="oki-b4350" manufacturer="Oki" model="6" parameters="pcl_laser_params" foomaticid="Oki-B4350" /> <printer translate="name" name="Oki OL400" driver="okidata-ol400" manufacturer="Oki" model="2" parameters="pcl_laser_params" foomaticid="Oki-OL400" /> <printer translate="name" name="Oki OL400e" driver="okidata-ol400e" manufacturer="Oki" model="2" parameters="pcl_laser_params" foomaticid="Oki-OL400e" /> @@ -1652,7 +2350,7 @@ <printer translate="name" name="Ricoh Aficio MP 9000" driver="ricoh-afc_mp_9000" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" foomaticid="Ricoh-Aficio_MP_9000" /> <printer translate="name" name="Samsung ML-85" driver="samsung-ml-85" manufacturer="Samsung" model="6" parameters="pcl_laser_params" foomaticid="Samsung-ML-85" /> <printer translate="name" name="Samsung ML-1250" driver="samsung-ml-1250" manufacturer="Samsung" model="6" parameters="pcl_laser_params" foomaticid="Samsung-ML-1250" /> - <printer translate="name" name="Samsung ML-1450" driver="samsung-ml-1450" manufacturer="Samsung" model="6" parameters="pcl_laser_params" foomaticid="Samsung-ML-1450" /> + <printer translate="name" name="Samsung ML-1450" deviceid="MFG:Samsung;MDL:ML-1450;" driver="samsung-ml-1450" manufacturer="Samsung" model="6" parameters="pcl_laser_params" foomaticid="Samsung-ML-1450" /> <printer translate="name" name="Samsung ML-1450PS" driver="samsung-ml-1450ps" manufacturer="Samsung" model="6" parameters="pcl_laser_params" foomaticid="Samsung-ML-1450PS" /> <printer translate="name" name="Samsung ML-1650" deviceid="MFG:Samsung;MDL:ML-1650;CMD:PCL5E,PCL6;" driver="samsung-ml-1650" manufacturer="Samsung" model="6" parameters="pcl_laser_params" foomaticid="Samsung-ML-1650" /> <printer translate="name" name="Samsung ML-1651N" driver="samsung-ml-1651n" manufacturer="Samsung" model="6" parameters="pcl_laser_params" foomaticid="Samsung-ML-1651N" /> @@ -1846,47 +2544,42 @@ <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" driver="canon-cp10" manufacturer="Canon" model="1002" foomaticid="Canon-CP-10" /> - <printer translate="name" name="Canon CP-100" driver="canon-cp100" manufacturer="Canon" model="1000" foomaticid="Canon-CP-100" /> - <printer translate="name" name="Canon CP-200" driver="canon-cp200" manufacturer="Canon" model="1000" foomaticid="Canon-CP-200" /> - <printer translate="name" name="Canon CP-220" driver="canon-cp220" manufacturer="Canon" model="1001" foomaticid="Canon-CP-220" /> - <printer translate="name" name="Canon CP-300" driver="canon-cp300" manufacturer="Canon" model="1000" foomaticid="Canon-CP-300" /> - <printer translate="name" name="Canon CP-330" driver="canon-cp330" manufacturer="Canon" model="1001" foomaticid="Canon-CP-330" /> - <printer translate="name" name="Canon SELPHY-CP400" driver="canon-cp400" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP-400" /> - <printer translate="name" name="Canon SELPHY-CP500" driver="canon-cp500" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP-500" /> - <printer translate="name" name="Canon SELPHY-CP510" driver="canon-cp510" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP-510" /> - <printer translate="name" name="Canon SELPHY-CP520" driver="canon-cp520" manufacturer="Canon" model="1004" foomaticid="Canon-SELPHY-CP-520" /> - <printer translate="name" name="Canon SELPHY-CP530" driver="canon-cp530" manufacturer="Canon" model="1004" foomaticid="Canon-SELPHY-CP-530" /> -<!-- - <printer translate="name" name="Canon SELPHY-CP600" driver="canon-cp600" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP-600" /> ---> - <printer translate="name" name="Canon SELPHY-CP710" driver="canon-cp710" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP-710" /> -<!-- - <printer translate="name" name="Canon SELPHY-CP720" driver="canon-cp720" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP-720" /> ---> - <printer translate="name" name="Canon SELPHY-CP730" driver="canon-cp730" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP-730" /> - <printer translate="name" name="Canon SELPHY-CP740" driver="canon-cp740" manufacturer="Canon" model="1004" foomaticid="Canon-SELPHY-CP-740" /> - <printer translate="name" name="Canon SELPHY-CP750" driver="canon-cp750" manufacturer="Canon" model="1004" foomaticid="Canon-SELPHY-CP-750" /> - <printer translate="name" name="Canon SELPHY-CP760" driver="canon-cp760" manufacturer="Canon" model="1004" foomaticid="Canon-SELPHY-CP-760" /> - <printer translate="name" name="Canon SELPHY-CP770" driver="canon-cp770" manufacturer="Canon" model="1004" foomaticid="Canon-SELPHY-CP-770" /> -<!-- - <printer translate="name" name="Canon SELPHY-CP780" driver="canon-cp780" manufacturer="Canon" model="1004" foomaticid="Canon-SELPHY-CP-780" /> ---> - <printer translate="name" name="Canon SELPHY-CP790" driver="canon-cp790" manufacturer="Canon" model="1008" foomaticid="Canon-SELPHY-CP-790" /> -<!-- - <printer translate="name" name="Canon SELPHY-CP800" driver="canon-cp800" manufacturer="Canon" model="1009" foomaticid="Canon-SELPHY-CP-800" /> - <printer translate="name" name="Canon SELPHY ES1" driver="canon-es1" manufacturer="Canon" model="1003" foomaticid="Canon-SELPHY-ES1" /> - <printer translate="name" name="Canon SELPHY ES2" driver="canon-es2" manufacturer="Canon" model="1005" foomaticid="Canon-SELPHY-ES2" /> - <printer translate="name" name="Canon SELPHY ES3" driver="canon-es3" manufacturer="Canon" model="1006" foomaticid="Canon-SELPHY-ES3" /> + <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 SELPHY CP900" driver="canon-cp900" manufacturer="Canon" model="1010" foomaticid="Canon-SELPHY-CP900" /> + <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" driver="canon-es30" manufacturer="Canon" model="1006" foomaticid="Canon-SELPHY-ES30" /> - <printer translate="name" name="Canon SELPHY ES40" driver="canon-es40" manufacturer="Canon" model="1007" foomaticid="Canon-SELPHY-ES40" /> ---> + <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="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 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-DP10" driver="sony-updp10" manufacturer="Sony" model="2000" foomaticid="Sony-UP-DP10" /> <printer translate="name" name="Sony UP-DR100" driver="sony-updr100" manufacturer="Sony" model="2003" foomaticid="Sony-UP-DR100" /> - <printer translate="name" name="Sony UP-DR150" driver="sony-updr150" manufacturer="Sony" model="2001" foomaticid="Sony-UP-DR150" /> + <printer translate="name" name="Sony UP-DR200" driver="sony-updr200" manufacturer="Sony" model="2004" foomaticid="Sony-UP-DR200" /> <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" /> @@ -1898,9 +2591,39 @@ <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 9810" driver="kodak-9810" manufacturer="Kodak" model="4006" foomaticid="Kodak-9810" /> + <printer translate="name" name="Kodak 8500" driver="kodak-8500" manufacturer="Kodak" model="4100" foomaticid="Kodak-8500" /> + <printer translate="name" name="Mitsubishi CP-3020D" driver="mitsubishi-3020d" manufacturer="Mitsubishi" model="4101" foomaticid="Mitsubishi-3020D" /> + <printer translate="name" name="Mitsubishi CP-3020DU" driver="mitsubishi-3020du" manufacturer="Mitsubishi" model="4101" foomaticid="Mitsubishi-3020DU" /> + <printer translate="name" name="Mitsubishi CP-3020DE" driver="mitsubishi-3020de" manufacturer="Mitsubishi" model="4101" foomaticid="Mitsubishi-3020DE" /> + <printer translate="name" name="Mitsubishi CP-3020DA" driver="mitsubishi-3020da" manufacturer="Mitsubishi" model="4102" foomaticid="Mitsubishi-3020DA" /> + <printer translate="name" name="Mitsubishi CP-3020DAE" driver="mitsubishi-3020dae" manufacturer="Mitsubishi" model="4102" foomaticid="Mitsubishi-3020DAE" /> + <printer translate="name" name="Mitsubishi CP-9550D" driver="mitsubishi-9550d" manufacturer="Mitsubishi" model="4103" foomaticid="Mitsubishi-9550D" /> + <printer translate="name" name="Mitsubishi CP-9550DW" driver="mitsubishi-9550dw" manufacturer="Mitsubishi" model="4103" foomaticid="Mitsubishi-9550DW" /> + <printer translate="name" name="Mitsubishi CP-9810D" driver="mitsubishi-9810d" manufacturer="Mitsubishi" model="4104" foomaticid="Mitsubishi-9810D" /> + <printer translate="name" name="Mitsubishi CP-9810DW" driver="mitsubishi-9810dw" manufacturer="Mitsubishi" model="4104" foomaticid="Mitsubishi-9810DW" /> + <printer translate="name" name="Mitsubishi CP-D70DW" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP60D70D707D;CLS:PRINTER;DES:MITSUBISHI CP60D70D707D" driver="mitsubishi-d70dw" manufacturer="Mitsubishi" model="4105" foomaticid="Mitsubishi-D70DW" /> + <printer translate="name" name="Mitsubishi CP-D707DW" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP60D70D707D;CLS:PRINTER;DES:MITSUBISHI CP60D70D707D" driver="mitsubishi-d707dw" manufacturer="Mitsubishi" model="4105" foomaticid="Mitsubishi-D707DW" /> + <printer translate="name" name="Mitsubishi CP-K60DW" driver="mitsubishi-k60dw" manufacturer="Mitsubishi" model="4106" foomaticid="Mitsubishi-K60DW" /> <printer translate="name" name="Shinko CHC-S9045" driver="shinko-chcs9045" manufacturer="Shinko" model="5000" foomaticid="Shinko-CHC-S9045" /> - <printer translate="name" name="Dai Nippon Printing DS40" driver="dnp-ds40" manufacturer="DNP" model="6000" foomaticid="DNP-DS40" /> - <printer translate="name" name="Dai Nippon Printing DS80" driver="dnp-ds80" manufacturer="DNP" model="6001" foomaticid="DNP-DS80" /> + <printer translate="name" name="Shinko CHC-S2145" deviceid="MFG:SHINKO;CMD:SUPCC;MDL:CHC-S2145;CLS:PRINTER;DES:SHINKO CHC-S2145;" driver="shinko-chcs2145" manufacturer="Shinko" model="5001" foomaticid="Shinko-CHC-S2145" /> + <printer translate="name" name="Sinfonia CHC-S2145" driver="sinfonia-chcs2145" manufacturer="Sinfonia" model="5001" foomaticid="Sinfonia-CHC-S2145" /> + <printer translate="name" name="Dai Nippon Printing DS40" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DS40;" driver="dnp-ds40" manufacturer="DNP" model="6000" foomaticid="DNP-DS40" /> + <printer translate="name" name="Dai Nippon Printing DS80" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DS80;" driver="dnp-ds80" manufacturer="DNP" model="6001" foomaticid="DNP-DS80" /> + <printer translate="name" name="Dai Nippon Printing DSRX1" driver="dnp-dsrx1" manufacturer="DNP" model="6002" foomaticid="DNP-DSRX1" /> + <printer translate="name" name="Citizen CX" driver="citizen-cx" deviceid="MANUFACTURER:CITIZEN SYSTEMS ;MODEL:CX;" manufacturer="Citizen" model="6000" foomaticid="Citizen-CX" /> + <printer translate="name" name="Citizen CX-W" driver="citizen-cx-w" manufacturer="Citizen" model="6001" foomaticid="Citizen-CX-W" /> + <printer translate="name" name="Citizen CY" driver="citizen-cy" manufacturer="Citizen" model="6002" foomaticid="Citizen-CY" /> + <printer translate="name" name="Citizen CW-01" driver="citizen-cw-01" manufacturer="Citizen" model="6000" foomaticid="Citizen-CW-01" /> + <printer translate="name" name="Citizen OP900" driver="citizen-op900" manufacturer="Citizen" model="6000" foomaticid="Citizen-OP900" /> + <printer translate="name" name="Citizen CW-02" driver="citizen-cw-02" manufacturer="Citizen" model="6000" foomaticid="Citizen-CW-02" /> + <printer translate="name" name="Citizen OP900II" driver="citizen-op900ii" manufacturer="Citizen" model="6000" foomaticid="Citizen-OP900II" /> + <printer translate="name" name="Mitsubishi CP-3800DW" driver="mitsubishi-cp-3800dw" manufacturer="Mitsubishi" model="6001" foomaticid="Mitsubishi-CP-3800DW" /> </family> <family name="raw"> <printer translate="name" name="RAW DATA 16 bit" driver="raw-data-16" manufacturer="" model="0" /> |