diff options
author | Didier Raboud <odyx@debian.org> | 2018-09-25 08:33:05 +0200 |
---|---|---|
committer | Didier Raboud <odyx@debian.org> | 2018-09-25 08:33:05 +0200 |
commit | e50542121e724e851fc5d6c68bb773f80c0bc12c (patch) | |
tree | 655c3f6331a6e8fd8b09ceb4da8f5896484ae16a /src | |
parent | 9dd97a029bf391c42b1dc76f2f7c5e386bb8f466 (diff) |
New upstream version 5.3.1
Diffstat (limited to 'src')
493 files changed, 43262 insertions, 25816 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index a9425ff..7b13edd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. diff --git a/src/Makefile.in b/src/Makefile.in index e89a66d..3bbeb10 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -19,7 +19,17 @@ #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__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -82,22 +92,21 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -136,7 +145,7 @@ am__recursive_targets = \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - distdir + distdir distdir-am 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 @@ -157,6 +166,8 @@ am__define_uniq_tagged_files = \ ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/scripts/global.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -192,6 +203,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -212,7 +225,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -229,6 +241,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -291,10 +304,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -318,7 +333,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -336,9 +350,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -406,7 +422,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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 SUBDIRS = \ main \ xml \ @@ -432,16 +447,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -557,7 +571,10 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -729,6 +746,8 @@ uninstall-am: mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am +.PRECIOUS: Makefile + @SET_MAKE@ @@ -738,10 +757,6 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) diff --git a/src/cups/COPYING b/src/cups/COPYING index 960fe74..b2579a3 100644 --- a/src/cups/COPYING +++ b/src/cups/COPYING @@ -1,8 +1,7 @@ GNU GENERAL PUBLIC LICENSE Version 2, June 1991 - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Copyright (C) 1989, 1991 Free Software Foundation, Inc. <https://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. diff --git a/src/cups/Makefile.am b/src/cups/Makefile.am index 4ef097d..2f70701 100644 --- a/src/cups/Makefile.am +++ b/src/cups/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. @@ -52,9 +51,11 @@ endif LOCAL_CPPFLAGS = $(GUTENPRINT_CFLAGS) $(CUPS_CFLAGS) -DBASE_VERSION=$(BASE_VERSION) -DSBINDIR=\"$(sbindir)/\" -STP_NONLS_ENV= STP_MODULE_PATH=$(top_builddir)/src/main/.libs:$(top_builddir)/src/main STP_DATA_PATH=$(top_srcdir)/src/xml +PPD_DIR=ppd -STP_ENV= $(STP_NONLS_ENV) STP_LOCALEDIR=$(top_srcdir)/src/cups/catalog +STP_NONLS_ENV= STP_MODULE_PATH=$(top_builddir)/src/main/.libs:$(top_builddir)/src/main STP_DATA_PATH=$(top_srcdir)/src/xml STP_LOCALEDIR= + +STP_ENV= $(STP_NONLS_ENV) STP_LOCALEDIR=$(top_builddir)/src/cups/$(PPD_DIR)catalog ## Programs if BUILD_TRANSLATED_CUPS_PPDS @@ -96,8 +97,14 @@ install-exec-hook: mv $(DESTDIR)$(pkglibdir)/backend/backend_gutenprint "$(DESTDIR)$(pkglibdir)/backend/gutenprint$(GUTENPRINT_MAJOR_VERSION)$(GUTENPRINT_MINOR_VERSION)+usb" endif -TESTS= test-ppds test-rastertogutenprint -noinst_SCRIPTS=test-rastertogutenprint +AM_TESTS_ENVIRONMENT=$(STP_ENV) +test-rastertogutenprint: min-pagesize +test-rastertogutenprint.check: test-rastertogutenprint +TESTS= test-ppds test-rastertogutenprint.check +noinst_SCRIPTS=test-ppds \ + test-rastertogutenprint \ + test-rastertogutenprint.check \ + min-pagesize endif if BUILD_GENPPD_STATIC @@ -114,23 +121,23 @@ commandtoepson_SOURCES = commandtoepson.c commandtoepson_LDADD = $(CUPS_LIBS) if BUILD_LIBUSB_BACKENDS -backend_gutenprint_SOURCES = backend_canonselphy.c backend_canonselphyneo.c backend_kodak1400.c backend_kodak6800.c backend_kodak605.c backend_shinkos2145.c backend_sonyupdr150.c backend_dnpds40.c backend_mitsu70x.c backend_citizencw01.c backend_mitsu9550.c backend_common.c backend_common.h backend_shinkos1245.c backend_shinkos6145.c backend_shinkos6245.c backend_mitsup95d.c +backend_gutenprint_SOURCES = backend_canonselphy.c backend_canonselphyneo.c backend_kodak1400.c backend_kodak6800.c backend_kodak605.c backend_shinkos2145.c backend_sonyupdr150.c backend_dnpds40.c backend_mitsu70x.c backend_mitsu9550.c backend_common.c backend_common.h backend_shinkos1245.c backend_shinkos6145.c backend_shinkos6245.c backend_mitsup95d.c backend_magicard.c backend_mitsud90.c backend_gutenprint_LDADD = $(LIBUSB_LIBS) $(LIBUSB_BACKEND_LIBDEPS) backend_gutenprint_CPPFLAGS = $(LIBUSB_CFLAGS) -DURI_PREFIX=\"gutenprint$(GUTENPRINT_MAJOR_VERSION)$(GUTENPRINT_MINOR_VERSION)+usb\" -DLIBUSB_PRE_1_0_10 endif -cups_genppd_@GUTENPRINT_RELEASE_VERSION@_SOURCES = genppd.c i18n.c i18n.h +cups_genppd_@GUTENPRINT_RELEASE_VERSION@_SOURCES = cups-genppd.c genppd.c genppd.h 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@_SOURCES = gutenprint.c genppd.c genppd.h i18n.c i18n.h +gutenprint_@GUTENPRINT_RELEASE_VERSION@_CFLAGS = -DALL_LINGUAS='"$(ALL_LINGUAS)"' $(BUILD_SIMPLE_PPDS) $(TRANSLATE_PPDS) +gutenprint_@GUTENPRINT_RELEASE_VERSION@_LDADD = $(CUPS_LIBS) $(GENPPD_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@_SOURCES = rastertogutenprint.c i18n.c i18n.h rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_LDADD = $(CUPS_LIBS) $(GUTENPRINT_LIBS) @LIBICONV@ rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_LDFLAGS = $(STATIC_LDOPTS) @@ -158,17 +165,17 @@ endif if BUILD_LIBUSB_BACKENDS INSTALL_BLACKLIST=install-blacklist install-blacklist: - $(mkdir_p) $(DESTDIR)$(cupsdata_blacklistdir) + $(MKDIR_P) $(DESTDIR)$(cupsdata_blacklistdir) $(INSTALL_DATA) $(srcdir)/blacklist $(DESTDIR)$(cupsdata_blacklistdir)/net.sf.gimp-print.usb-quirks endif 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); \ + $(MKDIR_P) $(DESTDIR)$(cups_modeldir); \ cd ppd ; \ for language in * ; do \ cd ..; \ - $(mkdir_p) $(DESTDIR)$(cups_modeldir)/$$language; \ + $(MKDIR_P) $(DESTDIR)$(cups_modeldir)/$$language; \ cd ppd/$$language; \ for ppdfile in * ; do \ (cd ../..; $(INSTALL_DATA) ppd/$$language/$$ppdfile $(DESTDIR)$(cups_modeldir)/$$language) ; \ @@ -176,10 +183,10 @@ install-data-local: $(INSTALL_DATA_LOCAL_DEPS) $(INSTALL_BLACKLIST) cd ..; \ done \ fi - $(mkdir_p) "$(DESTDIR)$(localedir)" + $(MKDIR_P) "$(DESTDIR)$(localedir)" for file in $(srcdir)/../../po/*.po; do \ lang=`basename $$file .po`; \ - $(mkdir_p) "$(DESTDIR)$(localedir)/$$lang"; \ + $(MKDIR_P) "$(DESTDIR)$(localedir)/$$lang"; \ $(INSTALL_DATA) $$file "$(DESTDIR)$(localedir)/$$lang/gutenprint_$$lang.po"; \ done @@ -208,13 +215,15 @@ install-data-hook: -rmdir $(DESTDIR)$(cupsexec_backenddir) -rmdir $(DESTDIR)$(cupsdata_blacklistdir) -rmdir $(DESTDIR)$(bindir) + -rmdir $(DESTDIR)$(sbindir) -rmdir $(DESTDIR)$(pkglibdir) -rmdir $(DESTDIR)$(pkgsysconfdir) -rmdir `dirname $(DESTDIR)$(pkgdatadir)` -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 $(INSTALL_BLACKLIST) +.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) @@ -228,76 +237,111 @@ ppd-stamp: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(top_srcdir)/src/xml/xml-st ppd-stamp-phony: $(PPD) ppd-catalog-clean: - $(RM) -rf catalog + $(RM) -rf $(PPD_DIR)catalog ppd-clean: - $(RM) -rf ppd + $(RM) -rf $(PPD_DIR) ppd-stamp-pre: ppd-catalog-clean ppd-clean ppd-catalog: ppd-catalog-clean - $(mkdir_p) catalog - for file in $(srcdir)/../../po/*.po; do \ + $(MKDIR_P) catalog + for file in $(top_srcdir)/po/*.po; do \ lang=`basename $$file .po`; \ - $(mkdir_p) "catalog/$$lang"; \ - $(INSTALL_DATA) $$file "catalog/$$lang/gutenprint_$$lang.po"; \ + $(MKDIR_P) "$(PPD_DIR)catalog/$$lang"; \ + $(INSTALL_DATA) $$file "$(PPD_DIR)catalog/$$lang/gutenprint_$$lang.po"; \ done ppd-nonls: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ - $(mkdir_p) ppd/C + @echo "Non-localized PPDs:" + $(MKDIR_P) $(PPD_DIR)/C $(MAKE) ppd-catalog-clean - LC_ALL= LANG= LANGUAGE= $(STP_NONLS_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ $(EXTRA_GENPPD_OPTS) -l C -p ppd/C + LC_ALL= LANG= LANGUAGE= $(STP_NONLS_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -l C -p $(PPD_DIR)/C @WHICH_PPDS@ ppd-nonls-a: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ - $(mkdir_p) ppd/C + @echo "Non-localized PPDs (all):" + $(MKDIR_P) $(PPD_DIR)/C $(MAKE) ppd-catalog-clean - LC_ALL= LANG= LANGUAGE= $(STP_NONLS_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ $(EXTRA_GENPPD_OPTS) -l C -p ppd/C -a + LC_ALL= LANG= LANGUAGE= $(STP_NONLS_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -l C -p $(PPD_DIR)/C -a + +ppd-nonls-s: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ + @echo "Non-localized PPDs (simplified):" + $(MKDIR_P) $(PPD_DIR)/C + $(MAKE) ppd-catalog-clean + LC_ALL= LANG= LANGUAGE= $(STP_NONLS_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -l C -p $(PPD_DIR)/C -s ppd-global: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @echo "Global PPDs:" - $(mkdir_p) ppd/Global + $(MKDIR_P) $(PPD_DIR)/Global $(MAKE) ppd-catalog - LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -p $(PPD_DIR)/Global @WHICH_PPDS@ $(MAKE) ppd-catalog-clean ppd-global-a: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ - @echo "Global PPDs:" - $(mkdir_p) ppd/Global + @echo "Global PPDs (all):" + $(MKDIR_P) $(PPD_DIR)/Global $(MAKE) ppd-catalog - LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global -a + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -p $(PPD_DIR)/Global -a + $(MAKE) ppd-catalog-clean + +ppd-global-s: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ + @echo "Global PPDs (simplified):" + $(MKDIR_P) $(PPD_DIR)/Global + $(MAKE) ppd-catalog + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -p $(PPD_DIR)/Global -s $(MAKE) ppd-catalog-clean ppd-global-ln: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @echo "Global PPDs (localized numbers for testing):" - $(mkdir_p) ppd/Global + $(MKDIR_P) $(PPD_DIR)/Global $(MAKE) ppd-catalog - LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global -N + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -p $(PPD_DIR)/Global -N @WHICH_PPDS@ $(MAKE) ppd-catalog-clean ppd-global-ln-a: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ - @echo "Global PPDs (localized numbers for testing):" - $(mkdir_p) ppd/Global + @echo "Global PPDs (all, localized numbers for testing):" + $(MKDIR_P) $(PPD_DIR)/Global $(MAKE) ppd-catalog - LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global -N -a + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -p $(PPD_DIR)/Global -N -a + $(MAKE) ppd-catalog-clean + +ppd-global-ln-s: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ + @echo "Global PPDs (all, localized numbers for testing):" + $(MKDIR_P) $(PPD_DIR)/Global + $(MAKE) ppd-catalog + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -p $(PPD_DIR)/Global -N -s $(MAKE) ppd-catalog-clean ppd-nls: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ ppd-nonls - $(mkdir_p) ppd + @echo "Localized PPD files:" + $(MKDIR_P) ppd + $(MAKE) ppd-catalog + for language in `$(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ -L` ; do \ + $(MKDIR_P) $(PPD_DIR)/$$language ; \ + echo -n "$$language: " ; \ + LC_ALL=$$language LANG=$$language LANGUAGE=$$language $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -l $$language -p $(PPD_DIR)/$$language; \ + done + $(MAKE) ppd-catalog-clean + +ppd-nls-a: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ ppd-nonls + @echo "Localized PPD files (all):" + $(MKDIR_P) ppd $(MAKE) ppd-catalog - for language in `$(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ -L` ; do \ - $(mkdir_p) ppd/$$language ; \ + for language in `$(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ -L` ; do \ + $(MKDIR_P) $(PPD_DIR)/$$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; \ + LC_ALL=$$language LANG=$$language LANGUAGE=$$language $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -l $$language -p $(PPD_DIR)/$$language -a; \ done $(MAKE) ppd-catalog-clean -ppd-nls-a: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ ppd-nonls - $(mkdir_p) ppd +ppd-nls-s: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ ppd-nonls + @echo "Localized PPD files (simplified):" + $(MKDIR_P) ppd $(MAKE) ppd-catalog - for language in `$(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ -L` ; do \ - $(mkdir_p) ppd/$$language ; \ + for language in `$(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ -L` ; do \ + $(MKDIR_P) $(PPD_DIR)/$$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 -a; \ + LC_ALL=$$language LANG=$$language LANGUAGE=$$language $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -l $$language -p $(PPD_DIR)/$$language -s; \ done $(MAKE) ppd-catalog-clean @@ -319,7 +363,7 @@ clean-local: ppd-catalog-clean ppd-clean ## Clean CLEANFILES = ppd-stamp -DISTCLEANFILES = cups-genppdupdate +DISTCLEANFILES = cups-genppdupdate test-ppds MAINTAINERCLEANFILES = Makefile.in EXTRA_DIST = \ @@ -328,5 +372,4 @@ EXTRA_DIST = \ blacklist \ calibrate.ppm \ command.txt \ - command.types \ - test-ppds + command.types diff --git a/src/cups/Makefile.in b/src/cups/Makefile.in index 04419cb..605047b 100644 --- a/src/cups/Makefile.in +++ b/src/cups/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -22,7 +22,17 @@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -83,12 +93,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(srcdir)/Info.plist.in \ - $(srcdir)/cups-genppdupdate.in \ - $(srcdir)/test-rastertogutenprint.in \ - $(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_RELEASE_VERSION@$(EXEEXT) @@ -99,21 +103,23 @@ DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ subdir = src/cups ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = Info.plist cups-genppdupdate \ - test-rastertogutenprint +CONFIG_CLEAN_FILES = Info.plist cups-genppdupdate test-ppds \ + min-pagesize test-rastertogutenprint \ + test-rastertogutenprint.check CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(cupsexec_backenddir)" \ @@ -128,9 +134,10 @@ am__backend_gutenprint_SOURCES_DIST = backend_canonselphy.c \ backend_canonselphyneo.c backend_kodak1400.c \ backend_kodak6800.c backend_kodak605.c backend_shinkos2145.c \ backend_sonyupdr150.c backend_dnpds40.c backend_mitsu70x.c \ - backend_citizencw01.c backend_mitsu9550.c backend_common.c \ - backend_common.h backend_shinkos1245.c backend_shinkos6145.c \ - backend_shinkos6245.c backend_mitsup95d.c + backend_mitsu9550.c backend_common.c backend_common.h \ + backend_shinkos1245.c backend_shinkos6145.c \ + backend_shinkos6245.c backend_mitsup95d.c backend_magicard.c \ + backend_mitsud90.c @BUILD_LIBUSB_BACKENDS_TRUE@am_backend_gutenprint_OBJECTS = backend_gutenprint-backend_canonselphy.$(OBJEXT) \ @BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_canonselphyneo.$(OBJEXT) \ @BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_kodak1400.$(OBJEXT) \ @@ -140,13 +147,14 @@ am__backend_gutenprint_SOURCES_DIST = backend_canonselphy.c \ @BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_sonyupdr150.$(OBJEXT) \ @BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_dnpds40.$(OBJEXT) \ @BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_mitsu70x.$(OBJEXT) \ -@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_citizencw01.$(OBJEXT) \ @BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_mitsu9550.$(OBJEXT) \ @BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_common.$(OBJEXT) \ @BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_shinkos1245.$(OBJEXT) \ @BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_shinkos6145.$(OBJEXT) \ @BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_shinkos6245.$(OBJEXT) \ -@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_mitsup95d.$(OBJEXT) +@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_mitsup95d.$(OBJEXT) \ +@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_magicard.$(OBJEXT) \ +@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_mitsud90.$(OBJEXT) backend_gutenprint_OBJECTS = $(am_backend_gutenprint_OBJECTS) am__DEPENDENCIES_1 = @BUILD_LIBUSB_BACKENDS_TRUE@backend_gutenprint_DEPENDENCIES = \ @@ -165,7 +173,7 @@ 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_RELEASE_VERSION@_OBJECTS = \ +am_cups_genppd_@GUTENPRINT_RELEASE_VERSION@_OBJECTS = cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.$(OBJEXT) \ cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.$(OBJEXT) \ cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.$(OBJEXT) cups_genppd_@GUTENPRINT_RELEASE_VERSION@_OBJECTS = \ @@ -178,19 +186,20 @@ cups_genppd_@GUTENPRINT_RELEASE_VERSION@_LINK = $(LIBTOOL) $(AM_V_lt) \ $(CFLAGS) $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_LDFLAGS) \ $(LDFLAGS) -o $@ am_gutenprint_@GUTENPRINT_RELEASE_VERSION@_OBJECTS = \ + gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.$(OBJEXT) \ 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) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) $(GUTENPRINT_LIBS) 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_RELEASE_VERSION@_OBJECTS = \ - rastertoprinter.$(OBJEXT) i18n.$(OBJEXT) + rastertogutenprint.$(OBJEXT) i18n.$(OBJEXT) rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_OBJECTS = \ $(am_rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_OBJECTS) rastertogutenprint_@GUTENPRINT_RELEASE_VERSION@_DEPENDENCIES = \ @@ -242,7 +251,34 @@ 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__maybe_remake_depfiles = depfiles +am__depfiles_remade = \ + ./$(DEPDIR)/backend_gutenprint-backend_canonselphy.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_canonselphyneo.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_common.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_dnpds40.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_kodak1400.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_kodak605.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_kodak6800.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_magicard.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_mitsu70x.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_mitsu9550.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_mitsud90.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_mitsup95d.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_shinkos1245.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_shinkos2145.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_shinkos6145.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_shinkos6245.Po \ + ./$(DEPDIR)/backend_gutenprint-backend_sonyupdr150.Po \ + ./$(DEPDIR)/commandtocanon.Po ./$(DEPDIR)/commandtoepson.Po \ + ./$(DEPDIR)/cups-calibrate.Po \ + ./$(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.Po \ + ./$(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.Po \ + ./$(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.Po \ + ./$(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.Po \ + ./$(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.Po \ + ./$(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.Po \ + ./$(DEPDIR)/i18n.Po ./$(DEPDIR)/rastertogutenprint.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -475,6 +511,13 @@ 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) +am__DIST_COMMON = $(srcdir)/Info.plist.in $(srcdir)/Makefile.in \ + $(srcdir)/cups-genppdupdate.in $(srcdir)/min-pagesize.in \ + $(srcdir)/test-ppds.in \ + $(srcdir)/test-rastertogutenprint.check.in \ + $(srcdir)/test-rastertogutenprint.in \ + $(top_srcdir)/scripts/depcomp $(top_srcdir)/scripts/global.mk \ + $(top_srcdir)/scripts/test-driver COPYING README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(cups_conf_datadir) pkglibdir = $(cups_conf_serverbin) @@ -487,6 +530,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -507,7 +552,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -524,6 +568,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -586,10 +631,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -613,7 +660,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -631,9 +677,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -701,7 +749,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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_BASE_VERSION@\" pkgsysconfdir = $(cups_conf_serverroot) @@ -713,8 +760,9 @@ cupsexec_filterdir = $(pkglibdir)/filter @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) -DSBINDIR=\"$(sbindir)/\" -STP_NONLS_ENV = STP_MODULE_PATH=$(top_builddir)/src/main/.libs:$(top_builddir)/src/main STP_DATA_PATH=$(top_srcdir)/src/xml -STP_ENV = $(STP_NONLS_ENV) STP_LOCALEDIR=$(top_srcdir)/src/cups/catalog +PPD_DIR = ppd +STP_NONLS_ENV = STP_MODULE_PATH=$(top_builddir)/src/main/.libs:$(top_builddir)/src/main STP_DATA_PATH=$(top_srcdir)/src/xml STP_LOCALEDIR= +STP_ENV = $(STP_NONLS_ENV) STP_LOCALEDIR=$(top_builddir)/src/cups/$(PPD_DIR)catalog @BUILD_GLOBALIZED_CUPS_PPDS_FALSE@@BUILD_TRANSLATED_CUPS_PPDS_TRUE@PPD = $(PPD_NLS_1) @BUILD_GLOBALIZED_CUPS_PPDS_TRUE@@BUILD_TRANSLATED_CUPS_PPDS_TRUE@PPD = ppd-global @BUILD_TRANSLATED_CUPS_PPDS_FALSE@PPD = ppd-nonls @@ -722,8 +770,13 @@ STP_ENV = $(STP_NONLS_ENV) STP_LOCALEDIR=$(top_srcdir)/src/cups/catalog @BUILD_TRANSLATED_CUPS_PPDS_TRUE@TRANSLATE_PPDS = -DCUPS_TRANSLATED_PPDS @BUILD_SIMPLIFIED_CUPS_PPDS_TRUE@BUILD_SIMPLE_PPDS = -DGENERATE_SIMPLIFIED_PPDS @BUILD_CUPS_TRUE@sbin_SCRIPTS = cups-genppdupdate -@BUILD_CUPS_TRUE@TESTS = test-ppds test-rastertogutenprint -@BUILD_CUPS_TRUE@noinst_SCRIPTS = test-rastertogutenprint +@BUILD_CUPS_TRUE@AM_TESTS_ENVIRONMENT = $(STP_ENV) +@BUILD_CUPS_TRUE@TESTS = test-ppds test-rastertogutenprint.check +@BUILD_CUPS_TRUE@noinst_SCRIPTS = test-ppds \ +@BUILD_CUPS_TRUE@ test-rastertogutenprint \ +@BUILD_CUPS_TRUE@ test-rastertogutenprint.check \ +@BUILD_CUPS_TRUE@ min-pagesize + @BUILD_GENPPD_STATIC_TRUE@STATIC_LDOPTS = -static -export-dynamic cups_calibrate_SOURCES = cups-calibrate.c cups_calibrate_LDADD = -lm @@ -731,18 +784,18 @@ commandtocanon_SOURCES = commandtocanon.c commandtocanon_LDADD = $(CUPS_LIBS) commandtoepson_SOURCES = commandtoepson.c commandtoepson_LDADD = $(CUPS_LIBS) -@BUILD_LIBUSB_BACKENDS_TRUE@backend_gutenprint_SOURCES = backend_canonselphy.c backend_canonselphyneo.c backend_kodak1400.c backend_kodak6800.c backend_kodak605.c backend_shinkos2145.c backend_sonyupdr150.c backend_dnpds40.c backend_mitsu70x.c backend_citizencw01.c backend_mitsu9550.c backend_common.c backend_common.h backend_shinkos1245.c backend_shinkos6145.c backend_shinkos6245.c backend_mitsup95d.c +@BUILD_LIBUSB_BACKENDS_TRUE@backend_gutenprint_SOURCES = backend_canonselphy.c backend_canonselphyneo.c backend_kodak1400.c backend_kodak6800.c backend_kodak605.c backend_shinkos2145.c backend_sonyupdr150.c backend_dnpds40.c backend_mitsu70x.c backend_mitsu9550.c backend_common.c backend_common.h backend_shinkos1245.c backend_shinkos6145.c backend_shinkos6245.c backend_mitsup95d.c backend_magicard.c backend_mitsud90.c @BUILD_LIBUSB_BACKENDS_TRUE@backend_gutenprint_LDADD = $(LIBUSB_LIBS) $(LIBUSB_BACKEND_LIBDEPS) @BUILD_LIBUSB_BACKENDS_TRUE@backend_gutenprint_CPPFLAGS = $(LIBUSB_CFLAGS) -DURI_PREFIX=\"gutenprint$(GUTENPRINT_MAJOR_VERSION)$(GUTENPRINT_MINOR_VERSION)+usb\" -DLIBUSB_PRE_1_0_10 -cups_genppd_@GUTENPRINT_RELEASE_VERSION@_SOURCES = genppd.c i18n.c i18n.h +cups_genppd_@GUTENPRINT_RELEASE_VERSION@_SOURCES = cups-genppd.c genppd.c genppd.h 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@_SOURCES = gutenprint.c genppd.c genppd.h i18n.c i18n.h +gutenprint_@GUTENPRINT_RELEASE_VERSION@_CFLAGS = -DALL_LINGUAS='"$(ALL_LINGUAS)"' $(BUILD_SIMPLE_PPDS) $(TRANSLATE_PPDS) +gutenprint_@GUTENPRINT_RELEASE_VERSION@_LDADD = $(CUPS_LIBS) $(GENPPD_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@_SOURCES = rastertogutenprint.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 @@ -753,7 +806,7 @@ pkgsysconf_DATA = $(CUPS_CONF) @USE_NLS_TRUE@PPD_NLS_1 = ppd-nls @BUILD_LIBUSB_BACKENDS_TRUE@INSTALL_BLACKLIST = install-blacklist CLEANFILES = ppd-stamp -DISTCLEANFILES = cups-genppdupdate +DISTCLEANFILES = cups-genppdupdate test-ppds MAINTAINERCLEANFILES = Makefile.in EXTRA_DIST = \ COPYING \ @@ -761,8 +814,7 @@ EXTRA_DIST = \ blacklist \ calibrate.ppm \ command.txt \ - command.types \ - test-ppds + command.types all: all-am @@ -780,16 +832,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/cups/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/cups/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -803,8 +854,14 @@ Info.plist: $(top_builddir)/config.status $(srcdir)/Info.plist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ cups-genppdupdate: $(top_builddir)/config.status $(srcdir)/cups-genppdupdate.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +test-ppds: $(top_builddir)/config.status $(srcdir)/test-ppds.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +min-pagesize: $(top_builddir)/config.status $(srcdir)/min-pagesize.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ test-rastertogutenprint: $(top_builddir)/config.status $(srcdir)/test-rastertogutenprint.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +test-rastertogutenprint.check: $(top_builddir)/config.status $(srcdir)/test-rastertogutenprint.check.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ @@ -1120,45 +1177,54 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_canonselphy.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_canonselphyneo.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_citizencw01.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_common.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_dnpds40.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_kodak1400.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_kodak605.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_kodak6800.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_mitsu70x.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_mitsu9550.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_mitsup95d.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_shinkos1245.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_shinkos2145.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_shinkos6145.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_shinkos6245.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_sonyupdr150.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_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@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_canonselphy.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_canonselphyneo.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_common.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_dnpds40.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_kodak1400.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_kodak605.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_kodak6800.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_magicard.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_mitsu70x.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_mitsu9550.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_mitsud90.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_mitsup95d.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_shinkos1245.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_shinkos2145.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_shinkos6145.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_shinkos6245.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_sonyupdr150.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commandtocanon.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commandtoepson.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cups-calibrate.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i18n.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rastertogutenprint.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) .c.o: @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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -1293,20 +1359,6 @@ backend_gutenprint-backend_mitsu70x.obj: backend_mitsu70x.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o backend_gutenprint-backend_mitsu70x.obj `if test -f 'backend_mitsu70x.c'; then $(CYGPATH_W) 'backend_mitsu70x.c'; else $(CYGPATH_W) '$(srcdir)/backend_mitsu70x.c'; fi` -backend_gutenprint-backend_citizencw01.o: backend_citizencw01.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-backend_citizencw01.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-backend_citizencw01.Tpo -c -o backend_gutenprint-backend_citizencw01.o `test -f 'backend_citizencw01.c' || echo '$(srcdir)/'`backend_citizencw01.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-backend_citizencw01.Tpo $(DEPDIR)/backend_gutenprint-backend_citizencw01.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='backend_citizencw01.c' object='backend_gutenprint-backend_citizencw01.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-backend_citizencw01.o `test -f 'backend_citizencw01.c' || echo '$(srcdir)/'`backend_citizencw01.c - -backend_gutenprint-backend_citizencw01.obj: backend_citizencw01.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-backend_citizencw01.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-backend_citizencw01.Tpo -c -o backend_gutenprint-backend_citizencw01.obj `if test -f 'backend_citizencw01.c'; then $(CYGPATH_W) 'backend_citizencw01.c'; else $(CYGPATH_W) '$(srcdir)/backend_citizencw01.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-backend_citizencw01.Tpo $(DEPDIR)/backend_gutenprint-backend_citizencw01.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='backend_citizencw01.c' object='backend_gutenprint-backend_citizencw01.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-backend_citizencw01.obj `if test -f 'backend_citizencw01.c'; then $(CYGPATH_W) 'backend_citizencw01.c'; else $(CYGPATH_W) '$(srcdir)/backend_citizencw01.c'; fi` - backend_gutenprint-backend_mitsu9550.o: backend_mitsu9550.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-backend_mitsu9550.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-backend_mitsu9550.Tpo -c -o backend_gutenprint-backend_mitsu9550.o `test -f 'backend_mitsu9550.c' || echo '$(srcdir)/'`backend_mitsu9550.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-backend_mitsu9550.Tpo $(DEPDIR)/backend_gutenprint-backend_mitsu9550.Po @@ -1391,6 +1443,48 @@ backend_gutenprint-backend_mitsup95d.obj: backend_mitsup95d.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o backend_gutenprint-backend_mitsup95d.obj `if test -f 'backend_mitsup95d.c'; then $(CYGPATH_W) 'backend_mitsup95d.c'; else $(CYGPATH_W) '$(srcdir)/backend_mitsup95d.c'; fi` +backend_gutenprint-backend_magicard.o: backend_magicard.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-backend_magicard.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-backend_magicard.Tpo -c -o backend_gutenprint-backend_magicard.o `test -f 'backend_magicard.c' || echo '$(srcdir)/'`backend_magicard.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-backend_magicard.Tpo $(DEPDIR)/backend_gutenprint-backend_magicard.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='backend_magicard.c' object='backend_gutenprint-backend_magicard.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-backend_magicard.o `test -f 'backend_magicard.c' || echo '$(srcdir)/'`backend_magicard.c + +backend_gutenprint-backend_magicard.obj: backend_magicard.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-backend_magicard.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-backend_magicard.Tpo -c -o backend_gutenprint-backend_magicard.obj `if test -f 'backend_magicard.c'; then $(CYGPATH_W) 'backend_magicard.c'; else $(CYGPATH_W) '$(srcdir)/backend_magicard.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-backend_magicard.Tpo $(DEPDIR)/backend_gutenprint-backend_magicard.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='backend_magicard.c' object='backend_gutenprint-backend_magicard.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-backend_magicard.obj `if test -f 'backend_magicard.c'; then $(CYGPATH_W) 'backend_magicard.c'; else $(CYGPATH_W) '$(srcdir)/backend_magicard.c'; fi` + +backend_gutenprint-backend_mitsud90.o: backend_mitsud90.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-backend_mitsud90.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-backend_mitsud90.Tpo -c -o backend_gutenprint-backend_mitsud90.o `test -f 'backend_mitsud90.c' || echo '$(srcdir)/'`backend_mitsud90.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-backend_mitsud90.Tpo $(DEPDIR)/backend_gutenprint-backend_mitsud90.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='backend_mitsud90.c' object='backend_gutenprint-backend_mitsud90.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-backend_mitsud90.o `test -f 'backend_mitsud90.c' || echo '$(srcdir)/'`backend_mitsud90.c + +backend_gutenprint-backend_mitsud90.obj: backend_mitsud90.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-backend_mitsud90.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-backend_mitsud90.Tpo -c -o backend_gutenprint-backend_mitsud90.obj `if test -f 'backend_mitsud90.c'; then $(CYGPATH_W) 'backend_mitsud90.c'; else $(CYGPATH_W) '$(srcdir)/backend_mitsud90.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-backend_mitsud90.Tpo $(DEPDIR)/backend_gutenprint-backend_mitsud90.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='backend_mitsud90.c' object='backend_gutenprint-backend_mitsud90.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-backend_mitsud90.obj `if test -f 'backend_mitsud90.c'; then $(CYGPATH_W) 'backend_mitsud90.c'; else $(CYGPATH_W) '$(srcdir)/backend_mitsud90.c'; fi` + +cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.o: cups-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@-cups-genppd.o -MD -MP -MF $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.Tpo -c -o cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.o `test -f 'cups-genppd.c' || echo '$(srcdir)/'`cups-genppd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.Tpo $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cups-genppd.c' object='cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-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) $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -c -o cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.o `test -f 'cups-genppd.c' || echo '$(srcdir)/'`cups-genppd.c + +cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.obj: cups-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@-cups-genppd.obj -MD -MP -MF $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.Tpo -c -o cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.obj `if test -f 'cups-genppd.c'; then $(CYGPATH_W) 'cups-genppd.c'; else $(CYGPATH_W) '$(srcdir)/cups-genppd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.Tpo $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cups-genppd.c' object='cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-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) $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -c -o cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.obj `if test -f 'cups-genppd.c'; then $(CYGPATH_W) 'cups-genppd.c'; else $(CYGPATH_W) '$(srcdir)/cups-genppd.c'; fi` + cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.o: genppd.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -MT cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.o -MD -MP -MF $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.Tpo -c -o cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.o `test -f 'genppd.c' || echo '$(srcdir)/'`genppd.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.Tpo $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.Po @@ -1419,6 +1513,20 @@ cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.obj: i18n.c @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@-gutenprint.o: gutenprint.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@-gutenprint.o -MD -MP -MF $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.Tpo -c -o gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.o `test -f 'gutenprint.c' || echo '$(srcdir)/'`gutenprint.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.Tpo $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gutenprint.c' object='gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.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@-gutenprint.o `test -f 'gutenprint.c' || echo '$(srcdir)/'`gutenprint.c + +gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.obj: gutenprint.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@-gutenprint.obj -MD -MP -MF $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.Tpo -c -o gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.obj `if test -f 'gutenprint.c'; then $(CYGPATH_W) 'gutenprint.c'; else $(CYGPATH_W) '$(srcdir)/gutenprint.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.Tpo $(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gutenprint.c' object='gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.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@-gutenprint.obj `if test -f 'gutenprint.c'; then $(CYGPATH_W) 'gutenprint.c'; else $(CYGPATH_W) '$(srcdir)/gutenprint.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 @@ -1577,7 +1685,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS) if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ - else \ + elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ @@ -1667,7 +1775,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS) fi; \ $$success || exit 1 -check-TESTS: +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) @@ -1695,9 +1803,9 @@ test-ppds.log: test-ppds --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'; \ +test-rastertogutenprint.check.log: test-rastertogutenprint.check + @p='test-rastertogutenprint.check'; \ + b='test-rastertogutenprint.check'; \ $(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) \ @@ -1717,7 +1825,10 @@ test-rastertogutenprint.log: test-rastertogutenprint @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) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -1804,7 +1915,34 @@ clean-am: clean-binPROGRAMS clean-cupsexec_backendPROGRAMS \ mostlyclean-am distclean: distclean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_canonselphy.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_canonselphyneo.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_common.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_dnpds40.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_kodak1400.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_kodak605.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_kodak6800.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_magicard.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_mitsu70x.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_mitsu9550.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_mitsud90.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_mitsup95d.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_shinkos1245.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_shinkos2145.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_shinkos6145.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_shinkos6245.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_sonyupdr150.Po + -rm -f ./$(DEPDIR)/commandtocanon.Po + -rm -f ./$(DEPDIR)/commandtoepson.Po + -rm -f ./$(DEPDIR)/cups-calibrate.Po + -rm -f ./$(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.Po + -rm -f ./$(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.Po + -rm -f ./$(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.Po + -rm -f ./$(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.Po + -rm -f ./$(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.Po + -rm -f ./$(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.Po + -rm -f ./$(DEPDIR)/i18n.Po + -rm -f ./$(DEPDIR)/rastertogutenprint.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -1856,7 +1994,34 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_canonselphy.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_canonselphyneo.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_common.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_dnpds40.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_kodak1400.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_kodak605.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_kodak6800.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_magicard.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_mitsu70x.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_mitsu9550.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_mitsud90.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_mitsup95d.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_shinkos1245.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_shinkos2145.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_shinkos6145.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_shinkos6245.Po + -rm -f ./$(DEPDIR)/backend_gutenprint-backend_sonyupdr150.Po + -rm -f ./$(DEPDIR)/commandtocanon.Po + -rm -f ./$(DEPDIR)/commandtoepson.Po + -rm -f ./$(DEPDIR)/cups-calibrate.Po + -rm -f ./$(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-cups-genppd.Po + -rm -f ./$(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.Po + -rm -f ./$(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-i18n.Po + -rm -f ./$(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-genppd.Po + -rm -f ./$(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-gutenprint.Po + -rm -f ./$(DEPDIR)/gutenprint_@GUTENPRINT_RELEASE_VERSION@-i18n.Po + -rm -f ./$(DEPDIR)/i18n.Po + -rm -f ./$(DEPDIR)/rastertogutenprint.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -1882,8 +2047,8 @@ uninstall-am: uninstall-binPROGRAMS uninstall-cupsexec_backendPROGRAMS \ .MAKE: check-am install-am install-data-am install-exec-am \ install-strip -.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \ - check-am clean clean-binPROGRAMS \ +.PHONY: CTAGS GTAGS TAGS all all-am all-local am--depfiles 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 cscopelist-am ctags ctags-am \ @@ -1909,6 +2074,8 @@ uninstall-am: uninstall-binPROGRAMS uninstall-cupsexec_backendPROGRAMS \ uninstall-pkgdataDATA uninstall-pkgsysconfDATA \ uninstall-sbinPROGRAMS uninstall-sbinSCRIPTS +.PRECIOUS: Makefile + @SET_MAKE@ @@ -1918,10 +2085,6 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) @@ -1929,17 +2092,19 @@ $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: @BUILD_CUPS_TRUE@@BUILD_LIBUSB_BACKENDS_TRUE@install-exec-hook: @BUILD_CUPS_TRUE@@BUILD_LIBUSB_BACKENDS_TRUE@ chmod 700 $(DESTDIR)$(pkglibdir)/backend/backend_gutenprint @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@test-rastertogutenprint: min-pagesize +@BUILD_CUPS_TRUE@test-rastertogutenprint.check: test-rastertogutenprint @BUILD_LIBUSB_BACKENDS_TRUE@install-blacklist: -@BUILD_LIBUSB_BACKENDS_TRUE@ $(mkdir_p) $(DESTDIR)$(cupsdata_blacklistdir) +@BUILD_LIBUSB_BACKENDS_TRUE@ $(MKDIR_P) $(DESTDIR)$(cupsdata_blacklistdir) @BUILD_LIBUSB_BACKENDS_TRUE@ $(INSTALL_DATA) $(srcdir)/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); \ + $(MKDIR_P) $(DESTDIR)$(cups_modeldir); \ cd ppd ; \ for language in * ; do \ cd ..; \ - $(mkdir_p) $(DESTDIR)$(cups_modeldir)/$$language; \ + $(MKDIR_P) $(DESTDIR)$(cups_modeldir)/$$language; \ cd ppd/$$language; \ for ppdfile in * ; do \ (cd ../..; $(INSTALL_DATA) ppd/$$language/$$ppdfile $(DESTDIR)$(cups_modeldir)/$$language) ; \ @@ -1947,10 +2112,10 @@ install-data-local: $(INSTALL_DATA_LOCAL_DEPS) $(INSTALL_BLACKLIST) cd ..; \ done \ fi - $(mkdir_p) "$(DESTDIR)$(localedir)" + $(MKDIR_P) "$(DESTDIR)$(localedir)" for file in $(srcdir)/../../po/*.po; do \ lang=`basename $$file .po`; \ - $(mkdir_p) "$(DESTDIR)$(localedir)/$$lang"; \ + $(MKDIR_P) "$(DESTDIR)$(localedir)/$$lang"; \ $(INSTALL_DATA) $$file "$(DESTDIR)$(localedir)/$$lang/gutenprint_$$lang.po"; \ done @@ -1979,13 +2144,15 @@ install-data-hook: -rmdir $(DESTDIR)$(cupsexec_backenddir) -rmdir $(DESTDIR)$(cupsdata_blacklistdir) -rmdir $(DESTDIR)$(bindir) + -rmdir $(DESTDIR)$(sbindir) -rmdir $(DESTDIR)$(pkglibdir) -rmdir $(DESTDIR)$(pkgsysconfdir) -rmdir `dirname $(DESTDIR)$(pkgdatadir)` -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 $(INSTALL_BLACKLIST) +.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) @@ -1999,76 +2166,111 @@ ppd-stamp: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(top_srcdir)/src/xml/xml-st ppd-stamp-phony: $(PPD) ppd-catalog-clean: - $(RM) -rf catalog + $(RM) -rf $(PPD_DIR)catalog ppd-clean: - $(RM) -rf ppd + $(RM) -rf $(PPD_DIR) ppd-stamp-pre: ppd-catalog-clean ppd-clean ppd-catalog: ppd-catalog-clean - $(mkdir_p) catalog - for file in $(srcdir)/../../po/*.po; do \ + $(MKDIR_P) catalog + for file in $(top_srcdir)/po/*.po; do \ lang=`basename $$file .po`; \ - $(mkdir_p) "catalog/$$lang"; \ - $(INSTALL_DATA) $$file "catalog/$$lang/gutenprint_$$lang.po"; \ + $(MKDIR_P) "$(PPD_DIR)catalog/$$lang"; \ + $(INSTALL_DATA) $$file "$(PPD_DIR)catalog/$$lang/gutenprint_$$lang.po"; \ done ppd-nonls: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ - $(mkdir_p) ppd/C + @echo "Non-localized PPDs:" + $(MKDIR_P) $(PPD_DIR)/C $(MAKE) ppd-catalog-clean - LC_ALL= LANG= LANGUAGE= $(STP_NONLS_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ $(EXTRA_GENPPD_OPTS) -l C -p ppd/C + LC_ALL= LANG= LANGUAGE= $(STP_NONLS_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -l C -p $(PPD_DIR)/C @WHICH_PPDS@ ppd-nonls-a: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ - $(mkdir_p) ppd/C + @echo "Non-localized PPDs (all):" + $(MKDIR_P) $(PPD_DIR)/C + $(MAKE) ppd-catalog-clean + LC_ALL= LANG= LANGUAGE= $(STP_NONLS_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -l C -p $(PPD_DIR)/C -a + +ppd-nonls-s: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ + @echo "Non-localized PPDs (simplified):" + $(MKDIR_P) $(PPD_DIR)/C $(MAKE) ppd-catalog-clean - LC_ALL= LANG= LANGUAGE= $(STP_NONLS_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ $(EXTRA_GENPPD_OPTS) -l C -p ppd/C -a + LC_ALL= LANG= LANGUAGE= $(STP_NONLS_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -l C -p $(PPD_DIR)/C -s ppd-global: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @echo "Global PPDs:" - $(mkdir_p) ppd/Global + $(MKDIR_P) $(PPD_DIR)/Global $(MAKE) ppd-catalog - LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -p $(PPD_DIR)/Global @WHICH_PPDS@ $(MAKE) ppd-catalog-clean ppd-global-a: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ - @echo "Global PPDs:" - $(mkdir_p) ppd/Global + @echo "Global PPDs (all):" + $(MKDIR_P) $(PPD_DIR)/Global $(MAKE) ppd-catalog - LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global -a + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -p $(PPD_DIR)/Global -a + $(MAKE) ppd-catalog-clean + +ppd-global-s: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ + @echo "Global PPDs (simplified):" + $(MKDIR_P) $(PPD_DIR)/Global + $(MAKE) ppd-catalog + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -p $(PPD_DIR)/Global -s $(MAKE) ppd-catalog-clean ppd-global-ln: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @echo "Global PPDs (localized numbers for testing):" - $(mkdir_p) ppd/Global + $(MKDIR_P) $(PPD_DIR)/Global $(MAKE) ppd-catalog - LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global -N + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -p $(PPD_DIR)/Global -N @WHICH_PPDS@ $(MAKE) ppd-catalog-clean ppd-global-ln-a: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ - @echo "Global PPDs (localized numbers for testing):" - $(mkdir_p) ppd/Global + @echo "Global PPDs (all, localized numbers for testing):" + $(MKDIR_P) $(PPD_DIR)/Global + $(MAKE) ppd-catalog + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -p $(PPD_DIR)/Global -N -a + $(MAKE) ppd-catalog-clean + +ppd-global-ln-s: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ + @echo "Global PPDs (all, localized numbers for testing):" + $(MKDIR_P) $(PPD_DIR)/Global $(MAKE) ppd-catalog - LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -p ppd/Global -N -a + LC_ALL= LANG= LANGUAGE= $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -p $(PPD_DIR)/Global -N -s $(MAKE) ppd-catalog-clean ppd-nls: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ ppd-nonls - $(mkdir_p) ppd + @echo "Localized PPD files:" + $(MKDIR_P) ppd + $(MAKE) ppd-catalog + for language in `$(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ -L` ; do \ + $(MKDIR_P) $(PPD_DIR)/$$language ; \ + echo -n "$$language: " ; \ + LC_ALL=$$language LANG=$$language LANGUAGE=$$language $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) -l $$language -p $(PPD_DIR)/$$language; \ + done + $(MAKE) ppd-catalog-clean + +ppd-nls-a: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ ppd-nonls + @echo "Localized PPD files (all):" + $(MKDIR_P) ppd $(MAKE) ppd-catalog - for language in `$(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ -L` ; do \ - $(mkdir_p) ppd/$$language ; \ + for language in `$(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ -L` ; do \ + $(MKDIR_P) $(PPD_DIR)/$$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; \ + LC_ALL=$$language LANG=$$language LANGUAGE=$$language $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -l $$language -p $(PPD_DIR)/$$language -a; \ done $(MAKE) ppd-catalog-clean -ppd-nls-a: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ ppd-nonls - $(mkdir_p) ppd +ppd-nls-s: cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ ppd-nonls + @echo "Localized PPD files (simplified):" + $(MKDIR_P) ppd $(MAKE) ppd-catalog - for language in `$(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ -L` ; do \ - $(mkdir_p) ppd/$$language ; \ + for language in `$(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ @WHICH_PPDS@ -L` ; do \ + $(MKDIR_P) $(PPD_DIR)/$$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 -a; \ + LC_ALL=$$language LANG=$$language LANGUAGE=$$language $(STP_ENV) ./cups-genppd.@GUTENPRINT_RELEASE_VERSION@ $(EXTRA_GENPPD_OPTS) @WHICH_PPDS@ -l $$language -p $(PPD_DIR)/$$language -s; \ done $(MAKE) ppd-catalog-clean diff --git a/src/cups/backend_canonselphy.c b/src/cups/backend_canonselphy.c index 8b016df..42b3f45 100644 --- a/src/cups/backend_canonselphy.c +++ b/src/cups/backend_canonselphy.c @@ -1,7 +1,7 @@ /* * Canon SELPHY ES/CP series CUPS backend -- libusb-1.0 version * - * (c) 2007-2016 Solomon Peachy <pizza@shaftnet.org> + * (c) 2007-2018 Solomon Peachy <pizza@shaftnet.org> * * The latest version of this program can be found at: * @@ -18,11 +18,12 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * + * SPDX-License-Identifier: GPL-2.0+ + * */ #include <stdio.h> @@ -79,50 +80,55 @@ struct printer_data { int type; /* P_??? */ char *model; /* eg "SELPHY ES1" */ - int init_length; - int foot_length; + uint16_t init_length; + uint16_t 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; + uint8_t 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); - char *(*pgcode_names)(uint8_t pgcode); + int8_t pgcode_offset; /* Offset into printjob for paper type */ + int8_t paper_code_offset; /* Offset in readback for paper type */ + int8_t paper_code_offset2; /* Offset in readback for paper type (2nd) */ + uint8_t (*error_detect)(uint8_t *rdbuf); + char *(*pgcode_names)(uint8_t *rdbuf, struct printer_data *printer); }; -static char *generic_pgcode_names(uint8_t pgcode) +static char *generic_pgcode_names(uint8_t *rdbuf, struct printer_data *printer) { + uint8_t pgcode = 0, pgcode2 = 0; + + if (printer->paper_code_offset != -1) + pgcode = rdbuf[printer->paper_code_offset]; + if (printer->paper_code_offset2 != -1) + pgcode2 = rdbuf[printer->paper_code_offset2]; + switch(pgcode & 0xf) { case 0x01: return "P"; case 0x02: return "L"; - case 0x03: return "C"; + case 0x03: return pgcode2 ? "Cl" : "C"; case 0x04: return "W"; case 0x0f: return "None"; default: return "Unknown"; } } -static int es1_error_detect(uint8_t *rdbuf) +static uint8_t es1_error_detect(uint8_t *rdbuf) { if (rdbuf[1] == 0x01) { - if (rdbuf[9] == 0x00) { + if (rdbuf[9] == 0x00) ERROR("Cover open!\n"); - } else { + else ERROR("Unknown error %02x\n", rdbuf[9]); - } return 1; } else if (rdbuf[4] == 0x01 && rdbuf[5] == 0xff && rdbuf[6] == 0xff && rdbuf[7] == 0xff) { - ATTR("marker-levels=%d\n", 0); ERROR("No media loaded!\n"); return 1; } else if (rdbuf[0] == 0x0f) { - ATTR("marker-levels=%d\n", 0); ERROR("Out of media!\n"); return 1; } @@ -130,7 +136,7 @@ static int es1_error_detect(uint8_t *rdbuf) return 0; } -static int es2_error_detect(uint8_t *rdbuf) +static uint8_t es2_error_detect(uint8_t *rdbuf) { if (rdbuf[0] == 0x16 && rdbuf[1] == 0x01) { @@ -142,13 +148,11 @@ static int es2_error_detect(uint8_t *rdbuf) rdbuf[4] == 0x05 && rdbuf[5] == 0x05 && rdbuf[6] == 0x02) { - ATTR("marker-levels=%d\n", 0); ERROR("No media loaded!\n"); return 1; } if (rdbuf[0] == 0x14) { - ATTR("marker-levels=%d\n", 0); ERROR("Out of media!\n"); return 1; } @@ -156,22 +160,19 @@ static int es2_error_detect(uint8_t *rdbuf) return 0; } -static int es3_error_detect(uint8_t *rdbuf) +static uint8_t es3_error_detect(uint8_t *rdbuf) { if (rdbuf[8] == 0x01) { - if (rdbuf[10] == 0x0f) { + if (rdbuf[10] == 0x0f) ERROR("Communications Error\n"); - } else if (rdbuf[10] == 0x01) { - ATTR("marker-levels=%d\n", 0); + else if (rdbuf[10] == 0x01) ERROR("No media loaded!\n"); - } else { + else ERROR("Unknown error - %02x + %02x\n", rdbuf[8], rdbuf[10]); - } return 1; } else if (rdbuf[8] == 0x03 && rdbuf[10] == 0x02) { - ATTR("marker-levels=%d\n", 0); ERROR("No media loaded!\n"); return 1; } else if (rdbuf[8] == 0x08 && @@ -193,7 +194,7 @@ static int es3_error_detect(uint8_t *rdbuf) return 0; } -static int es40_error_detect(uint8_t *rdbuf) +static uint8_t es40_error_detect(uint8_t *rdbuf) { /* ES40 */ if (!rdbuf[3]) @@ -201,17 +202,15 @@ static int es40_error_detect(uint8_t *rdbuf) if (rdbuf[3] == 0x01) ERROR("Generic communication error\n"); - else if (rdbuf[3] == 0x32) { - ATTR("marker-levels=%d\n", 0); + else if (rdbuf[3] == 0x32) ERROR("Cover open or media empty!\n"); - } else + else ERROR("Unknown error - %02x\n", rdbuf[3]); - return 1; } -static int cp790_error_detect(uint8_t *rdbuf) +static uint8_t cp790_error_detect(uint8_t *rdbuf) { /* CP790 */ if (rdbuf[5] == 0xff) { @@ -221,18 +220,15 @@ static int cp790_error_detect(uint8_t *rdbuf) ERROR("No paper tray loaded!\n"); return 1; } else if (rdbuf[3]) { - if ((rdbuf[3] & 0xf) == 0x02) { // 0x12 0x22 - ATTR("marker-levels=%d\n", 0); + if ((rdbuf[3] & 0xf) == 0x02) // 0x12 0x22 ERROR("No paper tray loaded!\n"); - } else if ((rdbuf[3] & 0xf) == 0x03) { // 0x13 0x23 - ATTR("marker-levels=%d\n", 0); + else if ((rdbuf[3] & 0xf) == 0x03) // 0x13 0x23 ERROR("Empty paper tray or feed error!\n"); - } else if (rdbuf[3] == 0x11) + else if (rdbuf[3] == 0x11) ERROR("Paper feed error!\n"); - else if (rdbuf[3] == 0x21) { - ATTR("marker-levels=%d\n", 0); + else if (rdbuf[3] == 0x21) ERROR("Ribbon depleted!\n"); - } else + else ERROR("Unknown error - %02x\n", rdbuf[3]); return 1; } @@ -240,46 +236,42 @@ static int cp790_error_detect(uint8_t *rdbuf) return 0; } -static char *cp10_pgcode_names(uint8_t pgcode) +static char *cp10_pgcode_names(uint8_t *rdbuf, struct printer_data *printer) { - switch (pgcode) { - default: return "C"; - }; + UNUSED(rdbuf); + UNUSED(printer); + + return "C"; /* Printer only supports one media type */ } -static int cp10_error_detect(uint8_t *rdbuf) +static uint8_t cp10_error_detect(uint8_t *rdbuf) { if (!rdbuf[2]) return 0; - if (rdbuf[2] == 0x80) { - ATTR("marker-levels=%d\n", 0); + if (rdbuf[2] == 0x80) ERROR("No ribbon loaded\n"); - } else if (rdbuf[2] == 0x08) { - ATTR("marker-levels=%d\n", 0); + else if (rdbuf[2] == 0x08) ERROR("Ribbon depleted!\n"); - } else if (rdbuf[2] == 0x01) { - ATTR("marker-levels=%d\n", 0); + else if (rdbuf[2] == 0x01) ERROR("No paper loaded!\n"); - } else + else ERROR("Unknown error - %02x\n", rdbuf[2]); return 1; } -static int cpxxx_error_detect(uint8_t *rdbuf) +static uint8_t cpxxx_error_detect(uint8_t *rdbuf) { if (!rdbuf[2]) return 0; - if (rdbuf[2] == 0x01) { - ATTR("marker-levels=%d\n", 0); + if (rdbuf[2] == 0x01) ERROR("Paper feed problem!\n"); - } else if (rdbuf[2] == 0x04) + else if (rdbuf[2] == 0x04) ERROR("Ribbon problem!\n"); - else if (rdbuf[2] == 0x08) { - ATTR("marker-levels=%d\n", 0); + else if (rdbuf[2] == 0x08) ERROR("Ribbon depleted!\n"); - } else + else ERROR("Unknown error - %02x\n", rdbuf[2]); return 1; } @@ -298,6 +290,7 @@ static struct printer_data selphy_printers[] = { .clear_error_len = 12, .pgcode_offset = 3, .paper_code_offset = 6, + .paper_code_offset2 = -1, .error_detect = es1_error_detect, .pgcode_names = generic_pgcode_names, }, @@ -314,6 +307,7 @@ static struct printer_data selphy_printers[] = { .clear_error_len = 12, .pgcode_offset = 2, .paper_code_offset = 4, + .paper_code_offset2 = 6, .error_detect = es2_error_detect, .pgcode_names = generic_pgcode_names, }, @@ -330,6 +324,7 @@ static struct printer_data selphy_printers[] = { .clear_error_len = 12, .pgcode_offset = 2, .paper_code_offset = -1, + .paper_code_offset2 = -1, .error_detect = es3_error_detect, .pgcode_names = NULL, }, @@ -346,6 +341,7 @@ static struct printer_data selphy_printers[] = { .clear_error_len = 12, .pgcode_offset = 2, .paper_code_offset = 11, + .paper_code_offset2 = -1, .error_detect = es40_error_detect, .pgcode_names = generic_pgcode_names, }, @@ -362,6 +358,7 @@ static struct printer_data selphy_printers[] = { .clear_error_len = 12, .pgcode_offset = 2, .paper_code_offset = -1, /* Uses a different technique */ + .paper_code_offset2 = -1, .error_detect = cp790_error_detect, .pgcode_names = generic_pgcode_names, }, @@ -378,6 +375,7 @@ static struct printer_data selphy_printers[] = { .clear_error_len = 12, .pgcode_offset = 3, .paper_code_offset = 6, + .paper_code_offset2 = -1, .error_detect = cpxxx_error_detect, .pgcode_names = generic_pgcode_names, }, @@ -394,6 +392,7 @@ static struct printer_data selphy_printers[] = { .clear_error_len = 12, .pgcode_offset = 2, .paper_code_offset = -1, + .paper_code_offset2 = -1, .error_detect = cp10_error_detect, .pgcode_names = cp10_pgcode_names, }, @@ -536,17 +535,9 @@ done: } /* Private data structure */ -struct canonselphy_ctx { - struct libusb_device_handle *dev; - uint8_t endp_up; - uint8_t endp_down; - int type; - - struct printer_data *printer; - - uint8_t bw_mode; - +struct canonselphy_printjob { int16_t paper_code; + uint8_t bw_mode; uint32_t plane_len; @@ -556,11 +547,44 @@ struct canonselphy_ctx { uint8_t *plane_c; uint8_t *footer; - uint8_t *buffer; + int copies; +}; + +struct canonselphy_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + int type; + + struct printer_data *printer; + struct marker marker; uint8_t cp900; }; +static int canonselphy_get_status(struct canonselphy_ctx *ctx) +{ + uint8_t rdbuf[READBACK_LEN]; + int ret, num; + + /* Read in the printer status, twice. */ + ret = read_data(ctx->dev, ctx->endp_up, + (uint8_t*) rdbuf, READBACK_LEN, &num); + if (ret < 0) + return CUPS_BACKEND_FAILED; + + ret = read_data(ctx->dev, ctx->endp_up, + (uint8_t*) rdbuf, READBACK_LEN, &num); + + if (ret < 0) + return CUPS_BACKEND_FAILED; + + INFO("Media type: %s\n", ctx->printer->pgcode_names? ctx->printer->pgcode_names(rdbuf, ctx->printer) : "Unknown"); + ctx->printer->error_detect(rdbuf); + + return CUPS_BACKEND_OK; +} + static int canonselphy_send_reset(struct canonselphy_ctx *ctx) { uint8_t rstcmd[12] = { 0x40, 0x10, 0x00, 0x00, @@ -587,39 +611,84 @@ static void *canonselphy_init(void) /* Static initialization */ setup_paper_codes(); - ctx->buffer = malloc(MAX_HEADER); - if (!ctx->buffer) { - ERROR("Memory Allocation Failure!\n"); - free(ctx); - ctx = NULL; - } - return ctx; } extern struct dyesub_backend canonselphy_backend; -static void canonselphy_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int canonselphy_attach(void *vctx, struct libusb_device_handle *dev, int type, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct canonselphy_ctx *ctx = vctx; - struct libusb_device *device; - struct libusb_device_descriptor desc; + int i, num; + uint8_t rdbuf[READBACK_LEN]; UNUSED(jobid); ctx->dev = dev; ctx->endp_up = endp_up; ctx->endp_down = endp_down; + ctx->type = type; - device = libusb_get_device(dev); - libusb_get_device_descriptor(device, &desc); + if (ctx->type == P_CP900) { + ctx->type = P_CP_XXX; + ctx->cp900 = 1; + } + for (i = 0 ; selphy_printers[i].type != -1; i++) { + if (selphy_printers[i].type == ctx->type) { + ctx->printer = &selphy_printers[i]; + } + } + if (!ctx->printer) { + ERROR("Error looking up printer type!\n"); + return CUPS_BACKEND_FAILED; + } - ctx->type = lookup_printer_type(&canonselphy_backend, - desc.idVendor, desc.idProduct); + /* Fill out marker structure */ + ctx->marker.color = "#00FFFF#FF00FF#FFFF00"; + ctx->marker.levelmax = -1; /* Unknown */ - if (desc.idProduct == USB_PID_CANON_CP900) - ctx->cp900 = 1; + if (test_mode < TEST_MODE_NOATTACH) { + /* Read printer status. Twice. */ + i = read_data(ctx->dev, ctx->endp_up, + rdbuf, READBACK_LEN, &num); + if (i < 0) + return CUPS_BACKEND_FAILED; + + i = read_data(ctx->dev, ctx->endp_up, + rdbuf, READBACK_LEN, &num); + if (i < 0) + return CUPS_BACKEND_FAILED; + + if (ctx->printer->error_detect(rdbuf)) + ctx->marker.levelnow = 0; /* Out of media */ + else + ctx->marker.levelnow = -3; /* Unknown but OK */ + ctx->marker.name = ctx->printer->pgcode_names? ctx->printer->pgcode_names(rdbuf, ctx->printer) : "Unknown"; + } else { + // XXX handle MEDIA_CODE at some point. + // we don't do any error checking here. + ctx->marker.name = "Unknown"; + } + + return CUPS_BACKEND_OK; +} + +static void canonselphy_cleanup_job(const void *vjob) { + const struct canonselphy_printjob *job = vjob; + + if (job->header) + free(job->header); + if (job->plane_y) + free(job->plane_y); + if (job->plane_m) + free(job->plane_m); + if (job->plane_c) + free(job->plane_c); + if (job->footer) + free(job->footer); + + free((void*)job); } static void canonselphy_teardown(void *vctx) { @@ -628,64 +697,63 @@ static void canonselphy_teardown(void *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_read_parse(void *vctx, int data_fd) +static int canonselphy_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { struct canonselphy_ctx *ctx = vctx; int i, remain; int printer_type; int offset = 0; + uint8_t rdbuf[MAX_HEADER]; + + struct canonselphy_printjob *job = NULL; if (!ctx) return CUPS_BACKEND_FAILED; + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; + } + memset(job, 0, sizeof(*job)); + job->copies = copies; + /* The CP900 job *may* have a 4-byte null footer after the job contents. Ignore it if it comes through here.. */ - i = read(data_fd, ctx->buffer, 4); + i = read(data_fd, rdbuf, 4); if (i != 4) { if (i == 0) return CUPS_BACKEND_CANCEL; ERROR("Read failed (%d/%d)\n", i, 4); perror("ERROR: Read failed"); + canonselphy_cleanup_job(job); return CUPS_BACKEND_FAILED; } /* if it's not the null header.. don't ignore! */ - if (ctx->buffer[0] != 0 || - ctx->buffer[1] != 0 || - ctx->buffer[2] != 0 || - ctx->buffer[3] != 0) { + if (rdbuf[0] != 0 || + rdbuf[1] != 0 || + rdbuf[2] != 0 || + rdbuf[3] != 0) { offset = 4; } /* Read the rest of the header.. */ - i = read(data_fd, ctx->buffer + offset, MAX_HEADER - offset); + i = read(data_fd, rdbuf + offset, MAX_HEADER - offset); if (i != MAX_HEADER - offset) { if (i == 0) return CUPS_BACKEND_CANCEL; ERROR("Read failed (%d/%d)\n", i, MAX_HEADER - offset); perror("ERROR: Read failed"); + canonselphy_cleanup_job(job); return CUPS_BACKEND_FAILED; } /* Figure out printer this file is intended for */ - printer_type = parse_printjob(ctx->buffer, &ctx->bw_mode, &ctx->plane_len); + printer_type = parse_printjob(rdbuf, &job->bw_mode, &job->plane_len); /* Special cases for some models */ if (printer_type == P_ES40_CP790) { if (ctx->type == P_CP790) @@ -694,97 +762,71 @@ static int canonselphy_read_parse(void *vctx, int data_fd) printer_type = P_ES40; } - /* Look up the printer entry */ - for (i = 0; selphy_printers[i].type != -1; i++) { - if (selphy_printers[i].type == printer_type) { - ctx->printer = &selphy_printers[i]; - break; - } - } - if (!ctx->printer) { - ERROR("Error mapping printjob to printer type!\n"); - return CUPS_BACKEND_FAILED; - } - - INFO("%sFile intended for a '%s' printer\n", ctx->bw_mode? "B/W " : "", ctx->printer->model); - - if (ctx->printer->type != ctx->type) { + if (printer_type != ctx->type) { ERROR("Printer/Job mismatch (%d/%d)\n", ctx->type, ctx->printer->type); + free(job); return CUPS_BACKEND_CANCEL; } + INFO("%sFile intended for a '%s' printer\n", job->bw_mode? "B/W " : "", ctx->printer->model); + /* Paper code setup */ if (ctx->printer->pgcode_offset != -1) - ctx->paper_code = ctx->printer->paper_codes[ctx->buffer[ctx->printer->pgcode_offset]]; + job->paper_code = ctx->printer->paper_codes[rdbuf[ctx->printer->pgcode_offset]]; else - ctx->paper_code = -1; + job->paper_code = -1; /* Add in plane header length! */ - ctx->plane_len += 12; - - /* Now prep for the job */ - 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; - } + job->plane_len += 12; /* 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)) { + job->plane_y = malloc(job->plane_len); + job->plane_m = malloc(job->plane_len); + job->plane_c = malloc(job->plane_len); + job->header = malloc(ctx->printer->init_length); + job->footer = malloc(ctx->printer->foot_length); + if (!job->plane_y || !job->plane_m || !job->plane_c || !job->header || + (ctx->printer->foot_length && !job->footer)) { ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_FAILED; + canonselphy_cleanup_job(job); + return CUPS_BACKEND_RETRY_CURRENT; } /* 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, + memcpy(job->header, rdbuf, ctx->printer->init_length); + memcpy(job->plane_y, rdbuf+ctx->printer->init_length, MAX_HEADER-ctx->printer->init_length); /* Read in YELLOW plane */ - remain = ctx->plane_len - (MAX_HEADER-ctx->printer->init_length); + remain = job->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) + i = read(data_fd, job->plane_y + (job->plane_len - remain), remain); + if (i < 0) { + canonselphy_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } remain -= i; } /* Read in MAGENTA plane */ - remain = ctx->plane_len; + remain = job->plane_len; while (remain > 0) { - i = read(data_fd, ctx->plane_m + (ctx->plane_len - remain), remain); - if (i < 0) + i = read(data_fd, job->plane_m + (job->plane_len - remain), remain); + if (i < 0) { + canonselphy_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } remain -= i; } /* Read in CYAN plane */ - remain = ctx->plane_len; + remain = job->plane_len; while (remain > 0) { - i = read(data_fd, ctx->plane_c + (ctx->plane_len - remain), remain); - if (i < 0) + i = read(data_fd, job->plane_c + (job->plane_len - remain), remain); + if (i < 0) { + canonselphy_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } remain -= i; } @@ -792,22 +834,36 @@ static int canonselphy_read_parse(void *vctx, int data_fd) 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) + i = read(data_fd, job->footer + (ctx->printer->foot_length - remain), remain); + if (i < 0) { + canonselphy_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } remain -= i; } } + *vjob = job; + return CUPS_BACKEND_OK; } -static int canonselphy_main_loop(void *vctx, int copies) { +static int canonselphy_main_loop(void *vctx, const void *vjob) { struct canonselphy_ctx *ctx = vctx; uint8_t rdbuf[READBACK_LEN], rdbuf2[READBACK_LEN]; int last_state = -1, state = S_IDLE; int ret, num; + int copies; + + const struct canonselphy_printjob *job = vjob; + + if (!ctx) + return CUPS_BACKEND_FAILED; + if (!job) + return CUPS_BACKEND_FAILED; + + copies = job->copies; /* Read in the printer status to clear last state */ ret = read_data(ctx->dev, ctx->endp_up, @@ -815,14 +871,6 @@ static int canonselphy_main_loop(void *vctx, int copies) { if (ret < 0) return CUPS_BACKEND_FAILED; - - ATTR("marker-colors=#00FFFF#FF00FF#FFFF00\n"); - ATTR("marker-high-levels=100\n"); - ATTR("marker-low-levels=10\n"); - ATTR("marker-names='%s'\n", ctx->printer->pgcode_names? ctx->printer->pgcode_names(rdbuf[ctx->printer->paper_code_offset]) : "Unknown"); - ATTR("marker-types=ribbonWax\n"); - ATTR("marker-levels=%d\n", -3); /* ie Unknown but OK */ - top: if (state != last_state) { @@ -843,6 +891,7 @@ top: /* Error detection */ if (ctx->printer->error_detect(rdbuf)) { + dump_markers(&ctx->marker, 1, 0); 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))) @@ -866,10 +915,10 @@ top: break; /* Make sure paper/ribbon is correct */ - if (ctx->paper_code != -1) { + if (job->paper_code != -1) { if (ctx->type == P_CP_XXX) { uint8_t pc = rdbuf[ctx->printer->paper_code_offset]; - if (((pc >> 4) & 0xf) != (ctx->paper_code & 0x0f)) { + if (((pc >> 4) & 0xf) != (job->paper_code & 0x0f)) { if (pc & 0xf0) { ERROR("Incorrect paper tray loaded, aborting job!\n"); @@ -879,7 +928,7 @@ top: return CUPS_BACKEND_STOP; } } - if ((pc & 0xf) != (ctx->paper_code & 0xf)) { + if ((pc & 0xf) != (job->paper_code & 0xf)) { if (pc & 0x0f) { ERROR("Incorrect ribbon loaded, aborting job!\n"); return CUPS_BACKEND_HOLD; @@ -891,9 +940,9 @@ top: } } else { if (rdbuf[ctx->printer->paper_code_offset] != - ctx->paper_code) { + job->paper_code) { ERROR("Incorrect media/ribbon loaded (%02x vs %02x), aborting job!\n", - ctx->paper_code, + job->paper_code, rdbuf[ctx->printer->paper_code_offset]); return CUPS_BACKEND_HOLD; /* Hold this job, don't stop queue */ } @@ -905,14 +954,14 @@ top: if (ribbon == 0xf) { ERROR("No ribbon loaded, aborting!\n"); return CUPS_BACKEND_STOP; - } else if (ribbon != ctx->paper_code) { + } else if (ribbon != job->paper_code) { ERROR("Incorrect ribbon loaded, aborting job!\n"); return CUPS_BACKEND_HOLD; } if (paper == 0xf) { ERROR("No paper tray loaded, aborting!\n"); return CUPS_BACKEND_STOP; - } else if (paper != ctx->paper_code) { + } else if (paper != job->paper_code) { ERROR("Incorrect paper loaded, aborting job!\n"); return CUPS_BACKEND_HOLD; } @@ -923,7 +972,7 @@ top: 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))) + if ((ret = send_data(ctx->dev, ctx->endp_down, job->header, ctx->printer->init_length))) return CUPS_BACKEND_FAILED; state = S_PRINTER_INIT_SENT; @@ -934,19 +983,19 @@ top: } break; case S_PRINTER_READY_Y: - if (ctx->bw_mode) + if (job->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))) + if ((ret = send_data(ctx->dev, ctx->endp_down, job->plane_y, job->plane_len))) return CUPS_BACKEND_FAILED; 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) + if (job->bw_mode) state = S_PRINTER_DONE; else state = S_PRINTER_READY_M; @@ -955,7 +1004,7 @@ top: 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))) + if ((ret = send_data(ctx->dev, ctx->endp_down, job->plane_m, job->plane_len))) return CUPS_BACKEND_FAILED; state = S_PRINTER_M_SENT; @@ -968,7 +1017,7 @@ top: 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))) + if ((ret = send_data(ctx->dev, ctx->endp_down, job->plane_c, job->plane_len))) return CUPS_BACKEND_FAILED; state = S_PRINTER_C_SENT; @@ -996,7 +1045,7 @@ top: if (ctx->printer->foot_length) { INFO("Cleaning up\n"); - if ((ret = send_data(ctx->dev, ctx->endp_down, ctx->footer, ctx->printer->foot_length))) + if ((ret = send_data(ctx->dev, ctx->endp_down, job->footer, ctx->printer->foot_length))) return CUPS_BACKEND_FAILED; } state = S_FINISHED; @@ -1030,12 +1079,15 @@ static int canonselphy_cmdline_arg(void *vctx, int argc, char **argv) if (!ctx) return -1; - while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "R")) >= 0) { + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "Rs")) >= 0) { switch(i) { GETOPT_PROCESS_GLOBAL case 'R': canonselphy_send_reset(ctx); break; + case 's': + canonselphy_get_status(ctx); + break; } if (j) return j; @@ -1047,51 +1099,105 @@ static int canonselphy_cmdline_arg(void *vctx, int argc, char **argv) static void canonselphy_cmdline(void) { DEBUG("\t\t[ -R ] # Reset printer\n"); + DEBUG("\t\t[ -s ] # Query printer status\n"); +} + +static int canonselphy_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct canonselphy_ctx *ctx = vctx; + uint8_t rdbuf[READBACK_LEN]; + int ret, num; + + /* Read in the printer status, twice. */ + ret = read_data(ctx->dev, ctx->endp_up, + (uint8_t*) rdbuf, READBACK_LEN, &num); + if (ret < 0) + return CUPS_BACKEND_FAILED; + + ret = read_data(ctx->dev, ctx->endp_up, + (uint8_t*) rdbuf, READBACK_LEN, &num); + + if (ret < 0) + return CUPS_BACKEND_FAILED; + + if (ctx->printer->error_detect(rdbuf)) + ctx->marker.levelnow = 0; + else + ctx->marker.levelnow = -3; + + *markers = &ctx->marker; + *count = 1; + + return CUPS_BACKEND_OK; } +static const char *canonselphy_prefixes[] = { + "canonselphy", // Family name + "canon-cp10", "canon-cp100", "canon-cp200", "canon-cp220", + "canon-cp300", "canon-cp330", "canon-cp400", "canon-cp500", + "canon-cp510", "canon-cp520", "canon-cp530", "canon-cp600", + "canon-cp710", "canon-cp720", "canon-cp730", "canon-cp740", + "canon-cp750", "canon-cp760", "canon-cp770", "canon-cp780", + "canon-cp790", "canon-cp800", "canon-cp810", "canon-cp900", + "canon-es1", "canon-es2", "canon-es20", "canon-es3", + "canon-es30", "canon-es40", + // backwards compatibility + "selphycp10", "selphycp100", "selphycp200", "selphycp220", + "selphycp300", "selphycp330", "selphycp400", "selphycp500", + "selphycp510", "selphycp520", "selphycp530", "selphycp600", + "selphycp710", "selphycp720", "selphycp730", "selphycp740", + "selphycp750", "selphycp760", "selphycp770", "selphycp780", + "selphycp790", "selphycp800", "selphycp810", "selphycp900", + "selphyes1", "selphyes2", "selphyes20", "selphyes3", + "selphyes30", "selphyes40", + NULL +}; + struct dyesub_backend canonselphy_backend = { - .name = "Canon SELPHY CP/ES", - .version = "0.94", - .uri_prefix = "canonselphy", + .name = "Canon SELPHY CP/ES (legacy)", + .version = "0.104", + .uri_prefixes = canonselphy_prefixes, .cmdline_usage = canonselphy_cmdline, .cmdline_arg = canonselphy_cmdline_arg, .init = canonselphy_init, .attach = canonselphy_attach, .teardown = canonselphy_teardown, .read_parse = canonselphy_read_parse, + .cleanup_job = canonselphy_cleanup_job, .main_loop = canonselphy_main_loop, + .query_markers = canonselphy_query_markers, .devices = { - { USB_VID_CANON, USB_PID_CANON_CP10, P_CP10, ""}, - { USB_VID_CANON, USB_PID_CANON_CP100, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP200, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP220, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP300, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP330, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP400, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP500, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP510, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP520, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP530, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP600, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP710, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP720, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP730, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP740, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP750, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP760, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP770, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP780, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP790, P_CP790, ""}, - { USB_VID_CANON, USB_PID_CANON_CP800, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP810, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP900, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_ES1, P_ES1, ""}, - { USB_VID_CANON, USB_PID_CANON_ES2, P_ES2_20, ""}, - { USB_VID_CANON, USB_PID_CANON_ES20, P_ES2_20, ""}, - { USB_VID_CANON, USB_PID_CANON_ES3, P_ES3_30, ""}, - { USB_VID_CANON, USB_PID_CANON_ES30, P_ES3_30, ""}, - { USB_VID_CANON, USB_PID_CANON_ES40, P_ES40, ""}, - { 0, 0, 0, ""} + { USB_VID_CANON, USB_PID_CANON_CP10, P_CP10, NULL, "canon-cp10"}, + { USB_VID_CANON, USB_PID_CANON_CP100, P_CP_XXX, NULL, "canon-cp100"}, + { USB_VID_CANON, USB_PID_CANON_CP200, P_CP_XXX, NULL, "canon-cp200"}, + { USB_VID_CANON, USB_PID_CANON_CP220, P_CP_XXX, NULL, "canon-cp220"}, + { USB_VID_CANON, USB_PID_CANON_CP300, P_CP_XXX, NULL, "selpyhcp300"}, + { USB_VID_CANON, USB_PID_CANON_CP330, P_CP_XXX, NULL, "canon-cp330"}, + { USB_VID_CANON, USB_PID_CANON_CP400, P_CP_XXX, NULL, "canon-cp400"}, + { USB_VID_CANON, USB_PID_CANON_CP500, P_CP_XXX, NULL, "canon-cp500"}, + { USB_VID_CANON, USB_PID_CANON_CP510, P_CP_XXX, NULL, "canon-cp510"}, + { USB_VID_CANON, USB_PID_CANON_CP520, P_CP_XXX, NULL, "canon-cp520"}, + { USB_VID_CANON, USB_PID_CANON_CP530, P_CP_XXX, NULL, "canon-cp530"}, + { USB_VID_CANON, USB_PID_CANON_CP600, P_CP_XXX, NULL, "canon-cp600"}, + { USB_VID_CANON, USB_PID_CANON_CP710, P_CP_XXX, NULL, "canon-cp710"}, + { USB_VID_CANON, USB_PID_CANON_CP720, P_CP_XXX, NULL, "canon-cp720"}, + { USB_VID_CANON, USB_PID_CANON_CP730, P_CP_XXX, NULL, "canon-cp730"}, + { USB_VID_CANON, USB_PID_CANON_CP740, P_CP_XXX, NULL, "canon-cp740"}, + { USB_VID_CANON, USB_PID_CANON_CP750, P_CP_XXX, NULL, "canon-cp750"}, + { USB_VID_CANON, USB_PID_CANON_CP760, P_CP_XXX, NULL, "canon-cp760"}, + { USB_VID_CANON, USB_PID_CANON_CP770, P_CP_XXX, NULL, "canon-cp770"}, + { USB_VID_CANON, USB_PID_CANON_CP780, P_CP_XXX, NULL, "canon-cp780"}, + { USB_VID_CANON, USB_PID_CANON_CP790, P_CP790, NULL, "canon-cp790"}, + { USB_VID_CANON, USB_PID_CANON_CP800, P_CP_XXX, NULL, "canon-cp800"}, + { USB_VID_CANON, USB_PID_CANON_CP810, P_CP_XXX, NULL, "canon-cp810"}, + { USB_VID_CANON, USB_PID_CANON_CP900, P_CP_XXX, NULL, "canon-cp900"}, + { USB_VID_CANON, USB_PID_CANON_ES1, P_ES1, NULL, "canon-es1"}, + { USB_VID_CANON, USB_PID_CANON_ES2, P_ES2_20, NULL, "canon-es2"}, + { USB_VID_CANON, USB_PID_CANON_ES20, P_ES2_20, NULL, "canon-es20"}, + { USB_VID_CANON, USB_PID_CANON_ES3, P_ES3_30, NULL, "canon-es3"}, + { USB_VID_CANON, USB_PID_CANON_ES30, P_ES3_30, NULL, "canon-es30"}, + { USB_VID_CANON, USB_PID_CANON_ES40, P_ES40, NULL, "canon-es40"}, + { 0, 0, 0, NULL, NULL} } }; /* @@ -1184,10 +1290,8 @@ struct dyesub_backend canonselphy_backend = { 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. + [pg2] is: 0x00 for Normal papers + 0x01 for Label papers *************************************************************************** Selphy ES3/30: diff --git a/src/cups/backend_canonselphyneo.c b/src/cups/backend_canonselphyneo.c index 85f51b2..93f539d 100644 --- a/src/cups/backend_canonselphyneo.c +++ b/src/cups/backend_canonselphyneo.c @@ -1,7 +1,7 @@ /* * Canon SELPHY CPneo series CUPS backend -- libusb-1.0 version * - * (c) 2016 Solomon Peachy <pizza@shaftnet.org> + * (c) 2016-2018 Solomon Peachy <pizza@shaftnet.org> * * The latest version of this program can be found at: * @@ -18,11 +18,12 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * + * SPDX-License-Identifier: GPL-2.0+ + * */ #include <stdio.h> @@ -45,6 +46,7 @@ #define USB_PID_CANON_CP910 0x327a #define USB_PID_CANON_CP1000 0x32ae #define USB_PID_CANON_CP1200 0x32b1 +#define USB_PID_CANON_CP1300 0x32db /* Header data structure */ struct selphyneo_hdr { @@ -59,13 +61,20 @@ struct selphyneo_readback { } __attribute((packed)); /* Private data structure */ +struct selphyneo_printjob { + uint8_t *databuf; + uint32_t datalen; + + int copies; +}; + struct selphyneo_ctx { struct libusb_device_handle *dev; uint8_t endp_up; uint8_t endp_down; + int type; - uint8_t *databuf; - uint32_t datalen; + struct marker marker; }; static char *selphyneo_statuses(uint8_t sts) @@ -97,6 +106,8 @@ static char *selphyneo_errors(uint8_t err) return "Paper Feed"; case 0x03: return "No Paper"; + case 0x05: + return "Incorrect Paper loaded"; case 0x06: return "Ink Cassette Empty"; case 0x07: @@ -105,6 +116,8 @@ static char *selphyneo_errors(uint8_t err) return "No Paper and Ink"; case 0x0A: return "Incorrect media for job"; + case 0x0B: + return "Paper jam"; default: return "Unknown Error"; } @@ -140,6 +153,34 @@ static int selphyneo_send_reset(struct selphyneo_ctx *ctx) return CUPS_BACKEND_OK; } +static int selphyneo_get_status(struct selphyneo_ctx *ctx) +{ + struct selphyneo_readback rdback; + int ret, num; + + /* Read in the printer status to clear last state */ + ret = read_data(ctx->dev, ctx->endp_up, + (uint8_t*) &rdback, sizeof(rdback), &num); + + if (ret < 0) + return CUPS_BACKEND_FAILED; + + /* And again, for the markers */ + ret = read_data(ctx->dev, ctx->endp_up, + (uint8_t*) &rdback, sizeof(rdback), &num); + + if (ret < 0) + return CUPS_BACKEND_FAILED; + + INFO("Printer state: %s\n", selphyneo_statuses(rdback.data[0])); + INFO("Media type: %s\n", selphynew_pgcodes(rdback.data[6])); + if (rdback.data[2]) { + INFO("Printer error: %s\n", selphyneo_errors(rdback.data[2])); + } + + return CUPS_BACKEND_OK; +} + static void *selphyneo_init(void) { struct selphyneo_ctx *ctx = malloc(sizeof(struct selphyneo_ctx)); @@ -154,21 +195,60 @@ static void *selphyneo_init(void) extern struct dyesub_backend selphyneo_backend; -static void selphyneo_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int selphyneo_attach(void *vctx, struct libusb_device_handle *dev, int type, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct selphyneo_ctx *ctx = vctx; - struct libusb_device *device; - struct libusb_device_descriptor desc; + struct selphyneo_readback rdback; + int ret, num; UNUSED(jobid); ctx->dev = dev; ctx->endp_up = endp_up; ctx->endp_down = endp_down; + ctx->type = type; + + if (test_mode < TEST_MODE_NOATTACH) { + /* Read in the printer status to clear last state */ + ret = read_data(ctx->dev, ctx->endp_up, + (uint8_t*) &rdback, sizeof(rdback), &num); + + if (ret < 0) + return CUPS_BACKEND_FAILED; + + /* And again, for the markers */ + ret = read_data(ctx->dev, ctx->endp_up, + (uint8_t*) &rdback, sizeof(rdback), &num); + + if (ret < 0) + return CUPS_BACKEND_FAILED; + } else { + rdback.data[2] = 0; + rdback.data[6] = 0x01; + if (getenv("MEDIA_CODE")) + rdback.data[6] = atoi(getenv("MEDIA_CODE")); + } + + ctx->marker.color = "#00FFFF#FF00FF#FFFF00"; + ctx->marker.name = selphynew_pgcodes(rdback.data[6]); + ctx->marker.levelmax = -1; + if (rdback.data[2]) { + ctx->marker.levelnow = 0; + } else { + ctx->marker.levelnow = -3; + } + + return CUPS_BACKEND_OK; +} + +static void selphyneo_cleanup_job(const void *vjob) { + const struct selphyneo_printjob *job = vjob; - device = libusb_get_device(dev); - libusb_get_device_descriptor(device, &desc); + if (job->databuf) + free(job->databuf); + + free((void*)job); } static void selphyneo_teardown(void *vctx) { @@ -177,29 +257,39 @@ static void selphyneo_teardown(void *vctx) { if (!ctx) return; - if (ctx->databuf) - free(ctx->databuf); - free(ctx); } -static int selphyneo_read_parse(void *vctx, int data_fd) +static int selphyneo_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { struct selphyneo_ctx *ctx = vctx; struct selphyneo_hdr hdr; int i, remain; + struct selphyneo_printjob *job = NULL; + if (!ctx) return CUPS_BACKEND_FAILED; + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; + } + memset(job, 0, sizeof(*job)); + job->copies = copies; + /* Read the header.. */ i = read(data_fd, &hdr, sizeof(hdr)); if (i != sizeof(hdr)) { - if (i == 0) + if (i == 0) { + selphyneo_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } ERROR("Read failed (%d/%d)\n", i, (int)sizeof(hdr)); perror("ERROR: Read failed"); + selphyneo_cleanup_job(job); return CUPS_BACKEND_FAILED; } @@ -213,53 +303,63 @@ static int selphyneo_read_parse(void *vctx, int data_fd) default: ERROR("Unknown print size! (%02x, %ux%u)\n", hdr.data[10], le32_to_cpu(hdr.cols), le32_to_cpu(hdr.rows)); + selphyneo_cleanup_job(job); return CUPS_BACKEND_CANCEL; } + // XXX Sanity check job against loaded media? + /* Allocate a buffer */ - ctx->datalen = 0; - ctx->databuf = malloc(remain + sizeof(hdr)); - if (!ctx->databuf) { + job->datalen = 0; + job->databuf = malloc(remain + sizeof(hdr)); + if (!job->databuf) { ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_FAILED; + selphyneo_cleanup_job(job); + return CUPS_BACKEND_RETRY_CURRENT; } /* Store the read-in header */ - memcpy(ctx->databuf, &hdr, sizeof(hdr)); - ctx->datalen += sizeof(hdr); + memcpy(job->databuf, &hdr, sizeof(hdr)); + job->datalen += sizeof(hdr); /* Read in data */ while (remain > 0) { - i = read(data_fd, ctx->databuf + ctx->datalen, remain); - if (i < 0) + i = read(data_fd, job->databuf + job->datalen, remain); + if (i < 0) { + selphyneo_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } remain -= i; - ctx->datalen += i; + job->datalen += i; } + *vjob = job; + return CUPS_BACKEND_OK; } -static int selphyneo_main_loop(void *vctx, int copies) { +static int selphyneo_main_loop(void *vctx, const void *vjob) { struct selphyneo_ctx *ctx = vctx; struct selphyneo_readback rdback; int ret, num; + int copies; - /* Read in the printer status to clear last state */ - ret = read_data(ctx->dev, ctx->endp_up, - (uint8_t*) &rdback, sizeof(rdback), &num); + const struct selphyneo_printjob *job = vjob; - /* And again, for the markers */ + if (!ctx) + return CUPS_BACKEND_FAILED; + if (!job) + return CUPS_BACKEND_FAILED; + + copies = job->copies; + + /* Read in the printer status to clear last state */ ret = read_data(ctx->dev, ctx->endp_up, (uint8_t*) &rdback, sizeof(rdback), &num); - ATTR("marker-colors=#00FFFF#FF00FF#FFFF00\n"); - ATTR("marker-high-levels=100\n"); - ATTR("marker-low-levels=10\n"); - ATTR("marker-names='%s'\n", selphynew_pgcodes(rdback.data[6])); - - ATTR("marker-types=ribbonWax\n"); + if (ret < 0) + return CUPS_BACKEND_FAILED; top: INFO("Waiting for printer idle\n"); @@ -281,18 +381,20 @@ top: break; case 0x0A: ERROR("Printer error: %s (%02x)\n", selphyneo_errors(rdback.data[2]), rdback.data[2]); - ATTR("marker-levels=%d\n", 0); + ctx->marker.levelnow = 0; + dump_markers(&ctx->marker, 1, 0); return CUPS_BACKEND_CANCEL; default: ERROR("Printer error: %s (%02x)\n", selphyneo_errors(rdback.data[2]), rdback.data[2]); - ATTR("marker-levels=%d\n", 0); + ctx->marker.levelnow = 0; + dump_markers(&ctx->marker, 1, 0); return CUPS_BACKEND_STOP; } sleep(1); } while(1); - ATTR("marker-levels=%d\n", -3); /* ie Unknown but OK */ + dump_markers(&ctx->marker, 1, 0); INFO("Sending spool data\n"); /* Send the data over in 256K chunks */ @@ -301,10 +403,10 @@ top: int sent = 0; while (chunk > 0) { if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->databuf + sent, chunk))) + job->databuf + sent, chunk))) return CUPS_BACKEND_FAILED; sent += chunk; - chunk = ctx->datalen - sent; + chunk = job->datalen - sent; if (chunk > 256*1024) chunk = 256*1024; } @@ -314,6 +416,9 @@ top: ret = read_data(ctx->dev, ctx->endp_up, (uint8_t*) &rdback, sizeof(rdback), &num); + if (ret < 0) + return CUPS_BACKEND_FAILED; + INFO("Waiting for printer acknowledgement\n"); do { ret = read_data(ctx->dev, ctx->endp_up, @@ -332,15 +437,17 @@ top: break; case 0x0A: ERROR("Printer error: %s (%02x)\n", selphyneo_errors(rdback.data[2]), rdback.data[2]); - ATTR("marker-levels=%d\n", 0); + ctx->marker.levelnow = 0; + dump_markers(&ctx->marker, 1, 0); return CUPS_BACKEND_CANCEL; default: ERROR("Printer error: %s (%02x)\n", selphyneo_errors(rdback.data[2]), rdback.data[2]); - ATTR("marker-levels=%d\n", 0); + ctx->marker.levelnow = 0; + dump_markers(&ctx->marker, 1, 0); return CUPS_BACKEND_STOP; } - if (rdback.data[0] > 0x02 && fast_return) { + if (rdback.data[0] > 0x02 && fast_return && copies <= 1) { INFO("Fast return mode enabled.\n"); break; } @@ -369,12 +476,15 @@ static int selphyneo_cmdline_arg(void *vctx, int argc, char **argv) if (!ctx) return -1; - while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "R")) >= 0) { + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "Rs")) >= 0) { switch(i) { GETOPT_PROCESS_GLOBAL case 'R': selphyneo_send_reset(ctx); break; + case 's': + selphyneo_get_status(ctx); + break; } if (j) return j; @@ -386,25 +496,68 @@ static int selphyneo_cmdline_arg(void *vctx, int argc, char **argv) static void selphyneo_cmdline(void) { DEBUG("\t\t[ -R ] # Reset printer\n"); + DEBUG("\t\t[ -s ] # Query printer status\n"); } +static int selphyneo_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct selphyneo_ctx *ctx = vctx; + struct selphyneo_readback rdback; + int ret, num; + + /* Read in the printer status to clear last state */ + ret = read_data(ctx->dev, ctx->endp_up, + (uint8_t*) &rdback, sizeof(rdback), &num); + + if (ret < 0) + return CUPS_BACKEND_FAILED; + + /* And again, for the markers */ + ret = read_data(ctx->dev, ctx->endp_up, + (uint8_t*) &rdback, sizeof(rdback), &num); + + if (ret < 0) + return CUPS_BACKEND_FAILED; + + if (rdback.data[2]) + ctx->marker.levelnow = 0; + else + ctx->marker.levelnow = -3; + + *markers = &ctx->marker; + *count = 1; + + return CUPS_BACKEND_OK; +} + +static const char *canonselphyneo_prefixes[] = { + "canonselphyneo", // Family name + "canon-cp820", "canon-cp910", "canon-cp1000", "canon-cp1200", "canon-cp1300", + // backwards compatibility + "selphycp820", "selphycp910", "selphycp1000", "selphycp1200", "selphycp1300", + NULL +}; + struct dyesub_backend canonselphyneo_backend = { - .name = "Canon SELPHY CPneo", - .version = "0.08", - .uri_prefix = "canonselphyneo", + .name = "Canon SELPHY CP (new)", + .version = "0.20", + .uri_prefixes = canonselphyneo_prefixes, .cmdline_usage = selphyneo_cmdline, .cmdline_arg = selphyneo_cmdline_arg, .init = selphyneo_init, .attach = selphyneo_attach, + .cleanup_job = selphyneo_cleanup_job, .teardown = selphyneo_teardown, .read_parse = selphyneo_read_parse, .main_loop = selphyneo_main_loop, + .query_markers = selphyneo_query_markers, .devices = { - { USB_VID_CANON, USB_PID_CANON_CP820, P_CP910, ""}, - { USB_VID_CANON, USB_PID_CANON_CP910, P_CP910, ""}, - { USB_VID_CANON, USB_PID_CANON_CP1000, P_CP910, ""}, - { USB_VID_CANON, USB_PID_CANON_CP1200, P_CP910, ""}, - { 0, 0, 0, ""} + { USB_VID_CANON, USB_PID_CANON_CP820, P_CP910, NULL, "canon-cp820"}, + { USB_VID_CANON, USB_PID_CANON_CP910, P_CP910, NULL, "canon-cp910"}, + { USB_VID_CANON, USB_PID_CANON_CP1000, P_CP910, NULL, "canon-cp1000"}, + { USB_VID_CANON, USB_PID_CANON_CP1200, P_CP910, NULL, "canon-cp1200"}, + { USB_VID_CANON, USB_PID_CANON_CP1300, P_CP910, NULL, "canon-cp1300"}, + { 0, 0, 0, NULL, NULL} } }; /* @@ -468,9 +621,11 @@ struct dyesub_backend canonselphyneo_backend = { 00 None 02 No Paper (?) 03 No Paper + 05 Wrong Paper 07 No Ink 09 No Paper and Ink 0A Media/Job mismatch + 0B Paper Jam ZZ == Media? diff --git a/src/cups/backend_citizencw01.c b/src/cups/backend_citizencw01.c deleted file mode 100644 index 46cb8ee..0000000 --- a/src/cups/backend_citizencw01.c +++ /dev/null @@ -1,908 +0,0 @@ -/* - * Citizen CW-01 Photo Printer CUPS backend -- libusb-1.0 version - * - * (c) 2014-2016 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> - -#define BACKEND cw01_backend - -#include "backend_common.h" - -#define USB_VID_CITIZEN 0x1343 -#define USB_PID_CITIZEN_CW01 0x0002 // Maybe others? -//#define USB_PID_OLMEC_OP900 XXXX - -/* Private data structure */ -struct cw01_spool_hdr { - uint8_t type; /* 0x00 -> 0x06 */ - uint8_t res; /* vertical resolution; 0x00 == 334dpi, 0x01 == 600dpi */ - uint8_t copies; /* number of prints */ - uint8_t null0; - uint32_t plane_len; /* LE */ - uint8_t null1[4]; -}; -#define DPI_334 0 -#define DPI_600 1 - -#define TYPE_DSC 0 -#define TYPE_L 1 -#define TYPE_PC 2 -#define TYPE_2DSC 3 -#define TYPE_3L 4 -#define TYPE_A5 5 -#define TYPE_A6 6 - -#define SPOOL_PLANE_HDR_LEN 1064 -#define PRINTER_PLANE_HDR_LEN 1088 - -struct cw01_ctx { - struct libusb_device_handle *dev; - uint8_t endp_up; - uint8_t endp_down; - int type; - - uint8_t *databuf; - struct cw01_spool_hdr hdr; -}; - -struct cw01_cmd { - uint8_t esc; /* Fixed at ascii ESC, aka 0x1B */ - uint8_t p; /* Fixed at ascii 'P' aka 0x50 */ - uint8_t arg1[6]; - uint8_t arg2[16]; - uint8_t arg3[8]; /* Decimal value of arg4's length, or empty */ - uint8_t arg4[0]; /* Extra payload if arg3 is non-empty - Doesn't have to be sent in the same URB */ - - /* All unused elements are set to 0x20 (ie ascii space) */ -}; - -#define min(__x, __y) ((__x) < (__y)) ? __x : __y - -static void cw01_build_cmd(struct cw01_cmd *cmd, char *arg1, char *arg2, uint32_t arg3_len) -{ - memset(cmd, 0x20, sizeof(*cmd)); - cmd->esc = 0x1b; - cmd->p = 0x50; - memcpy(cmd->arg1, arg1, min(strlen(arg1), sizeof(cmd->arg1))); - memcpy(cmd->arg2, arg2, min(strlen(arg2), sizeof(cmd->arg2))); - if (arg3_len) { - char buf[9]; - snprintf(buf, sizeof(buf), "%08u", arg3_len); - memcpy(cmd->arg3, buf, 8); - } - -} - -static void cw01_cleanup_string(char *start, int len) -{ - char *ptr = strchr(start, 0x0d); - - if (ptr && (ptr - start < len)) { - *ptr = 0x00; /* If there is a <CR>, terminate there */ - len = ptr - start; - } else { - start[--len] = 0x00; /* force null-termination */ - } - - /* Trim trailing spaces */ - while (len && start[len-1] == ' ') { - start[--len] = 0; - } -} - -static char *cw01_media_types(char *str) -{ - char tmp[4]; - int i; - - memcpy(tmp, str + 4, 3); - tmp[3] = 0; - - i = atoi(tmp); - - switch (i) { - case 100: return "UNK 100"; - case 110: return "UNK 110"; - case 200: return "?? 5x3.5 (L)"; - case 210: return "?? 5x7 (2L)"; - case 300: return "?? 6x4 (PC)"; - case 400: return "?? 6x9 (A5W)"; - default: - break; - } - - return "Unknown type"; -} - -static char *cw01_statuses(char *str) -{ - char tmp[6]; - int i; - memcpy(tmp, str, 5); - tmp[5] = 0; - - i = atoi(tmp); - - switch (i) { - case 0: return "Idle"; - case 1: return "Printing"; - case 500: return "Cooling Print Head"; - case 510: return "Cooling Paper Motor"; - case 1000: return "Cover Open"; - case 1010: return "No Scrap Box"; - case 1100: return "Paper End"; - case 1200: return "Ribbon End"; - case 1300: return "Paper Jam"; - case 1400: return "Ribbon Error"; - case 1500: return "Paper Definition Error"; - case 1600: return "Data Error"; - case 2000: return "Head Voltage Error"; - case 2100: return "Head Position Error"; - case 2200: return "Power Supply Fan Error"; - case 2300: return "Cutter Error"; - case 2400: return "Pinch Roller Error"; - case 2500: return "Abnormal Head Temperature"; - case 2600: return "Abnormal Media Temperature"; - case 2610: return "Abnormal Paper Motor Temperature"; - case 2700: return "Ribbon Tension Error"; - case 2800: return "RF-ID Module Error"; - case 3000: return "System Error"; - default: - break; - } - - return "Unknown Error"; -} - -static int cw01_do_cmd(struct cw01_ctx *ctx, - struct cw01_cmd *cmd, - uint8_t *data, int len) -{ - int ret; - - if ((ret = send_data(ctx->dev, ctx->endp_down, - (uint8_t*)cmd, sizeof(*cmd)))) - return ret; - - if (data && len) - if ((ret = send_data(ctx->dev, ctx->endp_down, - data, len))) - return ret; - - return CUPS_BACKEND_OK; -} - -static uint8_t *cw01_resp_cmd(struct cw01_ctx *ctx, - struct cw01_cmd *cmd, - int *len) -{ - char tmp[9]; - uint8_t *respbuf; - - int ret, i, num = 0; - - memset(tmp, 0, sizeof(tmp)); - - if ((ret = cw01_do_cmd(ctx, cmd, NULL, 0))) - return NULL; - - /* Read in the response header */ - ret = read_data(ctx->dev, ctx->endp_up, - (uint8_t*)tmp, 8, &num); - if (ret < 0) - return NULL; - - if (num != 8) { - ERROR("Short read! (%d/%d)\n", num, 8); - return NULL; - } - - i = atoi(tmp); /* Length of payload in bytes, possibly padded */ - respbuf = malloc(i); - if (!respbuf) { - ERROR("Memory Allocation Failure!\n"); - return NULL; - } - - /* Read in the actual response */ - ret = read_data(ctx->dev, ctx->endp_up, - respbuf, i, &num); - if (ret < 0) { - free(respbuf); - return NULL; - } - - if (num != i) { - ERROR("Short read! (%d/%d)\n", num, i); - free(respbuf); - return NULL; - } - - *len = num; - return respbuf; -} - -static int cw01_query_serno(struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, char *buf, int buf_len) -{ - struct cw01_cmd cmd; - uint8_t *resp; - int len = 0; - - struct cw01_ctx ctx = { - .dev = dev, - .endp_up = endp_up, - .endp_down = endp_down, - }; - - /* Get Serial Number */ - cw01_build_cmd(&cmd, "INFO", "SERIAL_NUMBER", 0); - - resp = cw01_resp_cmd(&ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - strncpy(buf, (char*)resp, buf_len); - buf[buf_len-1] = 0; - - free(resp); - - return CUPS_BACKEND_OK; -} - -static void *cw01_init(void) -{ - struct cw01_ctx *ctx = malloc(sizeof(struct cw01_ctx)); - if (!ctx) { - ERROR("Memory Allocation Failure!\n"); - return NULL; - } - memset(ctx, 0, sizeof(struct cw01_ctx)); - - return ctx; -} - -static void cw01_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) -{ - struct cw01_ctx *ctx = vctx; - struct libusb_device *device; - struct libusb_device_descriptor desc; - - UNUSED(jobid); - - ctx->dev = dev; - ctx->endp_up = endp_up; - ctx->endp_down = endp_down; - - device = libusb_get_device(dev); - libusb_get_device_descriptor(device, &desc); - - ctx->type = lookup_printer_type(&cw01_backend, - desc.idVendor, desc.idProduct); -} - -static void cw01_teardown(void *vctx) { - struct cw01_ctx *ctx = vctx; - - if (!ctx) - return; - - if (ctx->databuf) - free(ctx->databuf); - free(ctx); -} - -static int cw01_read_parse(void *vctx, int data_fd) { - struct cw01_ctx *ctx = vctx; - int i, j, remain; - - if (!ctx) - return CUPS_BACKEND_FAILED; - - if (ctx->databuf) { - free(ctx->databuf); - ctx->databuf = NULL; - } - - i = read(data_fd, (uint8_t*) &ctx->hdr, sizeof(struct cw01_spool_hdr)); - - if (i < 0) - return i; - if (i == 0) - return CUPS_BACKEND_CANCEL; - - if (i < (int)sizeof(struct cw01_spool_hdr)) - return CUPS_BACKEND_CANCEL; - - if (ctx->hdr.type > 0x06 || ctx->hdr.res > 0x01) { - ERROR("Unrecognized header data format!\n"); - return CUPS_BACKEND_CANCEL; - } - ctx->hdr.plane_len = le32_to_cpu(ctx->hdr.plane_len); - remain = ctx->hdr.plane_len * 3; - ctx->databuf = malloc(remain); - if (!ctx->databuf) { - ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_CANCEL; - } - - j = 0; - while (remain) { - i = read(data_fd, ctx->databuf + j, remain); - - if (i < 0) - return i; - - remain -= i; - j += i; - } - - return CUPS_BACKEND_OK; -} - -static int cw01_main_loop(void *vctx, int copies) { - struct cw01_ctx *ctx = vctx; - int ret; - struct cw01_cmd cmd; - uint8_t *resp = NULL; - int len = 0; - uint32_t tmp; - uint8_t *ptr; - char buf[9]; - uint8_t plane_hdr[PRINTER_PLANE_HDR_LEN]; - - if (!ctx) - return CUPS_BACKEND_FAILED; - -top: - - if (resp) free(resp); - - /* Query status */ - cw01_build_cmd(&cmd, "STATUS", "", 0); - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - cw01_cleanup_string((char*)resp, len); - - /* If we're not idle */ - if (strcmp("00000", (char*)resp)) { - if (!strcmp("00001", (char*)resp)) { - free(resp); - /* Query buffer state */ - cw01_build_cmd(&cmd, "INFO", "FREE_PBUFFER", 0); - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - cw01_cleanup_string((char*)resp, len); - - /* Check to see if we have sufficient buffers */ - // XXX audit these rules...? - if (!strcmp("FBP00", (char*)resp) || - (ctx->hdr.res == DPI_600 && !strcmp("FBP01", (char*)resp))) { - INFO("Insufficient printer buffers, retrying...\n"); - sleep(1); - goto top; - } - } else { - ERROR("Printer Status: %s\n", cw01_statuses((char*)resp)); - free(resp); - return CUPS_BACKEND_RETRY_CURRENT; - } - } - - free(resp); - /* Get Vertical resolution */ - cw01_build_cmd(&cmd, "INFO", "RESOLUTION_V", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - -#if 0 - if (ctx->hdr.res == DPI_600 && strcmp("RV0334", *char*)resp) { - ERROR("600DPI prints not yet supported, need 600DPI CWD load"); - return CUPS_BACKEND_CANCEL; - } -#endif - - free(resp); - resp = NULL; - - /* Set print quantity */ // XXX check against remaining print count - - cw01_build_cmd(&cmd, "CNTRL", "QTY", 8); - snprintf(buf, sizeof(buf), "%07d\r", copies); - ret = cw01_do_cmd(ctx, &cmd, (uint8_t*) buf, 8); - if (ret) - return CUPS_BACKEND_FAILED; - - /* Cutter control. ??? */ - // cw01_build_cmd(&cmd, "CNTRL", "CUTTER", 8); - //snprintf(buf, sizeof(buf), "%08d", ???); - //ret = cw01_do_cmd(ctx, &cmd, (uint8_t*) buf, 8); - //if (ret) - // return CUPS_BACKEND_FAILED; - - /* Start sending image data */ - ptr = ctx->databuf; - - /* Generate plane header (same for all planes) */ - tmp = cpu_to_le32(ctx->hdr.plane_len) + 24; - memset(plane_hdr, 0, PRINTER_PLANE_HDR_LEN); - plane_hdr[0] = 0x42; - plane_hdr[1] = 0x4d; - memcpy(plane_hdr + 2, &tmp, sizeof(tmp)); - plane_hdr[10] = 0x40; - plane_hdr[11] = 0x04; - memcpy(plane_hdr + 14, ptr, SPOOL_PLANE_HDR_LEN); - - /******** Plane 1 */ - cw01_build_cmd(&cmd, "IMAGE", "YPLANE", ctx->hdr.plane_len - SPOOL_PLANE_HDR_LEN + PRINTER_PLANE_HDR_LEN); - ret = cw01_do_cmd(ctx, &cmd, plane_hdr, PRINTER_PLANE_HDR_LEN); - if (ret) - return CUPS_BACKEND_FAILED; - - /* Send plane data */ - if ((ret = send_data(ctx->dev, ctx->endp_down, - ptr + SPOOL_PLANE_HDR_LEN, ctx->hdr.plane_len - SPOOL_PLANE_HDR_LEN))) - return CUPS_BACKEND_FAILED; - - ptr += ctx->hdr.plane_len; - - /******** Plane 2 */ - cw01_build_cmd(&cmd, "IMAGE", "MPLANE", ctx->hdr.plane_len - SPOOL_PLANE_HDR_LEN + PRINTER_PLANE_HDR_LEN); - ret = cw01_do_cmd(ctx, &cmd, plane_hdr, PRINTER_PLANE_HDR_LEN); - if (ret) - return CUPS_BACKEND_FAILED; - - /* Send plane data */ - if ((ret = send_data(ctx->dev, ctx->endp_down, - ptr + SPOOL_PLANE_HDR_LEN, ctx->hdr.plane_len - SPOOL_PLANE_HDR_LEN))) - return CUPS_BACKEND_FAILED; - - ptr += ctx->hdr.plane_len; - - /******** Plane 3 */ - cw01_build_cmd(&cmd, "IMAGE", "CPLANE", ctx->hdr.plane_len - SPOOL_PLANE_HDR_LEN + PRINTER_PLANE_HDR_LEN); - ret = cw01_do_cmd(ctx, &cmd, plane_hdr, PRINTER_PLANE_HDR_LEN); - if (ret) - return CUPS_BACKEND_FAILED; - - /* Send plane data */ - if ((ret = send_data(ctx->dev, ctx->endp_down, - ptr + SPOOL_PLANE_HDR_LEN, ctx->hdr.plane_len - SPOOL_PLANE_HDR_LEN))) - return CUPS_BACKEND_FAILED; - - /* ptr += ctx->hdr.plane_len; */ - - /* Start print */ - cw01_build_cmd(&cmd, "CNTRL", "START", 0); - ret = cw01_do_cmd(ctx, &cmd, NULL, 0); - if (ret) - return CUPS_BACKEND_FAILED; - - INFO("Print complete\n"); - - if (resp) free(resp); - - return CUPS_BACKEND_OK; -} - -static int cw01_get_info(struct cw01_ctx *ctx) -{ - struct cw01_cmd cmd; - uint8_t *resp; - int len = 0; - - /* Get Serial Number */ - cw01_build_cmd(&cmd, "INFO", "SERIAL_NUMBER", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Serial Number: '%s'\n", (char*)resp); - - free(resp); - - /* Get Firmware Version */ - cw01_build_cmd(&cmd, "INFO", "FVER", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Firmware Version: '%s'\n", (char*)resp); - - free(resp); - - /* Get Sensor Info */ - cw01_build_cmd(&cmd, "INFO", "SENSOR", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Sensor Info: '%s'\n", (char*)resp); - // XXX parse this out. Each token is 'XXX-###' delimited by '; ' - - free(resp); - - /* Get Horizonal resolution */ - cw01_build_cmd(&cmd, "INFO", "RESOLUTION_H", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Horizontal Resolution: '%s' dpi\n", (char*)resp + 3); - - free(resp); - - /* Get Vertical resolution */ - cw01_build_cmd(&cmd, "INFO", "RESOLUTION_V", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Vertical Resolution: '%s' dpi\n", (char*)resp + 3); - - free(resp); - - /* Get Media Color offset */ - cw01_build_cmd(&cmd, "INFO", "MCOLOR", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Media Color Offset: '%02x%02x%02x%02x'\n", *(resp+2), *(resp+3), - *(resp+4), *(resp+5)); - - free(resp); - - /* Get Media Lot */ - cw01_build_cmd(&cmd, "INFO", "MLOT", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Media Lot Code: '%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x'\n", - *(resp+2), *(resp+3), *(resp+4), *(resp+5), *(resp+6), *(resp+7), - *(resp+8), *(resp+9), *(resp+10), *(resp+11), *(resp+12), *(resp+13)); - - free(resp); - - /* Get Media ID Set (?) */ - cw01_build_cmd(&cmd, "MNT_RD", "MEDIA_ID_SET", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Media ID(?): '%s'\n", (char*)resp+4); - - free(resp); - - /* Get Color Control Data Version */ - cw01_build_cmd(&cmd, "TBL_RD", "Version", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Color Data Version: '%s'\n", (char*)resp); - - free(resp); - - /* Get Color Control Data Checksum */ - cw01_build_cmd(&cmd, "MNT_RD", "CTRLD_CHKSUM", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Color Data Checksum: '%s'\n", (char*)resp); - - free(resp); - - return CUPS_BACKEND_OK; -} - -static int cw01_get_status(struct cw01_ctx *ctx) -{ - struct cw01_cmd cmd; - uint8_t *resp; - int len = 0; - - /* Generate command */ - cw01_build_cmd(&cmd, "STATUS", "", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Printer Status: %s => %s\n", (char*)resp, cw01_statuses((char*)resp)); - - free(resp); - - /* Get remaining prints in this job */ - cw01_build_cmd(&cmd, "INFO", "PQTY", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Prints Remaining in job: '%s'\n", (char*)resp + 4); - - free(resp); - - /* Generate command */ - cw01_build_cmd(&cmd, "INFO", "FREE_PBUFFER", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Free Buffers: '%s'\n", (char*)resp + 3); - - free(resp); - - /* Get Media Info */ - cw01_build_cmd(&cmd, "INFO", "MEDIA", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Media Type: '%s'\n", cw01_media_types((char*)resp)); - - free(resp); - - /* Get Media remaining */ - cw01_build_cmd(&cmd, "INFO", "MQTY", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Prints Remaining: '%s'\n", (char*)resp + 4); - - free(resp); - - return 0; -} - -static int cw01_get_counters(struct cw01_ctx *ctx) -{ - struct cw01_cmd cmd; - uint8_t *resp; - int len = 0; - - /* Generate command */ - cw01_build_cmd(&cmd, "MNT_RD", "COUNTER_LIFE", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("Lifetime Counter: '%s'\n", (char*)resp+2); - - free(resp); - - /* Generate command */ - cw01_build_cmd(&cmd, "MNT_RD", "COUNTER_A", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("A Counter: '%s'\n", (char*)resp+2); - - free(resp); - - /* Generate command */ - cw01_build_cmd(&cmd, "MNT_RD", "COUNTER_B", 0); - - resp = cw01_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - cw01_cleanup_string((char*)resp, len); - - INFO("B Counter: '%s'\n", (char*)resp+2); - - free(resp); - - return CUPS_BACKEND_OK; -} - -static int cw01_clear_counter(struct cw01_ctx *ctx, char counter) -{ - struct cw01_cmd cmd; - char msg[4]; - int ret; - - /* Generate command */ - cw01_build_cmd(&cmd, "MNT_WT", "COUNTER_CLEAR", 4); - msg[0] = 'C'; - msg[1] = counter; - msg[2] = 0x0d; /* ie carriage return, ASCII '\r' */ - msg[3] = 0x00; - - if ((ret = cw01_do_cmd(ctx, &cmd, (uint8_t*)msg, 4))) - return ret; - - return 0; -} - - -static void cw01_cmdline(void) -{ - DEBUG("\t\t[ -i ] # Query printer info\n"); - DEBUG("\t\t[ -s ] # Query status\n"); - DEBUG("\t\t[ -n ] # Query counters\n"); - DEBUG("\t\t[ -N A|B|M ] # Clear counter A/B/M\n"); -} - -static int cw01_cmdline_arg(void *vctx, int argc, char **argv) -{ - struct cw01_ctx *ctx = vctx; - int i, j = 0; - - if (!ctx) - return -1; - - while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "inN:s")) >= 0) { - switch(i) { - GETOPT_PROCESS_GLOBAL - case 'i': - j = cw01_get_info(ctx); - break; - case 'n': - j = cw01_get_counters(ctx); - break; - case 'N': - if (optarg[0] != 'A' && - optarg[0] != 'B') - return CUPS_BACKEND_FAILED; - j = cw01_clear_counter(ctx, optarg[0]); - break; - case 's': - j = cw01_get_status(ctx); - break; - default: - break; /* Ignore completely */ - } - - if (j) return j; - } - - return 0; -} - -/* Exported */ -struct dyesub_backend cw01_backend = { - .name = "Citizen CW-01", - .version = "0.12", - .uri_prefix = "citizencw01", - .cmdline_usage = cw01_cmdline, - .cmdline_arg = cw01_cmdline_arg, - .init = cw01_init, - .attach = cw01_attach, - .teardown = cw01_teardown, - .read_parse = cw01_read_parse, - .main_loop = cw01_main_loop, - .query_serno = cw01_query_serno, - .devices = { - { USB_VID_CITIZEN, USB_PID_CITIZEN_CW01, P_CITIZEN_CW01, ""}, -// { USB_VID_CITIZEN, USB_PID_OLMEC_OP900, P_CITIZEN_CW01, ""}, - { 0, 0, 0, ""} - } -}; - -/* - -Basic spool file format: - -TT RR NN 00 XX XX XX XX 00 00 00 00 <- FILE header. - - NN : copies (0x01 or more) - RR : resolution; 0 == 334 dpi, 1 == 600dpi - TT : type 0x02 == 4x6, 0x01 == 5x3.5 - XX XX XX XX : plane length (LE) - plane length * 3 + 12 == file length. - -Followed by three planes, each with this header: - -28 00 00 00 00 08 00 00 RR RR 00 00 01 00 08 00 -00 00 00 00 00 00 00 00 5a 33 00 00 YY YY 00 00 -00 01 00 00 00 00 00 00 - - RR RR : rows in LE format - YY YY : 0x335a (334dpi) or 0x5c40 (600dpi) - -Followed by 1024 bytes of color tables: - - ff ff ff 00 ... 00 00 00 00 - -1024+40 = 1064 bytes of header per plane. - -Always have 2048 columns of data. - -followed by (2048 * rows) bytes of data. - -*/ diff --git a/src/cups/backend_common.c b/src/cups/backend_common.c index d88a7d8..09ea078 100644 --- a/src/cups/backend_common.c +++ b/src/cups/backend_common.c @@ -1,7 +1,7 @@ /* * CUPS Backend common code * - * Copyright (c) 2007-2017 Solomon Peachy <pizza@shaftnet.org> + * Copyright (c) 2007-2018 Solomon Peachy <pizza@shaftnet.org> * * The latest version of this program can be found at: * @@ -18,22 +18,29 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * + * SPDX-License-Identifier: GPL-2.0+ + * */ #include "backend_common.h" -#define BACKEND_VERSION "0.71G" +#define BACKEND_VERSION "0.88G" #ifndef URI_PREFIX #error "Must Define URI_PREFIX" #endif #define NUM_CLAIM_ATTEMPTS 10 +#define URB_XFER_SIZE (64*1024) +#define XFER_TIMEOUT 15000 + +#define USB_SUBCLASS_PRINTER 0x1 +#define USB_INTERFACE_PROTOCOL_BIDIR 0x2 + /* Global Variables */ int dyesub_debug = 0; int terminate = 0; @@ -42,11 +49,16 @@ int extra_vid = -1; int extra_pid = -1; int extra_type = -1; int copies = 1; +int test_mode = 0; +int old_uri = 0; + +static int max_xfer_size = URB_XFER_SIZE; +static int xfer_timeout = XFER_TIMEOUT; /* Support Functions */ -static int backend_claim_interface(struct libusb_device_handle *dev, int iface) +static int backend_claim_interface(struct libusb_device_handle *dev, int iface, + int num_claim_attempts) { - int attempts = NUM_CLAIM_ATTEMPTS; int ret; do { ret = libusb_claim_interface(dev, iface); @@ -54,15 +66,41 @@ static int backend_claim_interface(struct libusb_device_handle *dev, int iface) break; if (ret != LIBUSB_ERROR_BUSY) break; + if (--num_claim_attempts == 0) + break; sleep(1); - } while (--attempts > 0); + } while (1); if (ret) - ERROR("Printer open failure (Could not claim printer interface after %d attempts) (%d)\n", NUM_CLAIM_ATTEMPTS, ret); + ERROR("Failed to claim interface %d (%d)\n", iface, ret); return ret; } +static int lookup_printer_type(struct dyesub_backend *backend, uint16_t idVendor, uint16_t idProduct) +{ + int i; + int type = P_UNKNOWN; + + for (i = 0 ; backend->devices[i].vid ; i++) { + if (extra_pid != -1 && + extra_vid != -1 && + extra_type != -1) { + if (backend->devices[i].type == extra_type && + extra_vid == idVendor && + extra_pid == idProduct) { + return extra_type; + } + } + if (idVendor == backend->devices[i].vid && + idProduct == backend->devices[i].pid) { + return backend->devices[i].type; + } + } + + return type; +} + /* Interface **MUST** already be claimed! */ #define ID_BUF_SIZE 2048 static char *get_device_id(struct libusb_device_handle *dev, int iface) @@ -103,6 +141,9 @@ static char *get_device_id(struct libusb_device_handle *dev, int iface) goto done; } + /* IEEE1284 length field includs the header! */ + length -= 2; + /* Move, and terminate */ memmove(buf, buf + 2, length); buf[length] = '\0'; @@ -194,7 +235,7 @@ int read_data(struct libusb_device_handle *dev, uint8_t endp, buf, buflen, readlen, - 10000); + xfer_timeout); if (ret < 0) { ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, *readlen, buflen, endp); @@ -227,7 +268,7 @@ done: } int send_data(struct libusb_device_handle *dev, uint8_t endp, - uint8_t *buf, int len) + const uint8_t *buf, int len) { int num = 0; @@ -236,10 +277,10 @@ int send_data(struct libusb_device_handle *dev, uint8_t endp, } while (len) { - int len2 = (len > 65536) ? 65536: len; + int len2 = (len > max_xfer_size) ? max_xfer_size: len; int ret = libusb_bulk_transfer(dev, endp, - buf, len2, - &num, 15000); + (uint8_t*) buf, len2, + &num, xfer_timeout); if ((dyesub_debug > 1 && len < 4096) || dyesub_debug > 2) { @@ -350,27 +391,29 @@ static char *url_decode(char *str) { /* 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 scan_only, char *match_serno, - struct dyesub_backend *backend) +static int probe_device(struct libusb_device *device, + struct libusb_device_descriptor *desc, + const char *uri_prefix, + const char *prefix, char *manuf_override, + int found, int num_claim_attempts, + int scan_only, char *match_serno, + uint8_t *r_iface, uint8_t *r_altset, + uint8_t *r_endp_up, uint8_t *r_endp_down, + struct dyesub_backend *backend) { struct libusb_device_handle *dev; char buf[256]; char *product = NULL, *serial = NULL, *manuf = NULL, *descr = NULL; - int iface = 0; // XXX loop through interfaces - int altset = 0; // XXX loop through altsetting + uint8_t iface, altset; struct libusb_config_descriptor *config = NULL; int dlen = 0; struct deviceid_dict dict[MAX_DICT]; char *ieee_id = NULL; int i; - uint8_t endp_up, endp_down; DEBUG("Probing VID: %04X PID: %04x\n", desc->idVendor, desc->idProduct); + STATE("+connecting-to-device\n"); if (libusb_open(device, &dev)) { ERROR("Could not open device %04x:%04x (need to be root?)\n", desc->idVendor, desc->idProduct); @@ -378,43 +421,86 @@ static int print_scan_output(struct libusb_device *device, goto abort; } + /* XXX FIXME: Iterate through possible configurations? */ + if (libusb_get_active_config_descriptor(device, &config)) { + found = -1; + goto abort_close; + } + + /* Loop through all interfaces and altsettings to find candidates */ + for (iface = 0 ; iface < config->bNumInterfaces ; iface ++) { + for (altset = 0 ; altset < config->interface[iface].num_altsetting ; altset++) { + /* Skip interfaces that don't have enough endpoints */ + if (config->interface[iface].altsetting[altset].bNumEndpoints < 2) { + continue; + } + +#if 0 + // Make sure it's a printer class device that supports bidir comms (XXX Is this always true?) + if (desc->bDeviceClass == LIBUSB_CLASS_PRINTER || + (desc->bDeviceClass == LIBUSB_CLASS_PER_INTERFACE && + config->interface[iface].altsetting[altset].bInterfaceClass == LIBUSB_CLASS_PRINTER && + config->interface[iface].altsetting[altset].bInterfaceSubClass == USB_SUBCLASS_PRINTER && + config->interface[iface].altsetting[altset].bInterfaceProtocol != USB_INTERFACE_PROTOCOL_BIDIR)) { + continue; + } +#endif + + /* Find the first set of endpoints! */ + endp_up = endp_down = 0; + for (i = 0 ; i < config->interface[iface].altsetting[altset].bNumEndpoints ; i++) { + if ((config->interface[iface].altsetting[altset].endpoint[i].bmAttributes & LIBUSB_TRANSFER_TYPE_MASK) == LIBUSB_TRANSFER_TYPE_BULK) { + if (config->interface[iface].altsetting[altset].endpoint[i].bEndpointAddress & LIBUSB_ENDPOINT_IN) + endp_up = config->interface[iface].altsetting[altset].endpoint[i].bEndpointAddress; + else + endp_down = config->interface[iface].altsetting[altset].endpoint[i].bEndpointAddress; + } + if (endp_up && endp_down) + goto candidate; + } + } + } + + /* If we got here, we didn't find a match. */ + found = -1; + goto abort_close; + +candidate: + + /* We've now found an interface/altset we need to query in more detail */ + /* Detach the kernel driver */ if (libusb_kernel_driver_active(dev, iface)) libusb_detach_kernel_driver(dev, iface); - if (backend_claim_interface(dev, iface)) { + /* Claim the interface so we can start querying things! */ + if (backend_claim_interface(dev, iface, num_claim_attempts)) { found = -1; - goto abort_close; - } - - if (libusb_get_active_config_descriptor(device, &config)) { - found = -1; goto abort_release; } - /* Find the endpoints */ - endp_up = endp_down = 0; - for (i = 0 ; i < config->interface[iface].altsetting[altset].bNumEndpoints ; i++) { - if ((config->interface[iface].altsetting[altset].endpoint[i].bmAttributes & LIBUSB_TRANSFER_TYPE_MASK) == LIBUSB_TRANSFER_TYPE_BULK) { - if (config->interface[iface].altsetting[altset].endpoint[i].bEndpointAddress & LIBUSB_ENDPOINT_IN) - endp_up = config->interface[iface].altsetting[altset].endpoint[i].bEndpointAddress; - else - endp_down = config->interface[iface].altsetting[altset].endpoint[i].bEndpointAddress; + /* Use the appropriate altesetting, but only if the + printer supports more than one. Some printers don't like + us unconditionally setting this. */ + if (config->interface[iface].num_altsetting > 1) { + if (libusb_set_interface_alt_setting(dev, iface, altset)) { + ERROR("Failed to set alternative interface %d/%d\n", iface, altset); + found = -1; + goto abort_release; } - if (endp_up && endp_down) - break; } /* Query IEEE1284 info only if it's a PRINTER class */ if (desc->bDeviceClass == LIBUSB_CLASS_PRINTER || (desc->bDeviceClass == LIBUSB_CLASS_PER_INTERFACE && - config->interface[iface].altsetting[altset].bInterfaceClass == LIBUSB_CLASS_PRINTER)) { + config->interface[iface].altsetting[altset].bInterfaceClass == LIBUSB_CLASS_PRINTER && + config->interface[iface].altsetting[altset].bInterfaceSubClass == USB_SUBCLASS_PRINTER)) { ieee_id = get_device_id(dev, iface); dlen = parse1284_data(ieee_id, dict); } /* Look up mfg string. */ - if (manuf2 && strlen(manuf2)) { - manuf = url_encode(manuf2); /* Backend supplied */ + if (manuf_override && strlen(manuf_override)) { + manuf = url_encode(manuf_override); /* Backend supplied */ } else if ((manuf = dict_find("MANUFACTURER", dlen, dict))) { manuf = url_encode(manuf); } else if ((manuf = dict_find("MFG", dlen, dict))) { @@ -502,20 +588,27 @@ static int print_scan_output(struct libusb_device *device, } if (scan_only) { - int k = 0; + if (!old_uri) { + fprintf(stdout, "direct %s://%s/%s \"%s\" \"%s\" \"%s\" \"\"\n", + prefix, uri_prefix, serial, + descr, descr, + ieee_id ? ieee_id : ""); + } else { + int k = 0; - /* URLify the manuf and model strings */ - strncpy(buf, manuf, sizeof(buf) - 2); - k = strlen(buf); - buf[k++] = '/'; - buf[k] = 0; + /* URLify the manuf and model strings */ + strncpy(buf, manuf, sizeof(buf) - 2); + k = strlen(buf); + buf[k++] = '/'; + buf[k] = 0; - strncpy(buf + k, product, sizeof(buf)-k); + strncpy(buf + k, product, sizeof(buf)-k); - fprintf(stdout, "direct %s://%s?serial=%s&backend=%s \"%s\" \"%s\" \"%s\" \"\"\n", - prefix, buf, serial, backend->uri_prefix, - descr, descr, - ieee_id? ieee_id : ""); + fprintf(stdout, "direct %s://%s?serial=%s&backend=%s \"%s\" \"%s\" \"%s\" \"\"\n", + prefix, buf, serial, uri_prefix, + descr, descr, + ieee_id? ieee_id : ""); + } } /* If a serial number was passed down, use it. */ @@ -527,6 +620,13 @@ static int print_scan_output(struct libusb_device *device, DEBUG("VID: %04X PID: %04X Manuf: '%s' Product: '%s' Serial: '%s' found: %d\n", desc->idVendor, desc->idProduct, manuf, product, serial, found); + if (found != -1) { + if (r_iface) *r_iface = iface; + if (r_altset) *r_altset = altset; + if (r_endp_up) *r_endp_up = endp_up; + if (r_endp_up) *r_endp_down = endp_down; + } + /* Free things up */ if(serial) free(serial); if(manuf) free(manuf); @@ -534,8 +634,6 @@ static int print_scan_output(struct libusb_device *device, if(descr) free(descr); if(ieee_id) free(ieee_id); - if (config) libusb_free_config_descriptor(config); - abort_release: libusb_release_interface(dev, iface); @@ -543,13 +641,18 @@ abort_release: abort_close: libusb_close(dev); + abort: + if (config) libusb_free_config_descriptor(config); + /* Clean up the dictionary */ while (dlen--) { free (dict[dlen].key); free (dict[dlen].val); } + STATE("-connecting-to-device\n"); + return found; } @@ -567,7 +670,8 @@ extern struct dyesub_backend mitsu70x_backend; extern struct dyesub_backend mitsu9550_backend; extern struct dyesub_backend mitsup95d_backend; extern struct dyesub_backend dnpds40_backend; -extern struct dyesub_backend cw01_backend; +extern struct dyesub_backend magicard_backend; +extern struct dyesub_backend mitsud90_backend; static struct dyesub_backend *backends[] = { &canonselphy_backend, @@ -581,10 +685,11 @@ static struct dyesub_backend *backends[] = { &shinkos6245_backend, &updr150_backend, &mitsu70x_backend, + &mitsud90_backend, &mitsu9550_backend, &mitsup95d_backend, &dnpds40_backend, - &cw01_backend, + &magicard_backend, NULL, }; @@ -592,11 +697,25 @@ static int find_and_enumerate(struct libusb_context *ctx, struct libusb_device ***list, struct dyesub_backend *backend, char *match_serno, - int scan_only) + int scan_only, int num_claim_attempts, + uint8_t *r_iface, uint8_t *r_altset, + uint8_t *r_endp_up, uint8_t *r_endp_down) { int num; int i, j = 0, k; int found = -1; + const char *prefix = NULL; + + if (test_mode >= TEST_MODE_NOATTACH) { + found = 1; + *r_endp_up = 0x82; + *r_endp_down = 0x01; + *r_iface = 0; + *r_altset = 0; + return found; + } + + STATE("+org.gutenprint-searching-for-device\n"); /* Enumerate and find suitable device */ num = libusb_get_device_list(ctx, list); @@ -616,11 +735,14 @@ static int find_and_enumerate(struct libusb_context *ctx, extra_vid == desc.idVendor && extra_pid == desc.idProduct) { found = i; + prefix = backends[k]->uri_prefixes[0]; goto match; } } if (desc.idVendor == backends[k]->devices[j].vid && - desc.idProduct == backends[k]->devices[j].pid) { + (desc.idProduct == backends[k]->devices[j].pid || + desc.idProduct == 0xffff)) { + prefix = backends[k]->devices[j].prefix; found = i; goto match; } @@ -630,16 +752,19 @@ static int find_and_enumerate(struct libusb_context *ctx, continue; match: - found = print_scan_output((*list)[i], &desc, - URI_PREFIX, backends[k]->devices[j].manuf_str, - found, - scan_only, match_serno, - backends[k]); + found = probe_device((*list)[i], &desc, prefix, + URI_PREFIX, backends[k]->devices[j].manuf_str, + found, num_claim_attempts, + scan_only, match_serno, + r_iface, r_altset, + r_endp_up, r_endp_down, + backends[k]); if (found != -1 && !scan_only) break; } + STATE("-org.gutenprint-searching-for-device\n"); return found; } @@ -652,22 +777,46 @@ static struct dyesub_backend *find_backend(char *uri_prefix) for (i = 0; ; i++) { struct dyesub_backend *backend = backends[i]; + const char **alias; if (!backend) return NULL; - if (!strcmp(uri_prefix, backend->uri_prefix)) - return backend; + for (alias = backend->uri_prefixes ; alias && *alias ; alias++) { + if (!strcmp(uri_prefix, *alias)) + return backend; + } } return NULL; } +static int query_markers(struct dyesub_backend *backend, void *ctx, int full) +{ + struct marker *markers = NULL; + int marker_count = 0; + int ret; + + if (!backend->query_markers) + return CUPS_BACKEND_OK; + + if (test_mode >= TEST_MODE_NOPRINT) + return CUPS_BACKEND_OK; + + ret = backend->query_markers(ctx, &markers, &marker_count); + if (ret) + return ret; + + dump_markers(markers, marker_count, full); + + return CUPS_BACKEND_OK; +} + void print_license_blurb(void) { const char *license = "\n\ -Copyright 2007-2017 Solomon Peachy <pizza AT shaftnet DOT org>\n\ +Copyright 2007-2018 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\ +Software Foundation; either version 3 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\ @@ -676,8 +825,7 @@ 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\ +along with this program. If not, see https://www.gnu.org/licenses/.\n\ \n [http://www.gnu.org/licenses/gpl-2.0.html]\n\n"; fprintf(stderr, "%s", license); @@ -687,7 +835,6 @@ void print_help(char *argv0, struct dyesub_backend *backend) { struct libusb_context *ctx = NULL; struct libusb_device **list = NULL; - int i; char *ptr = strrchr(argv0, '/'); if (ptr) @@ -701,7 +848,7 @@ void print_help(char *argv0, struct dyesub_backend *backend) if (!backend) { int i; DEBUG("Environment variables:\n"); - DEBUG(" DYESUB_DEBUG EXTRA_PID EXTRA_VID EXTRA_TYPE BACKEND SERIAL\n"); + DEBUG(" DYESUB_DEBUG EXTRA_PID EXTRA_VID EXTRA_TYPE BACKEND SERIAL OLD_URI_SCHEME\n"); DEBUG("CUPS Usage:\n"); DEBUG("\tDEVICE_URI=someuri %s job user title num-copies options [ filename ]\n", URI_PREFIX); DEBUG("\n"); @@ -712,18 +859,30 @@ void print_help(char *argv0, struct dyesub_backend *backend) DEBUG(" [ -d copies ] \n"); DEBUG(" [ - | infile ] \n"); for (i = 0; ; i++) { + const char **alias; + backend = backends[i]; if (!backend) break; - DEBUG(" BACKEND=%s\t# %s version %s\n", - backend->uri_prefix, backend->name, backend->version); + DEBUG("\t# %s version %s\n", + backend->name, backend->version); + DEBUG(" BACKEND="); + for (alias = backend->uri_prefixes ; alias && *alias ; alias++) + DEBUG2("%s ", *alias); + DEBUG2("\n"); + if (backend->cmdline_usage) backend->cmdline_usage(); } } else { + const char **alias; DEBUG("Standalone %s backend version %s\n", backend->name, backend->version); - DEBUG("\t%s\n", backend->uri_prefix); + DEBUG("\t supporting: "); + for (alias = backend->uri_prefixes ; alias && *alias ; alias++) + DEBUG2("%s ", *alias); + DEBUG2("\n"); + DEBUG("\t[ -D ] [ -G ] [ -f ]\n"); if (backend->cmdline_usage) backend->cmdline_usage(); @@ -731,35 +890,67 @@ void print_help(char *argv0, struct dyesub_backend *backend) } /* Probe for printers */ - i = libusb_init(&ctx); - if (i) { - ERROR("Failed to initialize libusb (%d)\n", i); - exit(CUPS_BACKEND_STOP); - } - find_and_enumerate(ctx, &list, backend, NULL, 1); + find_and_enumerate(ctx, &list, backend, NULL, 1, 1, NULL, NULL, NULL, NULL); libusb_free_device_list(list, 1); - libusb_exit(ctx); } +int parse_cmdstream(struct dyesub_backend *backend, void *backend_ctx, int fd) +{ + FILE *fp = stdin; + char line[128]; + char *lp; + + if (fd != fileno(stdin)) { + fp = fdopen(fd, "r"); + if (!fp) { + ERROR("Can't open data stream!\n"); + return CUPS_BACKEND_FAILED; + } + } + while (fgets(line, sizeof(line), fp) != NULL) { + /* Strip trailing newline */ + lp = line + strlen(line) - 1; + if (*lp == '\n') + *lp = '\0'; + /* And leading spaces */ + for (lp = line; isspace(*lp); lp++); + /* And comments and blank lines */ + if (*lp == '#' || !*lp) + continue; + + /* Parse command! */ + if (strncasecmp(lp, "ReportLevels", 12) == 0) { + query_markers(backend, backend_ctx, 1); +/* XXX TODO: ReportStatus, AutoConfigure, PrintSelfTestPage? What about others, eg reset or cancel job? */ + } else { + WARNING("Invalid printer command \"%s\"!\n", lp); + } + } + + /* Clean up */ + if (fp != stdin) + fclose(fp); + + return CUPS_BACKEND_OK; +}; + 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 = NULL; struct dyesub_backend *backend = NULL; void * backend_ctx = NULL; uint8_t endp_up, endp_down; - - int iface = 0; // XXX loop through interfaces - int altset = 0; // XXX loop through altsetting + uint8_t iface, altset; int data_fd = fileno(stdin); + const void *job = NULL; + int i; - int claimed; int ret = CUPS_BACKEND_OK; @@ -768,12 +959,14 @@ int main (int argc, char **argv) int current_page = 0; char *uri; + char *type; char *fname = NULL; char *use_serno = NULL; + int printer_type; DEBUG("Multi-Call Dye-sublimation CUPS Backend version %s\n", BACKEND_VERSION); - DEBUG("Copyright 2007-2016 Solomon Peachy\n"); + DEBUG("Copyright 2007-2018 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"); @@ -784,15 +977,30 @@ int main (int argc, char **argv) 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_vid = strtol(getenv("EXTRA_VID"), NULL, 16); + if (getenv("EXTRA_TYPE")) extra_type = atoi(getenv("EXTRA_TYPE")); if (getenv("BACKEND")) backend = find_backend(getenv("BACKEND")); if (getenv("FAST_RETURN")) fast_return++; + if (getenv("MAX_XFER_SIZE")) + max_xfer_size = atoi(getenv("MAX_XFER_SIZE")); + if (getenv("XFER_TIMEOUT")) + xfer_timeout = atoi(getenv("XFER_TIMEOUT")); + if (getenv("TEST_MODE")) + test_mode = atoi(getenv("TEST_MODE")); + if (getenv("OLD_URI_SCHEME")) + old_uri = atoi(getenv("OLD_URI_SCHEME")); + + if (test_mode >= TEST_MODE_NOATTACH && (extra_vid == -1 || extra_pid == -1)) { + ERROR("Must specify EXTRA_VID, EXTRA_PID in test mode > 1!\n"); + exit(1); + } + use_serno = getenv("SERIAL"); - uri = getenv("DEVICE_URI"); /* CUPS backend mode? */ + uri = getenv("DEVICE_URI"); /* CUPS backend mode! */ + type = getenv("FINAL_CONTENT_TYPE"); /* CUPS content type -- ie raster or command */ if (uri) { /* CUPS backend mode */ @@ -812,35 +1020,52 @@ int main (int argc, char **argv) /* 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; + char *ptr = strstr(uri, "backend="), *ptr2; + if (ptr) { /* Original format */ + 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 = '&'; - 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++; + ptr = strchr(use_serno, '&'); + if (ptr) + *ptr = 0; + } else { /* New format */ + // prefix://backend/serno + ptr = strchr(uri, '/'); + ptr += 2; + use_serno = strchr(ptr, '/'); + if (!use_serno || !*(use_serno+1)) { + ERROR("Invalid URI (%s)\n", uri); + exit(1); + } + *use_serno = 0; + use_serno++; - 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; + backend = find_backend(ptr); + if (!backend) { + ERROR("Invalid backend (%s)\n", ptr); + exit(1); + } + + ptr = strchr(ptr, '?'); + if (ptr) + *ptr = 0; + } } /* Always enable fast return in CUPS mode */ @@ -875,86 +1100,111 @@ int main (int argc, char **argv) ret = libusb_init(&ctx); if (ret) { ERROR("Failed to initialize libusb (%d)\n", ret); - ret = CUPS_BACKEND_STOP; + ret = CUPS_BACKEND_RETRY_CURRENT; goto done; } /* If we don't have a valid backend, print help and terminate */ if (!backend) { print_help(argv[0], NULL); // probes all devices - exit(1); + ret = CUPS_BACKEND_OK; + goto done; } /* If we're in standalone mode, print help only if no args */ if (!uri) { if (argc < 2) { print_help(argv[0], backend); // probes all devices - exit(1); + ret = CUPS_BACKEND_OK; + goto done; } } /* Enumerate devices */ - found = find_and_enumerate(ctx, &list, backend, use_serno, 0); + found = find_and_enumerate(ctx, &list, backend, use_serno, 0, NUM_CLAIM_ATTEMPTS, &iface, &altset, &endp_up, &endp_down); if (found == -1) { ERROR("Printer open failure (No matching printers found!)\n"); - ret = CUPS_BACKEND_HOLD; + ret = CUPS_BACKEND_RETRY; goto done; } + if (test_mode) { + WARNING("**** TEST MODE %d!\n", test_mode); + if (test_mode >= TEST_MODE_NOATTACH) + goto bypass; + } + /* Open an appropriate device */ ret = libusb_open(list[found], &dev); if (ret) { ERROR("Printer open failure (Need to be root?) (%d)\n", ret); - ret = CUPS_BACKEND_STOP; + ret = CUPS_BACKEND_RETRY_CURRENT; goto done; } - claimed = libusb_kernel_driver_active(dev, iface); - if (claimed) { + /* Detach the kernel driver */ + if (libusb_kernel_driver_active(dev, iface)) { ret = libusb_detach_kernel_driver(dev, iface); if (ret) { ERROR("Printer open failure (Could not detach printer from kernel) (%d)\n", ret); - ret = CUPS_BACKEND_STOP; + ret = CUPS_BACKEND_RETRY_CURRENT; goto done_close; } } - ret = backend_claim_interface(dev, iface); + /* Claim the interface so we can start using this! */ + ret = backend_claim_interface(dev, iface, NUM_CLAIM_ATTEMPTS); if (ret) { - ret = CUPS_BACKEND_STOP; + ERROR("Printer open failure (Unable to claim interface) (%d)\n", ret); + ret = CUPS_BACKEND_RETRY; goto done_close; } - ret = libusb_get_active_config_descriptor(list[found], &config); - if (ret) { - ERROR("Printer open failure (Could not fetch config descriptor) (%d)\n", ret); - ret = CUPS_BACKEND_STOP; - goto done_close; - } - - endp_up = endp_down = 0; - for (i = 0 ; i < config->interface[iface].altsetting[altset].bNumEndpoints ; i++) { - if ((config->interface[iface].altsetting[altset].endpoint[i].bmAttributes & LIBUSB_TRANSFER_TYPE_MASK) == LIBUSB_TRANSFER_TYPE_BULK) { - if (config->interface[iface].altsetting[altset].endpoint[i].bEndpointAddress & LIBUSB_ENDPOINT_IN) - endp_up = config->interface[iface].altsetting[altset].endpoint[i].bEndpointAddress; - else - endp_down = config->interface[iface].altsetting[altset].endpoint[i].bEndpointAddress; + /* Use the appropriate altesetting! */ + if (altset != 0) { + ret = libusb_set_interface_alt_setting(dev, iface, altset); + if (ret) { + ERROR("Printer open failure (Unable to issue altsettinginterface) (%d)\n", ret); + ret = CUPS_BACKEND_RETRY; + goto done_close; } - if (endp_up && endp_down) - break; } - if (config) - libusb_free_config_descriptor(config); - +bypass: /* Initialize backend */ DEBUG("Initializing '%s' backend (version %s)\n", backend->name, backend->version); backend_ctx = backend->init(); + if (test_mode < TEST_MODE_NOATTACH) { + struct libusb_device *device; + struct libusb_device_descriptor desc; + + device = libusb_get_device(dev); + libusb_get_device_descriptor(device, &desc); + + printer_type = lookup_printer_type(backend, + desc.idVendor, desc.idProduct); + } else { + printer_type = lookup_printer_type(backend, + extra_vid, extra_pid); + } + + if (printer_type <= P_UNKNOWN) { + ERROR("Unable to lookup printer type\n"); + ret = CUPS_BACKEND_FAILED; + goto done_close; + } + /* Attach backend to device */ - backend->attach(backend_ctx, dev, endp_up, endp_down, jobid); + if (backend->attach(backend_ctx, dev, printer_type, endp_up, endp_down, jobid)) { + ERROR("Unable to attach to printer!"); + ret = CUPS_BACKEND_FAILED; + goto done_close; + } + +// STATE("+org.gutenprint-attached-to-device\n"); if (!uri) { if (backend->cmdline_arg(backend_ctx, argc, argv) < 0) @@ -975,7 +1225,8 @@ int main (int argc, char **argv) data_fd = open(fname, O_RDONLY); if (data_fd < 0) { perror("ERROR:Can't open input file"); - exit(1); + ret = CUPS_BACKEND_FAILED; + goto done; } } @@ -983,13 +1234,15 @@ int main (int argc, char **argv) i = fcntl(data_fd, F_GETFL, 0); if (i < 0) { perror("ERROR:Can't open input"); - exit(1); + ret = CUPS_BACKEND_FAILED; + goto done; } i &= ~O_NONBLOCK; i = fcntl(data_fd, F_SETFL, i); if (i < 0) { perror("ERROR:Can't open input"); - exit(1); + ret = CUPS_BACKEND_FAILED; + goto done; } /* Ignore SIGPIPE */ @@ -999,19 +1252,52 @@ int main (int argc, char **argv) /* Time for the main processing loop */ INFO("Printing started (%d copies)\n", copies); + /* See if it's a CUPS command stream, and if yes, handle it! */ + if (type && !strcmp("application/vnd.cups-command", type)) + { + ret = parse_cmdstream(backend, backend_ctx, data_fd); + goto done_claimed; + } + newpage: /* Read in data */ - if ((ret = backend->read_parse(backend_ctx, data_fd))) { + if ((ret = backend->read_parse(backend_ctx, &job, data_fd, copies))) { if (current_page) goto done_multiple; else goto done_claimed; } + /* The backend parser might not return a job due to job dependencies. + Try and read another page. */ + if (!job) + goto newpage; + + /* Create our own joblist if necessary */ + if (!(backend->flags & BACKEND_FLAG_JOBLIST)) { + struct dyesub_joblist *list = dyesub_joblist_create(backend, backend_ctx); + if (!list) + goto done_claimed; + dyesub_joblist_addjob(list, job); + job = list; + } + + /* Dump the full marker dump */ + ret = query_markers(backend, backend_ctx, !current_page); + if (ret) + goto done_claimed; + INFO("Printing page %d\n", ++current_page); - ret = backend->main_loop(backend_ctx, copies); + if (test_mode >= TEST_MODE_NOPRINT ) { + WARNING("**** TEST MODE, bypassing printing!\n"); + } else { + ret = dyesub_joblist_print(job); + } + + dyesub_joblist_cleanup(job); + if (ret) goto done_claimed; @@ -1019,6 +1305,11 @@ newpage: if (!uri) PAGE("%d %d\n", current_page, copies); + /* Dump a marker status update */ + ret = query_markers(backend, backend_ctx, !current_page); + 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. */ @@ -1033,49 +1324,113 @@ done_multiple: ret = CUPS_BACKEND_OK; done_claimed: - libusb_release_interface(dev, iface); + if (test_mode < TEST_MODE_NOATTACH) + libusb_release_interface(dev, iface); done_close: -#if 0 - if (claimed) - libusb_attach_kernel_driver(dev, iface); -#endif - libusb_close(dev); + if (test_mode < TEST_MODE_NOATTACH) + libusb_close(dev); done: - if (backend && backend_ctx) + if (backend && backend_ctx) { backend->teardown(backend_ctx); +// STATE("-org.gutenprint-attached-to-device"); + } if (list) libusb_free_device_list(list, 1); - if (ctx) - libusb_exit(ctx); + + libusb_exit(ctx); return ret; } -int lookup_printer_type(struct dyesub_backend *backend, uint16_t idVendor, uint16_t idProduct) +void dump_markers(struct marker *markers, int marker_count, int full) { int i; - int type = -1; - for (i = 0 ; backend->devices[i].vid ; i++) { - if (extra_pid != -1 && - extra_vid != -1 && - extra_type != -1) { - if (backend->devices[i].type == extra_type && - extra_vid == idVendor && - extra_pid == idProduct) { - return extra_type; + if (!full) + goto minimal; + + ATTR("marker-colors="); + for (i = 0 ; i < marker_count; i++) { + DEBUG2(markers[i].color); + if ((i+1) < marker_count) + DEBUG2(","); + } + DEBUG2("\n"); + + ATTR("marker-high-levels="); + for (i = 0 ; i < marker_count; i++) { + DEBUG2("%d", 100); + if ((i+1) < marker_count) + DEBUG2(","); + } + DEBUG2("\n"); + + ATTR("marker-low-levels="); + for (i = 0 ; i < marker_count; i++) { + DEBUG2("%d", 10); + if ((i+1) < marker_count) + DEBUG2(","); + } + DEBUG2("\n"); + + ATTR("marker-names="); + for (i = 0 ; i < marker_count; i++) { + DEBUG2("'\"%s\"'", markers[i].name); + if ((i+1) < marker_count) + DEBUG2(","); + } + DEBUG2("\n"); + + ATTR("marker-types="); + for (i = 0 ; i < marker_count; i++) { + DEBUG2("ribbonWax"); + if ((i+1) < marker_count) + DEBUG2(","); + } + DEBUG2("\n"); + +minimal: + ATTR("marker-levels="); + for (i = 0 ; i < marker_count; i++) { + int val; + if (markers[i].levelmax <= 0 || markers[i].levelnow < 0) + val = (markers[i].levelnow <= 0) ? markers[i].levelnow : -1; + else if (markers[i].levelmax == 100) + val = markers[i].levelnow; + else + val = markers[i].levelnow * 100 / markers[i].levelmax; + DEBUG2("%d", val); + if ((i+1) < marker_count) + DEBUG2(","); + } + DEBUG2("\n"); + + /* Only dump a message if the marker is not a percentage */ + if (markers[0].levelmax != 100) { + ATTR("marker-message="); + for (i = 0 ; i < marker_count; i++) { + switch (markers[i].levelnow) { + case -1: + DEBUG2("'\"Unable to query remaining prints on %s media\"'", markers[i].name); + break; + case -2: + DEBUG2("'\"Unknown remaining prints on %s media\"'", markers[i].name); + break; + case -3: + DEBUG2("'\"One or more remaining prints on %s media\"'", markers[i].name); + break; + default: + DEBUG2("'\"%d native prints remaining on %s media\"'", markers[i].levelnow, markers[i].name); + break; } + if ((i+1) < marker_count) + DEBUG2(","); } - if (idVendor == backend->devices[i].vid && - idProduct == backend->devices[i].pid) { - return backend->devices[i].type; - } + DEBUG2("\n"); } - - return type; } uint16_t uint16_to_packed_bcd(uint16_t val) @@ -1112,3 +1467,66 @@ uint32_t packed_bcd_to_uint32(char *in, int len) } return out; } + +/* Job list manipulation */ +struct dyesub_joblist *dyesub_joblist_create(struct dyesub_backend *backend, void *ctx) +{ + struct dyesub_joblist *list; + + list = malloc(sizeof(struct dyesub_joblist)); + if (!list) { + ERROR("Memory allocation failure\n"); + return NULL; + } + list->backend = backend; + list->ctx = ctx; + list->num_entries = 0; + list->copies = 1; + + return list; +} + +void dyesub_joblist_cleanup(const struct dyesub_joblist *list) +{ + int i; + for (i = 0; i < list->num_entries ; i++) { + if (list->entries[i]) + list->backend->cleanup_job(list->entries[i]); + } + free((void*)list); +} + +int dyesub_joblist_addjob(struct dyesub_joblist *list, const void *job) +{ + if (list->num_entries >= DYESUB_MAX_JOB_ENTRIES) + return 1; + + list->entries[list->num_entries++] = job; + + return 0; +} + +int dyesub_joblist_print(const struct dyesub_joblist *list) +{ + int i, j; + int ret; + for (i = 0 ; i < list->copies ; i++) { + for (j = 0 ; j < list->num_entries ; j++) { + if (list->entries[j]) { + ret = list->backend->main_loop(list->ctx, list->entries[j]); + if (ret) + return ret; + +#if 0 + /* Free up the job as we go along + if we're on the final copy */ + if (i + 1 == list->copies) { + list->backend->cleanup_job(list->entries[j]); + list->entries[j] = NULL; + } +#endif + } + } + } + return CUPS_BACKEND_OK; +} diff --git a/src/cups/backend_common.h b/src/cups/backend_common.h index 4e489fc..3fd58db 100644 --- a/src/cups/backend_common.h +++ b/src/cups/backend_common.h @@ -1,7 +1,7 @@ /* * CUPS Backend common code * - * (c) 2013-2017 Solomon Peachy <pizza@shaftnet.org> + * (c) 2013-2018 Solomon Peachy <pizza@shaftnet.org> * * The latest version of this program can be found at: * @@ -18,11 +18,12 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * + * SPDX-License-Identifier: GPL-2.0+ + * */ #include <stdio.h> @@ -87,46 +88,51 @@ /* To enumerate supported devices */ enum { - P_ANY = 0, - P_ES1, - P_ES2_20, - P_ES3_30, - P_ES40, - P_CP790, - P_CP_XXX, - P_CP10, - P_CP910, - P_KODAK_6800, - P_KODAK_6850, - P_KODAK_1400_805, - P_KODAK_605, - P_KODAK_305, - P_SHINKO_S2145, - P_SHINKO_S1245, - P_SHINKO_S6245, - P_SHINKO_S6145, - P_SHINKO_S6145D, - P_SONY_UPDR150, - P_SONY_UPCR10, - P_MITSU_D70X, - P_MITSU_D80, - P_MITSU_K60, - P_MITSU_9550, - P_MITSU_9550S, - P_MITSU_9600, - P_MITSU_9800, - P_MITSU_9800S, - P_MITSU_9810, - P_MITSU_P93D, - P_MITSU_P95D, - P_DNP_DS40, - P_DNP_DS80, - P_DNP_DS80D, - P_CITIZEN_CW01, - P_DNP_DSRX1, - P_DNP_DS620, - P_DNP_DS820, - P_FUJI_ASK300, + P_UNKNOWN = 0, + P_CP_XXX = 1, + P_CP10 = 2, + P_CP790 = 3, + P_CP900 = 4, + P_CP910 = 5, + P_ES1 = 6, + P_ES2_20 = 7, + P_ES3_30 = 8, + P_ES40 = 9, + P_KODAK_1400_805 = 10, + P_KODAK_6800 = 11, + P_KODAK_6850 = 12, + P_KODAK_305 = 13, + P_KODAK_605 = 14, + P_SHINKO_S1245 = 15, + P_SHINKO_S2145 = 16, + P_SHINKO_S6145 = 17, + P_SHINKO_S6145D = 18, + P_SHINKO_S6245 = 19, + P_SONY_UPCR10 = 20, + P_SONY_UPDR150 = 21, + P_MITSU_9550 = 22, + P_MITSU_9550S = 23, + P_MITSU_9600 = 24, + P_MITSU_9800 = 25, + P_MITSU_9800S = 26, + P_MITSU_9810 = 27, + P_MITSU_D70X = 28, + P_MITSU_D80 = 29, + P_MITSU_D90 = 30, + P_MITSU_K60 = 31, + P_MITSU_P93D = 32, + P_MITSU_P95D = 33, + P_CITIZEN_CW01 = 34, + P_CITIZEN_OP900II = 35, + P_DNP_DS40 = 36, + P_DNP_DS620 = 37, + P_DNP_DS80 = 38, + P_DNP_DS80D = 39, + P_DNP_DS820 = 40, + P_DNP_DSRX1 = 41, + P_FUJI_ASK300 = 42, + P_MAGICARD = 43, + P_SONY_UPD89x = 44, P_END, }; @@ -135,31 +141,56 @@ struct device_id { uint16_t pid; int type; /* P_** */ char *manuf_str; + char *prefix; +}; + +struct marker { + const char *color; /* Eg "#00FFFF" */ + const char *name; /* Eg "CK9015 (4x6)" */ + int levelmax; /* Max media count, eg '600', or '-1' */ + int levelnow; /* Remaining media, -3, -2, -1, 0..N. See CUPS. */ }; +#define BACKEND_FLAG_JOBLIST 0x00000001 + /* Backend Functions */ struct dyesub_backend { - char *name; - char *version; - char *uri_prefix; + const char *name; + const char *version; + const char **uri_prefixes; + uint32_t flags; void (*cmdline_usage)(void); /* Optional */ void *(*init)(void); - void (*attach)(void *ctx, struct libusb_device_handle *dev, + int (*attach)(void *ctx, struct libusb_device_handle *dev, int type, 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 (*read_parse)(void *ctx, int data_fd); - int (*main_loop)(void *ctx, int copies); + int (*read_parse)(void *ctx, const void **job, int data_fd, int copies); + void (*cleanup_job)(const void *job); + int (*main_loop)(void *ctx, const void *job); int (*query_serno)(struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, char *buf, int buf_len); /* Optional */ - struct device_id devices[]; + int (*query_markers)(void *ctx, struct marker **markers, int *count); + const struct device_id devices[]; +}; + +#define DYESUB_MAX_JOB_ENTRIES 2 + +struct dyesub_joblist { + // TODO: mutex/lock + struct dyesub_backend *backend; + void *ctx; + int num_entries; + int copies; + const void *entries[DYESUB_MAX_JOB_ENTRIES]; }; /* Exported functions */ int send_data(struct libusb_device_handle *dev, uint8_t endp, - uint8_t *buf, int len); + const uint8_t *buf, int len); int read_data(struct libusb_device_handle *dev, uint8_t endp, uint8_t *buf, int buflen, int *readlen); -int lookup_printer_type(struct dyesub_backend *backend, uint16_t idVendor, uint16_t idProduct); + +void dump_markers(struct marker *markers, int marker_count, int full); void print_license_blurb(void); void print_help(char *argv0, struct dyesub_backend *backend); @@ -167,6 +198,12 @@ void print_help(char *argv0, struct dyesub_backend *backend); uint16_t uint16_to_packed_bcd(uint16_t val); uint32_t packed_bcd_to_uint32(char *in, int len); +/* Job list manipulation */ +struct dyesub_joblist *dyesub_joblist_create(struct dyesub_backend *backend, void *ctx); +int dyesub_joblist_addjob(struct dyesub_joblist *list, const void *job); +void dyesub_joblist_cleanup(const struct dyesub_joblist *list); +int dyesub_joblist_print(const struct dyesub_joblist *list); + /* Global data */ extern int terminate; extern int dyesub_debug; @@ -175,6 +212,14 @@ extern int extra_vid; extern int extra_pid; extern int extra_type; extern int copies; +extern int test_mode; + +enum { + TEST_MODE_NONE = 0, + TEST_MODE_NOPRINT, + TEST_MODE_NOATTACH, + TEST_MODE_MAX, +}; #if defined(BACKEND) extern struct dyesub_backend BACKEND; diff --git a/src/cups/backend_dnpds40.c b/src/cups/backend_dnpds40.c index 0484eb9..b9ed3e4 100644 --- a/src/cups/backend_dnpds40.c +++ b/src/cups/backend_dnpds40.c @@ -1,7 +1,7 @@ /* - * DNP DS40/DS80 Photo Printer CUPS backend -- libusb-1.0 version + * Citizen / DNP Photo Printer CUPS backend -- libusb-1.0 version * - * (c) 2013-2017 Solomon Peachy <pizza@shaftnet.org> + * (c) 2013-2018 Solomon Peachy <pizza@shaftnet.org> * * Development of this backend was sponsored by: * @@ -24,14 +24,16 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * + * SPDX-License-Identifier: GPL-2.0+ + * */ //#define DNP_ONLY +//#define CITIZEN_ONLY /* Enables caching of last print type to speed up job pipelining. Without this we always have to @@ -52,19 +54,22 @@ #include "backend_common.h" -#define USB_VID_CITIZEN 0x1343 -#define USB_PID_DNP_DS40 0x0003 // Also Citizen CX -#define USB_PID_DNP_DS80 0x0004 // Also Citizen CX-W, and Mitsubishi CP-3800DW -#define USB_PID_DNP_DSRX1 0x0005 // Also Citizen CY -#define USB_PID_CITIZEN_CW02 0x0006 -#define USB_PID_DNP_DS80D 0x0007 -#define USB_PID_DNP_DS620_OLD 0x0008 +/* Private data structure */ +struct dnpds40_printjob { + uint8_t *databuf; + int datalen; -#define USB_VID_DNP 0x1452 -#define USB_PID_DNP_DS620 0x8b01 -#define USB_PID_DNP_DS820 0x9001 + int copies; + uint32_t dpi; + int matte; + int cutter; + uint32_t multicut; + int fullcut; + int printspeed; + int can_rewind; + int buf_needed; +}; -/* Private data structure */ struct dnpds40_ctx { struct libusb_device_handle *dev; uint8_t endp_up; @@ -72,34 +77,29 @@ struct dnpds40_ctx { int type; + /* Version and whatnot */ char *serno; char *version; - - int buf_needed; - int ver_major; int ver_minor; + /* State */ uint32_t media; uint32_t duplex_media; uint16_t media_count_new; - uint32_t multicut; uint32_t last_multicut; int last_matte; - int fullcut; - int matte; - int cutter; - int can_rewind; - - int printspeed; - int mediaoffset; - int manual_copies; int correct_count; + int needs_mlot; + + struct marker marker; + /* Printer capabilities */ uint32_t native_width; + uint32_t max_height; int supports_6x9; int supports_2x6; int supports_3x5x2; @@ -123,8 +123,6 @@ struct dnpds40_ctx { int supports_lowspeed; int supports_highdensity; int supports_gamma; - uint8_t *databuf; - int datalen; }; struct dnpds40_cmd { @@ -197,6 +195,198 @@ struct dnpds40_cmd { #define min(__x, __y) ((__x) < (__y)) ? __x : __y +/* Legacy CW-01 spool file support */ +struct cw01_spool_hdr { + uint8_t type; /* 0x00 -> 0x06 */ + uint8_t res; /* vertical resolution; 0x00 == 334dpi, 0x01 == 600dpi */ + uint8_t copies; /* number of prints */ + uint8_t null0; + uint32_t plane_len; /* LE */ + uint8_t null1[4]; +}; + +#define DPI_334 0 +#define DPI_600 1 + +#define TYPE_DSC 0 +#define TYPE_L 1 +#define TYPE_PC 2 +#define TYPE_2DSC 3 +#define TYPE_3L 4 +#define TYPE_A5 5 +#define TYPE_A6 6 +/* Legacy CW-01 spool file support */ + +static int cw01_read_parse(struct dnpds40_printjob *job, int data_fd, + struct cw01_spool_hdr *hdr, int read_data); +static void dnpds40_cleanup_job(const void *vjob); + +#define JOB_EQUIV(__x) if (job1->__x != job2->__x) goto done + +static struct dnpds40_printjob *combine_jobs(const struct dnpds40_printjob *job1, + const struct dnpds40_printjob *job2) +{ + struct dnpds40_printjob *newjob = NULL; + uint32_t new_multicut; + uint16_t new_w, new_h; + uint16_t gap_bytes; + + /* Sanity check */ + if (!job1 || !job2) + goto done; + + /* Make sure pertinent paremeters are the same */ + JOB_EQUIV(dpi); + JOB_EQUIV(matte); + JOB_EQUIV(cutter); + JOB_EQUIV(fullcut); + JOB_EQUIV(multicut); // TODO: Support fancier modes for 8" models (eg 8x4+8x6, etc) + JOB_EQUIV(datalen); // <-- cheating a little? + // JOV_EQUIV(printspeed); <-- does it matter? + + /* Any cutter means we shouldn't bother */ + if (job1->fullcut || job1->cutter) + goto done; + +#if 0 + // XXX TODO: 2x6*2 + 2x6*2 --> 8x6+cutter! + // problem is that 8x6" size is 4 rows smaller than 2* 4x6" prints, posing a problem. + + /* Only handle cutter if it's for 2x6" strips */ + if (job1->cutter != 0 && job1->cutter != 120) + goto done; +#endif + + /* Make sure we can combine these two prints */ + switch (job1->multicut) { + case MULTICUT_5x3_5: + new_multicut = MULTICUT_5x3_5X2; + new_w = 1920; + new_h = 2176; + gap_bytes = 0; + break; + case MULTICUT_6x4: +#if 0 + if (job1->cutter != 120) { + new_multicut = MULTICUT_6x8; + new_h = 2436; + gap_bytes = -4; + } else { +#endif + new_multicut = MULTICUT_6x4X2; + new_h = 2498; + gap_bytes = 18; +#if 0 + } +#endif + new_w = 1920; + break; + case MULTICUT_6x4_5: + new_multicut = MULTICUT_6x4_5X2; + new_w = 1920; + new_h = 2802; + gap_bytes = 30; + break; + case MULTICUT_8x4: + new_multicut = MULTICUT_8x4X2; + new_w = 2560; + new_h = 2502; + gap_bytes = 30; + break; + case MULTICUT_8x5: + new_multicut = MULTICUT_8x5X2; + new_w = 2560; + new_h = 3102; + gap_bytes = 30; + break; + case MULTICUT_8x6: + new_multicut = MULTICUT_8x6X2; + new_w = 2560; + new_h = 3702; + gap_bytes = 30; + break; + default: + // 2-up 8x6 prints too? + /* Everything else is NOT handled */ + goto done; + } + gap_bytes *= new_w; + if (job1->dpi == 600) { + gap_bytes *= 2; + new_h *= 2; + } + + DEBUG("Combining jobs to save media\n"); + + /* Okay, it's kosher to proceed */ + + newjob = malloc(sizeof(*newjob)); + if (!newjob) { + ERROR("Memory allocation failure!\n"); + goto done; + } + memcpy(newjob, job1, sizeof(*newjob)); + + newjob->databuf = malloc(((new_w*new_h+1024+54+10))*3+1024); + newjob->datalen = 0; + newjob->multicut = new_multicut; + if (!newjob->databuf) { + dnpds40_cleanup_job(newjob); + newjob = NULL; + ERROR("Memory allocation failure!\n"); + goto done; + } + + /* Copy data blocks from job1 */ + uint8_t *ptr, *ptr2; + char buf[9]; + ptr = job1->databuf; + while(ptr && ptr < (job1->databuf + job1->datalen)) { + int i; + buf[8] = 0; + memcpy(buf, ptr + 24, 8); + i = atoi(buf) + 32; + memcpy(newjob->databuf + newjob->datalen, ptr, i); + + /* If we're on a plane data block... */ + if (!memcmp("PLANE", newjob->databuf + newjob->datalen + 9, 5)) { + long planelen = (new_w * new_h) + 1088; + uint32_t newlen; + + /* Fix up length in command */ + snprintf(buf, sizeof(buf), "%08ld", planelen); + memcpy(newjob->databuf + newjob->datalen + 24, buf, 8); + + /* Alter BMP header */ + newlen = cpu_to_le32(planelen); + memcpy(newjob->databuf + newjob->datalen + 32 + 2, &newlen, 4); + + /* alter DIB header */ + newlen = cpu_to_le32(new_h); + memcpy(newjob->databuf + newjob->datalen + 32 + 22, &newlen, 4); + + /* Insert gap/padding after first image */ + memset(newjob->databuf + newjob->datalen + i, 0, gap_bytes); + newjob->datalen += gap_bytes; + + // locate job2's PLANE properly? Assumption is it's in the same place. + ptr2 = job2->databuf + (ptr - job1->databuf); + /* Copy over job2's image data */ + memcpy(newjob->databuf + newjob->datalen + i, + ptr2 + 32 + 1088, i - 32 - 1088); + newjob->datalen += i - 32 - 1088; /* add in job2 length */ + } + + newjob->datalen += i; + ptr += i; + } + +done: + return newjob; +} + +#undef JOB_EQUIV + static void dnpds40_build_cmd(struct dnpds40_cmd *cmd, char *arg1, char *arg2, uint32_t arg3_len) { memset(cmd, 0x20, sizeof(*cmd)); @@ -238,6 +428,8 @@ static char *dnpds40_printer_type(int type) case P_DNP_DSRX1: return "DSRX1"; case P_DNP_DS620: return "DS620"; case P_DNP_DS820: return "DS820"; + case P_CITIZEN_CW01: return "CW01"; + case P_CITIZEN_OP900II: return "OP900ii"; default: break; } return "Unknown"; @@ -518,8 +710,6 @@ static void *dnpds40_init(void) } memset(ctx, 0, sizeof(struct dnpds40_ctx)); - ctx->type = P_ANY; - return ctx; } @@ -527,31 +717,53 @@ static void *dnpds40_init(void) ((ctx->ver_major > (__major)) || \ (ctx->ver_major == (__major) && ctx->ver_minor >= (__minor))) -static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int dnpds40_query_mqty(struct dnpds40_ctx *ctx) +{ + struct dnpds40_cmd cmd; + uint8_t *resp; + int len = 0, count; + + /* 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); + + count = atoi((char*)resp+4); + free(resp); + + if (count) { + /* Old-sk00l models report one less than they should */ + if (!ctx->correct_count) + count++; + + count -= ctx->mediaoffset; + } + + return count; +} + +static int dnpds40_attach(void *vctx, struct libusb_device_handle *dev, int type, + 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; + ctx->type = type; - device = libusb_get_device(dev); - libusb_get_device_descriptor(device, &desc); - - ctx->type = lookup_printer_type(&dnpds40_backend, - desc.idVendor, desc.idProduct); - - { - /* Get Firmware Version */ + if (test_mode < TEST_MODE_NOATTACH) { struct dnpds40_cmd cmd; uint8_t *resp; int len = 0; + /* Get Firmware Version */ dnpds40_build_cmd(&cmd, "INFO", "FVER", 0); resp = dnpds40_resp_cmd(ctx, &cmd, &len); @@ -567,6 +779,8 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, ptr = strtok(NULL, "."); ctx->ver_minor = atoi(ptr); free(resp); + } else { + return CUPS_BACKEND_FAILED; } /* Get Serial Number */ @@ -577,6 +791,8 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, dnpds40_cleanup_string((char*)resp, len); ctx->serno = (char*) resp; /* Do NOT free resp! */ + } else { + return CUPS_BACKEND_FAILED; } /* Query Media Info */ @@ -598,53 +814,84 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, ctx->media--; free(resp); + } else { + return CUPS_BACKEND_FAILED; } - } - if (ctx->type == P_DNP_DS80D) { - struct dnpds40_cmd cmd; - uint8_t *resp; - int len = 0; + if (ctx->type == P_DNP_DS80D) { + struct dnpds40_cmd cmd; + uint8_t *resp; + int len = 0; - /* Query Duplex Media Info */ - dnpds40_build_cmd(&cmd, "INFO", "CUT_PAPER", 0); + /* Query Duplex Media Info */ + dnpds40_build_cmd(&cmd, "INFO", "CUT_PAPER", 0); - resp = dnpds40_resp_cmd(ctx, &cmd, &len); - if (resp) { - char tmp[5]; + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (resp) { + char tmp[5]; - dnpds40_cleanup_string((char*)resp, len); + dnpds40_cleanup_string((char*)resp, len); - memcpy(tmp, resp + 4, 4); - tmp[4] = 0; + memcpy(tmp, resp + 4, 4); + tmp[4] = 0; - ctx->duplex_media = atoi(tmp); + ctx->duplex_media = atoi(tmp); - /* Subtract out the paper status */ - if (ctx->duplex_media & 3) - ctx->duplex_media -= (ctx->duplex_media & 3); + /* Subtract out the paper status */ + if (ctx->duplex_media & 3) + ctx->duplex_media -= (ctx->duplex_media & 3); - free(resp); + free(resp); + } else { + return CUPS_BACKEND_FAILED; + } } - } -#ifdef DNP_ONLY - /* Only allow DNP printers to work. Rebadged versions should not. */ +#if (defined(DNP_ONLY) || defined(CITIZEN_ONLY)) + { + char buf[256]; + buf[0] = 0; + libusb_get_string_descriptor_ascii(dev, desc->iManufacturer, (unsigned char*)buf, STR_LEN_MAX); + sanitize_string(buf); +#ifdef DNP_ONLY /* Only allow DNP printers to work. */ + if (strncmp(buf, "Dai", 3)) /* "Dai Nippon Printing" */ + return CUPS_BACKEND_FAILED; +#endif +#ifdef CITIZEN_ONLY /* Only allow CITIZEN printers to work. */ + if (strncmp(buf, "CIT", 3)) /* "CITIZEN SYSTEMS" */ + return CUPS_BACKEND_FAILED; +#endif + } +#endif + } else { + ctx->ver_major = 3; + ctx->ver_minor = 0; + ctx->version = strdup("UNKNOWN"); + switch(ctx->type) { + case P_DNP_DS80D: + ctx->duplex_media = 200; + /* Intentional fallthrough */ + case P_DNP_DS80: + case P_DNP_DS820: + ctx->media = 510; /* 8x12 */ + break; + case P_DNP_DSRX1: + ctx->media = 310; /* 6x8 */ + break; + default: + ctx->media = 400; /* 6x9 */ + break; + } - { /* Validate USB Vendor String is "Dai Nippon Printing" */ - char buf[256]; - buf[0] = 0; - libusb_get_string_descriptor_ascii(dev, desc->iManufacturer, (unsigned char*)buf, STR_LEN_MAX); - sanitize_string(buf); - if (strncmp(buf, "Dai", 3)) - return 0; + if (getenv("MEDIA_CODE")) + ctx->media = atoi(getenv("MEDIA_CODE")); } -#endif /* Per-printer options */ switch (ctx->type) { case P_DNP_DS40: ctx->native_width = 1920; + ctx->max_height = 5480; ctx->supports_6x9 = 1; if (FW_VER_CHECK(1,04)) ctx->supports_counterp = 1; @@ -652,10 +899,15 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, ctx->supports_matte = 1; if (FW_VER_CHECK(1,40)) ctx->supports_2x6 = 1; + if (FW_VER_CHECK(1,50)) + ctx->supports_3x5x2 = 1; + if (FW_VER_CHECK(1,60)) + ctx->supports_fullcut = ctx->supports_6x6 = 1; // No 5x5! break; case P_DNP_DS80: case P_DNP_DS80D: ctx->native_width = 2560; + ctx->max_height = 7536; if (FW_VER_CHECK(1,02)) ctx->supports_counterp = 1; if (FW_VER_CHECK(1,30)) @@ -663,6 +915,7 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, break; case P_DNP_DSRX1: ctx->native_width = 1920; + ctx->max_height = 5480; ctx->supports_counterp = 1; ctx->supports_matte = 1; if (FW_VER_CHECK(1,10)) @@ -670,12 +923,32 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, if (FW_VER_CHECK(1,20)) ctx->supports_3x5x2 = 1; if (FW_VER_CHECK(2,00)) { /* AKA RX1HS */ + ctx->needs_mlot = 1; ctx->supports_mediaoffset = 1; ctx->supports_iserial = 1; } + if (FW_VER_CHECK(2,06)) { + ctx->supports_5x5 = ctx->supports_6x6 = 1; + } + break; + case P_CITIZEN_OP900II: + ctx->native_width = 1920; + ctx->max_height = 5480; + ctx->supports_counterp = 1; + ctx->supports_matte = 1; + ctx->supports_mqty_default = 1; + ctx->supports_6x9 = 1; + if (FW_VER_CHECK(1,11)) + ctx->supports_2x6 = 1; + break; + case P_CITIZEN_CW01: + ctx->native_width = 2048; + ctx->max_height = 5480; + ctx->supports_6x9 = 1; break; case P_DNP_DS620: ctx->native_width = 1920; + ctx->max_height = 5480; ctx->correct_count = 1; ctx->supports_counterp = 1; ctx->supports_matte = 1; @@ -706,6 +979,7 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, break; case P_DNP_DS820: ctx->native_width = 2560; + ctx->max_height = 7536; ctx->correct_count = 1; ctx->supports_counterp = 1; ctx->supports_matte = 1; @@ -728,8 +1002,8 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, ctx->supports_gamma = 1; break; default: - ERROR("Unknown vid/pid %04x/%04x (%d)\n", desc.idVendor, desc.idProduct, ctx->type); - return; + ERROR("Unknown printer type %d\n", ctx->type); + return CUPS_BACKEND_FAILED; } ctx->last_matte = -1; @@ -748,7 +1022,7 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, } #endif - if (ctx->supports_mediaoffset) { + if (test_mode < TEST_MODE_NOATTACH && ctx->supports_mediaoffset) { /* Get Media Offset */ struct dnpds40_cmd cmd; uint8_t *resp; @@ -759,12 +1033,14 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, if (resp) { ctx->mediaoffset = atoi((char*)resp+4); free(resp); + } else { + return CUPS_BACKEND_FAILED; } } else if (!ctx->correct_count) { ctx->mediaoffset = 50; } - if (ctx->supports_mqty_default) { + if (test_mode < TEST_MODE_NOATTACH && ctx->supports_mqty_default) { struct dnpds40_cmd cmd; uint8_t *resp; int len = 0; @@ -777,6 +1053,8 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, ctx->media_count_new = atoi((char*)resp+4); free(resp); ctx->media_count_new -= ctx->mediaoffset; + } else { + return CUPS_BACKEND_FAILED; } } else { /* Look it up for legacy models & FW */ @@ -799,12 +1077,15 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, ctx->media_count_new = 180; break; default: - ctx->media_count_new = 999; // non-zero + ctx->media_count_new = 0; break; } break; case P_DNP_DSRX1: switch (ctx->media) { + case 210: // 2L + ctx->media_count_new = 350; + break; case 300: // PC ctx->media_count_new = 700; break; @@ -812,7 +1093,42 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, ctx->media_count_new = 350; break; default: - ctx->media_count_new = 999; // non-zero + ctx->media_count_new = 0; + break; + } + break; + case P_CITIZEN_OP900II: + switch (ctx->media) { + case 210: // 2L + ctx->media_count_new = 350; + break; + case 300: // PC + ctx->media_count_new = 600; + break; + case 310: // A5 + ctx->media_count_new = 300; + break; + case 400: // A5W + ctx->media_count_new = 280; + break; + default: + ctx->media_count_new = 0; + break; + } + break; + case P_CITIZEN_CW01: + switch (ctx->media) { + case 300: // PC + ctx->media_count_new = 600; + break; + case 350: // 2L + ctx->media_count_new = 230; + break; + case 400: // A5W + ctx->media_count_new = 280; + break; + default: + ctx->media_count_new = 0; break; } break; @@ -826,15 +1142,32 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, ctx->media_count_new = 110; break; default: - ctx->media_count_new = 999; // non-zero + ctx->media_count_new = 0; break; } break; default: - ctx->media_count_new = 999; // non-zero + ctx->media_count_new = 0; break; } } + + /* Fill out marker structure */ + ctx->marker.color = "#00FFFF#FF00FF#FFFF00"; + ctx->marker.name = dnpds40_media_types(ctx->media); + ctx->marker.levelmax = ctx->media_count_new; + ctx->marker.levelnow = -2; + + return CUPS_BACKEND_OK; +} + +static void dnpds40_cleanup_job(const void *vjob) { + const struct dnpds40_printjob *job = vjob; + + if (job->databuf) + free(job->databuf); + + free((void*)job); } static void dnpds40_teardown(void *vctx) { @@ -843,7 +1176,7 @@ static void dnpds40_teardown(void *vctx) { if (!ctx) return; - if (ctx->type == P_DNP_DS80D) { + if (test_mode < TEST_MODE_NOATTACH && ctx->type == P_DNP_DS80D) { struct dnpds40_cmd cmd; /* Check to see if last print was the front side @@ -856,8 +1189,6 @@ static void dnpds40_teardown(void *vctx) { } } - if (ctx->databuf) - free(ctx->databuf); if (ctx->serno) free(ctx->serno); if (ctx->version) @@ -865,22 +1196,28 @@ static void dnpds40_teardown(void *vctx) { free(ctx); } -#define MAX_PRINTJOB_LEN (((2560*7536+1024+54))*3+1024) /* Worst-case, YMC */ +#define MAX_PRINTJOB_LEN (((ctx->native_width*ctx->max_height+1024+54+10))*3+1024) /* Worst-case, YMC */ -static int dnpds40_read_parse(void *vctx, int data_fd) { +static int dnpds40_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { struct dnpds40_ctx *ctx = vctx; int run = 1; char buf[9] = { 0 }; - uint32_t dpi; + struct dnpds40_printjob *job = NULL; + struct dyesub_joblist *list; + int can_combine = 0; if (!ctx) return CUPS_BACKEND_FAILED; - if (ctx->databuf) { - free(ctx->databuf); - ctx->databuf = NULL; + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; } + memset(job, 0, sizeof(*job)); + job->printspeed = -1; + job->copies = copies; /* 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, @@ -891,100 +1228,114 @@ static int dnpds40_read_parse(void *vctx, int data_fd) { the end of the job. */ - ctx->datalen = 0; - ctx->databuf = malloc(MAX_PRINTJOB_LEN); - if (!ctx->databuf) { + job->databuf = malloc(MAX_PRINTJOB_LEN); + if (!job->databuf) { ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_CANCEL; + return CUPS_BACKEND_RETRY_CURRENT; } - /* Clear everything out */ - dpi = 0; - ctx->matte = 0; - ctx->cutter = 0; - ctx->manual_copies = 0; - ctx->multicut = 0; - ctx->fullcut = 0; - ctx->printspeed = -1; - ctx->can_rewind = 0; - ctx->buf_needed = 0; - while (run) { int remain, i, j; /* Read in command header */ - i = read(data_fd, ctx->databuf + ctx->datalen, + i = read(data_fd, job->databuf + job->datalen, sizeof(struct dnpds40_cmd)); - if (i < 0) + if (i < 0) { + dnpds40_cleanup_job(job); return i; + } if (i == 0) break; - if (i < (int) sizeof(struct dnpds40_cmd)) + if (i < (int) sizeof(struct dnpds40_cmd)) { + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } - if (ctx->databuf[ctx->datalen + 0] != 0x1b || - ctx->databuf[ctx->datalen + 1] != 0x50) { - ERROR("Unrecognized header data format @%d!\n", ctx->datalen); + if (job->databuf[job->datalen + 0] != 0x1b || + job->databuf[job->datalen + 1] != 0x50) { + struct cw01_spool_hdr hdr; + /* See if it's the "classic" CW01 header */ + memcpy(&hdr, job->databuf + job->datalen, sizeof(hdr)); + hdr.plane_len = le32_to_cpu(hdr.plane_len); + + if (hdr.type > 0x06 || + hdr.res > 0x01 || + hdr.null1[0] || hdr.null1[1] || hdr.null1[2] || hdr.null1[3]) { + ERROR("Unrecognized header data format @%d!\n", job->datalen); + dnpds40_cleanup_job(job); + } else { + job->dpi = (hdr.res == DPI_600) ? 600 : 334; + i = cw01_read_parse(job, data_fd, &hdr, i); + if (i == CUPS_BACKEND_OK) + goto parsed; + else { + dnpds40_cleanup_job(job); + return i; + } + } return CUPS_BACKEND_CANCEL; } /* Parse out length of data chunk, if any */ - memcpy(buf, ctx->databuf + ctx->datalen + 24, 8); + memcpy(buf, job->databuf + job->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), + i = read(data_fd, job->databuf + job->datalen + sizeof(struct dnpds40_cmd), remain); if (i < 0) { - ERROR("Data Read Error: %d (%d/%d @%d)\n", i, remain, j, ctx->datalen); + ERROR("Data Read Error: %d (%d/%d @%d)\n", i, remain, j, job->datalen); + dnpds40_cleanup_job(job); return i; } - if (i == 0) + if (i == 0) { + dnpds40_cleanup_job(job); return 1; - ctx->datalen += i; + } + job->datalen += i; remain -= i; } - ctx->datalen -= j; /* Back it off */ + job->datalen -= j; /* Back it off */ /* Check for some offsets */ - if(!memcmp("CNTRL QTY", ctx->databuf + ctx->datalen+2, 9)) { + if(!memcmp("CNTRL QTY", job->databuf + job->datalen+2, 9)) { /* Ignore this. We will insert our own later on */ continue; } - if(!memcmp("CNTRL CUTTER", ctx->databuf + ctx->datalen+2, 12)) { - memcpy(buf, ctx->databuf + ctx->datalen + 32, 8); - ctx->cutter = atoi(buf); + if(!memcmp("CNTRL CUTTER", job->databuf + job->datalen+2, 12)) { + memcpy(buf, job->databuf + job->datalen + 32, 8); + job->cutter = atoi(buf); /* We'll insert it ourselves later */ continue; } - if(!memcmp("CNTRL BUFFCNTRL", ctx->databuf + ctx->datalen+2, 15)) { + if(!memcmp("CNTRL BUFFCNTRL", job->databuf + job->datalen+2, 15)) { /* Ignore this. We will insert our own later on if the printer and job support it. */ continue; } - if(!memcmp("CNTRL OVERCOAT", ctx->databuf + ctx->datalen+2, 14)) { + if(!memcmp("CNTRL OVERCOAT", job->databuf + job->datalen+2, 14)) { if (ctx->supports_matte) { - memcpy(buf, ctx->databuf + ctx->datalen + 32, 8); - ctx->matte = atoi(buf); + memcpy(buf, job->databuf + job->datalen + 32, 8); + job->matte = atoi(buf); } else { WARNING("Printer FW does not support matte prints, using glossy mode\n"); } /* We'll insert our own later, if appropriate */ continue; } - if(!memcmp("IMAGE MULTICUT", ctx->databuf + ctx->datalen+2, 14)) { - memcpy(buf, ctx->databuf + ctx->datalen + 32, 8); - ctx->multicut = atoi(buf); + if(!memcmp("IMAGE MULTICUT", job->databuf + job->datalen+2, 14)) { + memcpy(buf, job->databuf + job->datalen + 32, 8); + job->multicut = atoi(buf); /* Backend automatically handles rewind support, so ignore application requests to use it. */ - if (ctx->multicut > 400) - ctx->multicut -= 400; + if (job->multicut > 400) + job->multicut -= 400; /* We'll insert this ourselves later. */ continue; } - if(!memcmp("CNTRL FULL_CUTTER_SET", ctx->databuf + ctx->datalen+2, 21)) { + if(!memcmp("CNTRL FULL_CUTTER_SET", job->databuf + job->datalen+2, 21)) { if (!ctx->supports_fullcut) { WARNING("Printer FW does not support full cutter control!\n"); continue; @@ -999,134 +1350,139 @@ static int dnpds40_read_parse(void *vctx, int data_fd) { WARNING("Full cutter argument length incorrect, ignoring!\n"); continue; } else if (!ctx->supports_adv_fullcut) { - if (ctx->databuf[ctx->datalen + 32 + 12] != '0' || - ctx->databuf[ctx->datalen + 32 + 13] != '0' || - ctx->databuf[ctx->datalen + 32 + 14] != '0') { + if (job->databuf[job->datalen + 32 + 12] != '0' || + job->databuf[job->datalen + 32 + 13] != '0' || + job->databuf[job->datalen + 32 + 14] != '0') { WARNING("Full cutter scrap setting not supported on this firmware, ignoring!\n"); continue; } } // XXX enforce cut counts/sizes? - ctx->fullcut = 1; + job->fullcut = 1; } - if(!memcmp("IMAGE YPLANE", ctx->databuf + ctx->datalen + 2, 12)) { + if(!memcmp("IMAGE YPLANE", job->databuf + job->datalen + 2, 12)) { uint32_t y_ppm; /* Pixels Per Meter */ /* Validate vertical resolution */ - memcpy(&y_ppm, ctx->databuf + ctx->datalen + 32 + 42, sizeof(y_ppm)); + memcpy(&y_ppm, job->databuf + job->datalen + 32 + 42, sizeof(y_ppm)); y_ppm = le32_to_cpu(y_ppm); switch (y_ppm) { case 11808: - dpi = 300; + job->dpi = 300; break; case 23615: - dpi = 600; + job->dpi = 600; break; default: ERROR("Unrecognized printjob resolution (%u ppm)\n", y_ppm); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } /* Validate horizontal size */ - memcpy(&y_ppm, ctx->databuf + ctx->datalen + 32 + 18, sizeof(y_ppm)); + memcpy(&y_ppm, job->databuf + job->datalen + 32 + 18, sizeof(y_ppm)); y_ppm = le32_to_cpu(y_ppm); if (y_ppm != ctx->native_width) { ERROR("Incorrect horizontal resolution (%u), aborting!\n", y_ppm); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } } - if(!memcmp("CNTRL PRINTSPEED", ctx->databuf + ctx->datalen + 2, 16)) { + if(!memcmp("CNTRL PRINTSPEED", job->databuf + job->datalen + 2, 16)) { if (!ctx->supports_printspeed) { WARNING("Printer does not support PRINTSPEED\n"); continue; } - memcpy(buf, ctx->databuf + ctx->datalen + 32, 8); - ctx->printspeed = atoi(buf) / 10; + memcpy(buf, job->databuf + job->datalen + 32, 8); + job->printspeed = atoi(buf) / 10; /* We'll insert this ourselves later. */ continue; } /* This is the last block.. */ - if(!memcmp("CNTRL START", ctx->databuf + ctx->datalen + 2, 11)) + if(!memcmp("CNTRL START", job->databuf + job->datalen + 2, 11)) run = 0; /* Add in the size of this chunk */ - ctx->datalen += sizeof(struct dnpds40_cmd) + j; + job->datalen += sizeof(struct dnpds40_cmd) + j; } - +parsed: /* If we have no data.. don't bother */ - if (!ctx->datalen) + if (!job->datalen) { + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } /* Sanity check matte mode */ - if (ctx->matte == 21 && !ctx->supports_finematte) { + if (job->matte == 21 && !ctx->supports_finematte) { WARNING("Printer FW does not support Fine Matte mode, downgrading to normal matte\n"); - ctx->matte = 1; - } else if (ctx->matte == 22 && !ctx->supports_luster) { + job->matte = 1; + } else if (job->matte == 22 && !ctx->supports_luster) { WARNING("Printer FW does not support Luster mode, downgrading to normal matte\n"); - ctx->matte = 1; - } else if (ctx->matte > 1 && !ctx->supports_advmatte) { + job->matte = 1; + } else if (job->matte > 1 && !ctx->supports_advmatte) { WARNING("Printer FW does not support advanced matte modes, downgrading to normal matte\n"); - ctx->matte = 1; + job->matte = 1; } /* Pick a sane default value for printspeed if not specified */ - if (ctx->printspeed == -1 || ctx->printspeed > 3) + if (job->printspeed == -1 || job->printspeed > 3) { - if (dpi == 600) - ctx->printspeed = 1; + if (job->dpi == 600) + job->printspeed = 1; else - ctx->printspeed = 0; + job->printspeed = 0; } /* And sanity-check whatever value is there */ - if (ctx->printspeed == 0 && dpi == 600) { - ctx->printspeed = 1; - } else if (ctx->printspeed == 1 && dpi == 300) { - ctx->printspeed = 0; + if (job->printspeed == 0 && job->dpi == 600) { + job->printspeed = 1; + } else if (job->printspeed == 1 && job->dpi == 300) { + job->printspeed = 0; } /* Make sure MULTICUT is sane, most validation needs this */ - if (!ctx->multicut) { + if (!job->multicut && ctx->type != P_CITIZEN_CW01) { WARNING("Missing or illegal MULTICUT command!\n"); - if (dpi == 300) - ctx->buf_needed = 1; + if (job->dpi == 300) + job->buf_needed = 1; else - ctx->buf_needed = 2; + job->buf_needed = 2; goto skip_checks; } /* Only DS80D supports Cut Paper types */ - if (ctx->multicut > 100 && + if (job->multicut > 100 && ctx->type != P_DNP_DS80D) { ERROR("Only DS80D supports cut-paper sizes!\n"); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } /* Figure out the number of buffers we need. */ - ctx->buf_needed = 1; + job->buf_needed = 1; - if (dpi == 600) { + if (job->dpi == 600) { switch(ctx->type) { case P_DNP_DS620: - if (ctx->multicut == MULTICUT_6x9 || - ctx->multicut == MULTICUT_6x4_5X2) - ctx->buf_needed = 2; + if (job->multicut == MULTICUT_6x9 || + job->multicut == MULTICUT_6x4_5X2) + job->buf_needed = 2; break; case P_DNP_DS80: /* DS80/CX-W */ - if (ctx->matte && (ctx->multicut == MULTICUT_8xA4LEN || - ctx->multicut == MULTICUT_8x4X3 || - ctx->multicut == MULTICUT_8x8_8x4 || - ctx->multicut == MULTICUT_8x6X2 || - ctx->multicut == MULTICUT_8x12)) - ctx->buf_needed = 2; + if (job->matte && (job->multicut == MULTICUT_8xA4LEN || + job->multicut == MULTICUT_8x4X3 || + job->multicut == MULTICUT_8x8_8x4 || + job->multicut == MULTICUT_8x6X2 || + job->multicut == MULTICUT_8x12)) + job->buf_needed = 2; break; case P_DNP_DS80D: - if (ctx->matte) { - int mcut = ctx->multicut; + if (job->matte) { + int mcut = job->multicut; if (mcut > MULTICUT_S_BACK) mcut -= MULTICUT_S_BACK; @@ -1138,129 +1494,150 @@ static int dnpds40_read_parse(void *vctx, int data_fd) { mcut == MULTICUT_8x8_8x4 || mcut == MULTICUT_8x6X2 || mcut == MULTICUT_8x12) - ctx->buf_needed = 2; + job->buf_needed = 2; if (mcut == MULTICUT_S_8x12 || mcut == MULTICUT_S_8x6X2 || mcut == MULTICUT_S_8x4X3) - ctx->buf_needed = 2; + job->buf_needed = 2; } break; case P_DNP_DS820: // Nothing; all sizes only need 1 buffer break; + case P_CITIZEN_CW01: + job->buf_needed = 2; + break; default: /* DS40/CX/RX1/CY/everything else */ - if (ctx->matte) { - if (ctx->multicut == MULTICUT_6x8 || - ctx->multicut == MULTICUT_6x9 || - ctx->multicut == MULTICUT_6x4X2 || - ctx->multicut == MULTICUT_5x7 || - ctx->multicut == MULTICUT_5x3_5X2) - ctx->buf_needed = 2; + if (job->matte) { + if (job->multicut == MULTICUT_6x8 || + job->multicut == MULTICUT_6x9 || + job->multicut == MULTICUT_6x4X2 || + job->multicut == MULTICUT_5x7 || + job->multicut == MULTICUT_5x3_5X2) + job->buf_needed = 2; } else { - if (ctx->multicut == MULTICUT_6x8 || - ctx->multicut == MULTICUT_6x9 || - ctx->multicut == MULTICUT_6x4X2) - ctx->buf_needed = 1; + if (job->multicut == MULTICUT_6x8 || + job->multicut == MULTICUT_6x9 || + job->multicut == MULTICUT_6x4X2) + job->buf_needed = 1; } break; } } + if (job->dpi == 334 && ctx->type != P_CITIZEN_CW01) + { + ERROR("Illegal resolution (%u) for printer!\n", job->dpi); + dnpds40_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } /* Sanity-check type vs loaded media */ - if (ctx->multicut < 100) { + if (job->multicut == 0) + goto skip_multicut; + + if (job->multicut < 100) { switch(ctx->media) { case 200: //"5x3.5 (L)" - if (ctx->multicut != MULTICUT_5x3_5) { - ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, ctx->multicut); + if (job->multicut != MULTICUT_5x3_5) { + ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, job->multicut); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } break; case 210: //"5x7 (2L)" - if (ctx->multicut != MULTICUT_5x3_5 && ctx->multicut != MULTICUT_5x7 && - ctx->multicut != MULTICUT_5x3_5X2 && ctx->multicut != MULTICUT_5x5) { - ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, ctx->multicut); + if (job->multicut != MULTICUT_5x3_5 && job->multicut != MULTICUT_5x7 && + job->multicut != MULTICUT_5x3_5X2 && job->multicut != MULTICUT_5x5) { + ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, job->multicut); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } /* Only 3.5x5 on 7x5 media can be rewound */ - if (ctx->multicut == MULTICUT_5x3_5) - ctx->can_rewind = 1; + if (job->multicut == MULTICUT_5x3_5) + job->can_rewind = 1; break; case 300: //"6x4 (PC)" - if (ctx->multicut != MULTICUT_6x4) { - ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, ctx->multicut); + if (job->multicut != MULTICUT_6x4) { + ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, job->multicut); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } break; case 310: //"6x8 (A5)" - if (ctx->multicut != MULTICUT_6x4 && ctx->multicut != MULTICUT_6x8 && - ctx->multicut != MULTICUT_6x4X2 && - ctx->multicut != MULTICUT_6x6 && ctx->multicut != 30) { - ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, ctx->multicut); + if (job->multicut != MULTICUT_6x4 && job->multicut != MULTICUT_6x8 && + job->multicut != MULTICUT_6x4X2 && + job->multicut != MULTICUT_6x6 && job->multicut != 30) { + ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, job->multicut); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } /* Only 6x4 on 6x8 media can be rewound */ - if (ctx->multicut == MULTICUT_6x4) - ctx->can_rewind = 1; + if (job->multicut == MULTICUT_6x4) + job->can_rewind = 1; break; case 400: //"6x9 (A5W)" - if (ctx->multicut != MULTICUT_6x4 && ctx->multicut != MULTICUT_6x8 && - ctx->multicut != MULTICUT_6x9 && ctx->multicut != MULTICUT_6x4X2 && - ctx->multicut != MULTICUT_6x6 && - ctx->multicut != MULTICUT_6x4_5 && ctx->multicut != MULTICUT_6x4_5X2) { - ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, ctx->multicut); + if (job->multicut != MULTICUT_6x4 && job->multicut != MULTICUT_6x8 && + job->multicut != MULTICUT_6x9 && job->multicut != MULTICUT_6x4X2 && + job->multicut != MULTICUT_6x6 && + job->multicut != MULTICUT_6x4_5 && job->multicut != MULTICUT_6x4_5X2) { + ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, job->multicut); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } /* Only 6x4 or 6x4.5 on 6x9 media can be rewound */ - if (ctx->multicut == MULTICUT_6x4 || ctx->multicut == MULTICUT_6x4_5) - ctx->can_rewind = 1; + if (job->multicut == MULTICUT_6x4 || job->multicut == MULTICUT_6x4_5) + job->can_rewind = 1; break; case 500: //"8x10" if (ctx->type == P_DNP_DS820 && - (ctx->multicut == MULTICUT_8x7 || ctx->multicut == MULTICUT_8x9)) { + (job->multicut == MULTICUT_8x7 || job->multicut == MULTICUT_8x9)) { /* These are okay */ - } else if (ctx->multicut < MULTICUT_8x10 || ctx->multicut == MULTICUT_8x12 || - ctx->multicut == MULTICUT_8x6X2 || ctx->multicut >= MULTICUT_8x6_8x5 ) { - ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, ctx->multicut); + } else if (job->multicut < MULTICUT_8x10 || job->multicut == MULTICUT_8x12 || + job->multicut == MULTICUT_8x6X2 || job->multicut >= MULTICUT_8x6_8x5 ) { + ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, job->multicut); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } /* 8x4, 8x5 can be rewound */ - if (ctx->multicut == MULTICUT_8x4 || - ctx->multicut == MULTICUT_8x5) - ctx->can_rewind = 1; + if (job->multicut == MULTICUT_8x4 || + job->multicut == MULTICUT_8x5) + job->can_rewind = 1; break; case 510: //"8x12" - if (ctx->multicut < MULTICUT_8x10 || (ctx->multicut > MULTICUT_8xA4LEN && !(ctx->multicut == MULTICUT_8x7 || ctx->multicut == MULTICUT_8x9))) { - ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, ctx->multicut); + if (job->multicut < MULTICUT_8x10 || (job->multicut > MULTICUT_8xA4LEN && !(job->multicut == MULTICUT_8x7 || job->multicut == MULTICUT_8x9))) { + ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, job->multicut); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } /* 8x4, 8x5, 8x6 can be rewound */ - if (ctx->multicut == MULTICUT_8x4 || - ctx->multicut == MULTICUT_8x5 || - ctx->multicut == MULTICUT_8x6) - ctx->can_rewind = 1; + if (job->multicut == MULTICUT_8x4 || + job->multicut == MULTICUT_8x5 || + job->multicut == MULTICUT_8x6) + job->can_rewind = 1; break; case 600: //"A4" - if (ctx->multicut < MULTICUT_A5 || ctx->multicut > MULTICUT_A4x5X2) { - ERROR("Incorrect media for job loaded (%d vs %d)\n", ctx->media, ctx->multicut); + if (job->multicut < MULTICUT_A5 || job->multicut > MULTICUT_A4x5X2) { + ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, job->multicut); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } /* A4xn and A5 can be rewound */ - if (ctx->multicut == MULTICUT_A4x4 || - ctx->multicut == MULTICUT_A4x5 || - ctx->multicut == MULTICUT_A4x6 || - ctx->multicut == MULTICUT_A5) - ctx->can_rewind = 1; + if (job->multicut == MULTICUT_A4x4 || + job->multicut == MULTICUT_A4x5 || + job->multicut == MULTICUT_A4x6 || + job->multicut == MULTICUT_A5) + job->can_rewind = 1; break; default: - ERROR("Unknown media (%u vs %u)!\n", ctx->media, ctx->multicut); + ERROR("Unknown media (%u vs %u)!\n", ctx->media, job->multicut); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } - } else if (ctx->multicut < 400) { - int mcut = ctx->multicut; + } else if (job->multicut < 400) { + int mcut = job->multicut; switch(ctx->duplex_media) { case 100: //"8x10.75" @@ -1272,7 +1649,8 @@ static int dnpds40_read_parse(void *vctx, int data_fd) { if (mcut == MULTICUT_S_8x12 || mcut == MULTICUT_S_8x6X2 || mcut == MULTICUT_S_8x4X3) { - ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, ctx->multicut); + ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->duplex_media, job->multicut); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } break; @@ -1280,73 +1658,111 @@ static int dnpds40_read_parse(void *vctx, int data_fd) { /* Everything is legal */ break; default: - ERROR("Unknown duplexer media (%u vs %u)!\n", ctx->duplex_media, ctx->multicut); + ERROR("Unknown duplexer media (%u vs %u)!\n", ctx->duplex_media, job->multicut); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } } else { - ERROR("Multicut value out of range! (%u)\n", ctx->multicut); + ERROR("Multicut value out of range! (%u)\n", job->multicut); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } /* Additional santity checks, make sure printer support exists */ - if (!ctx->supports_6x6 && ctx->multicut == MULTICUT_6x6) { + if (!ctx->supports_6x6 && job->multicut == MULTICUT_6x6) { ERROR("Printer does not support 6x6 prints, aborting!\n"); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } - if (!ctx->supports_5x5 && ctx->multicut == MULTICUT_5x5) { + if (!ctx->supports_5x5 && job->multicut == MULTICUT_5x5) { ERROR("Printer does not support 5x5 prints, aborting!\n"); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } - if ((ctx->multicut == MULTICUT_6x4_5 || ctx->multicut == MULTICUT_6x4_5X2) && + if ((job->multicut == MULTICUT_6x4_5 || job->multicut == MULTICUT_6x4_5X2) && !ctx->supports_6x4_5) { ERROR("Printer does not support 6x4.5 prints, aborting!\n"); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } - if (ctx->multicut == MULTICUT_6x9 && !ctx->supports_6x9) { + if (job->multicut == MULTICUT_6x9 && !ctx->supports_6x9) { ERROR("Printer does not support 6x9 prints, aborting!\n"); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } - if (ctx->multicut == MULTICUT_5x3_5X2 && !ctx->supports_3x5x2) { + if (job->multicut == MULTICUT_5x3_5X2 && !ctx->supports_3x5x2) { ERROR("Printer does not support 3.5x5*2 prints, aborting!\n"); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } - if (ctx->fullcut && !ctx->supports_adv_fullcut && - ctx->multicut != MULTICUT_6x8) { +skip_multicut: + + if (job->fullcut && !ctx->supports_adv_fullcut && + job->multicut != MULTICUT_6x8) { ERROR("Printer does not support full control on sizes other than 6x8, aborting!\n"); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } - if (ctx->cutter == 120) { - if (ctx->multicut == MULTICUT_6x4 || ctx->multicut == MULTICUT_6x8) { + if (job->fullcut && job->cutter) { + WARNING("Cannot simultaneously use FULL_CUTTER and CUTTER, using the former\n"); + job->cutter = 0; + } + + if (job->cutter == 120) { + if (job->multicut == MULTICUT_6x4 || job->multicut == MULTICUT_6x8) { if (!ctx->supports_2x6) { ERROR("Printer does not support 2x6 prints, aborting!\n"); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } } else { ERROR("Printer only supports legacy 2-inch cuts on 4x6 or 8x6 jobs!"); + dnpds40_cleanup_job(job); return CUPS_BACKEND_CANCEL; } - - /* Work around firmware bug on DS40 where if we run out - of media, we can't resume the job without losing the - cutter setting. */ - // XXX add version test? what about other printers? - ctx->manual_copies = 1; } skip_checks: - DEBUG("dpi %u matte %d mcut %u cutter %d, bufs %d spd %d\n", - dpi, ctx->matte, ctx->multicut, ctx->cutter, ctx->buf_needed, ctx->printspeed); + DEBUG("job->dpi %u matte %d mcut %u cutter %d/%d, bufs %d spd %d\n", + job->dpi, job->matte, job->multicut, job->cutter, job->fullcut, job->buf_needed, job->printspeed); + + list = dyesub_joblist_create(&dnpds40_backend, ctx); + + can_combine = job->can_rewind; /* Any rewindable size can be stacked */ + + /* Try to combine prints */ + if (copies > 1 && can_combine) { + struct dnpds40_printjob *combined; + combined = combine_jobs(job, job); + if (combined) { + combined->copies = job->copies / 2; + combined->can_rewind = 0; + dyesub_joblist_addjob(list, combined); + + if (job->copies & 1) { + job->copies = 1; + } else { + dnpds40_cleanup_job(job); + job = NULL; + } + } + } + if (job) { + dyesub_joblist_addjob(list, job); + } + + *vjob = list; return CUPS_BACKEND_OK; } -static int dnpds40_main_loop(void *vctx, int copies) { +static int dnpds40_main_loop(void *vctx, const void *vjob) { struct dnpds40_ctx *ctx = vctx; int ret; struct dnpds40_cmd cmd; @@ -1356,23 +1772,52 @@ static int dnpds40_main_loop(void *vctx, int copies) { char buf[9]; int status; int buf_needed; + int multicut; int count = 0; + int manual_copies = 0; + int copies; + + const struct dnpds40_printjob *job = vjob; if (!ctx) return CUPS_BACKEND_FAILED; + if (!job) + return CUPS_BACKEND_FAILED; - buf_needed = ctx->buf_needed; + buf_needed = job->buf_needed; + multicut = job->multicut; + copies = job->copies; /* If we switch major overcoat modes, we need both buffers */ - if (!!ctx->matte != ctx->last_matte) + if (!!job->matte != ctx->last_matte) buf_needed = 2; - if (ctx->media_count_new) { - ATTR("marker-colors=#00FFFF#FF00FF#FFFF00\n"); - ATTR("marker-high-levels=100\n"); - ATTR("marker-low-levels=10\n"); - ATTR("marker-names='%s'\n", dnpds40_media_types(ctx->media)); - ATTR("marker-types=ribbonWax\n"); + if (job->cutter == 120) { + /* Work around firmware bug on DS40 where if we run out + of media, we can't resume the job without losing the + cutter setting. */ + // XXX add version test? what about other printers? + manual_copies = 1; + } + + /* RX1HS requires HS media, but the only way to tell is that the + HS media reports a lot code, while the non-HS media does not. */ + if (ctx->needs_mlot) { + /* Get Media Lot */ + dnpds40_build_cmd(&cmd, "INFO", "MLOT", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return CUPS_BACKEND_FAILED; + + dnpds40_cleanup_string((char*)resp, len); + + len = strlen((char*)resp); + free(resp); + if (!len) { + ERROR("Media does not report a valid lot number (non-HS media in RX1HS?)\n"); + return CUPS_BACKEND_STOP; + } } top: @@ -1442,34 +1887,17 @@ top: { /* Figure out remaining native prints */ - dnpds40_build_cmd(&cmd, "INFO", "MQTY", 0); - - resp = dnpds40_resp_cmd(ctx, &cmd, &len); - if (!resp) + ctx->marker.levelnow = dnpds40_query_mqty(ctx); + if (ctx->marker.levelnow < 0) return CUPS_BACKEND_FAILED; + dump_markers(&ctx->marker, 1, 0); - dnpds40_cleanup_string((char*)resp, len); - - count = atoi((char*)resp+4); - free(resp); - - if (count) { - /* Old-sk00l models report one less than they should */ - if (!ctx->correct_count) - count++; - - count -= ctx->mediaoffset; - } - - if (ctx->media_count_new) { - ATTR("marker-levels=%d\n", count * 100 / ctx->media_count_new); - ATTR("marker-message=\"%d native prints remaining on '%s' ribbon\"\n", count, dnpds40_media_types(ctx->media)); - } + count = ctx->marker.levelnow; // For logic below. /* See if we can rewind to save media */ - if (ctx->can_rewind && ctx->supports_rewind) { + if (job->can_rewind && ctx->supports_rewind) { /* Tell printer to use rewind */ - ctx->multicut += 400; + multicut += 400; /* Get Media remaining */ dnpds40_build_cmd(&cmd, "INFO", "RQTY", 0); @@ -1483,6 +1911,26 @@ top: free(resp); } + if (ctx->type == P_CITIZEN_CW01) { + /* Get Vertical resolution */ + dnpds40_build_cmd(&cmd, "INFO", "RESOLUTION_V", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return CUPS_BACKEND_FAILED; + + dnpds40_cleanup_string((char*)resp, len); + +#if 0 // XXX Fix 600dpi support on CW01 + // have to read the last DPI, and send the correct CWD over? + if (ctx->dpi == 600 && strcmp("RV0334", *char*)resp) { + ERROR("600DPI prints not yet supported, need 600DPI CWD load"); + return CUPS_BACKEND_CANCEL; + } +#endif + free(resp); + } + /* Verify we have sufficient media for prints */ #if 0 // disabled this to allow error to be reported on the printer panel @@ -1491,22 +1939,21 @@ top: return CUPS_BACKEND_STOP; } #endif - if (count < copies) { WARNING("Printer does not have sufficient remaining media (%d) to complete job (%d)\n", copies, count); } } /* Store our last multicut state */ - ctx->last_multicut = ctx->multicut; + ctx->last_multicut = multicut; /* Tell printer how many copies to make */ - snprintf(buf, sizeof(buf), "%07d\r", ctx->manual_copies ? 1 : copies); + snprintf(buf, sizeof(buf), "%07d\r", manual_copies ? 1 : copies); dnpds40_build_cmd(&cmd, "CNTRL", "QTY", 8); if ((ret = dnpds40_do_cmd(ctx, &cmd, (uint8_t*)buf, 8))) return CUPS_BACKEND_FAILED; - if (!ctx->manual_copies) + if (!manual_copies) copies = 1; /* Enable job resumption on correctable errors */ @@ -1515,7 +1962,7 @@ top: /* DS80D does not support BUFFCNTRL when using cut media; all others support this */ if (ctx->type != P_DNP_DS80D || - ctx->multicut < 100) { + multicut < 100) { dnpds40_build_cmd(&cmd, "CNTRL", "BUFFCNTRL", 8); if ((ret = dnpds40_do_cmd(ctx, &cmd, (uint8_t*)buf, 8))) return CUPS_BACKEND_FAILED; @@ -1524,15 +1971,15 @@ top: /* Set overcoat parameters if appropriate */ if (ctx->supports_matte) { - snprintf(buf, sizeof(buf), "%08d", ctx->matte); + snprintf(buf, sizeof(buf), "%08d", job->matte); dnpds40_build_cmd(&cmd, "CNTRL", "OVERCOAT", 8); if ((ret = dnpds40_do_cmd(ctx, &cmd, (uint8_t*)buf, 8))) return CUPS_BACKEND_FAILED; } /* Program in the cutter setting */ - if (ctx->cutter) { - snprintf(buf, sizeof(buf), "%08d", ctx->cutter); + if (job->cutter) { + snprintf(buf, sizeof(buf), "%08d", job->cutter); dnpds40_build_cmd(&cmd, "CNTRL", "CUTTER", 8); if ((ret = dnpds40_do_cmd(ctx, &cmd, (uint8_t*)buf, 8))) return CUPS_BACKEND_FAILED; @@ -1540,21 +1987,23 @@ top: /* Send over the printspeed if appropriate */ if (ctx->supports_printspeed) { - snprintf(buf, sizeof(buf), "%08d", ctx->printspeed * 10); + snprintf(buf, sizeof(buf), "%08d", job->printspeed * 10); dnpds40_build_cmd(&cmd, "CNTRL", "PRINTSPEED", 8); if ((ret = dnpds40_do_cmd(ctx, &cmd, (uint8_t*)buf, 8))) return CUPS_BACKEND_FAILED; } - /* Program in the multicut setting */ - snprintf(buf, sizeof(buf), "%08u", ctx->multicut); - dnpds40_build_cmd(&cmd, "IMAGE", "MULTICUT", 8); - if ((ret = dnpds40_do_cmd(ctx, &cmd, (uint8_t*)buf, 8))) - return CUPS_BACKEND_FAILED; + /* Program in the multicut setting, if one exists */ + if (multicut) { + snprintf(buf, sizeof(buf), "%08u", multicut); + dnpds40_build_cmd(&cmd, "IMAGE", "MULTICUT", 8); + if ((ret = dnpds40_do_cmd(ctx, &cmd, (uint8_t*)buf, 8))) + return CUPS_BACKEND_FAILED; + } /* Finally, send the stream over as individual data chunks */ - ptr = ctx->databuf; - while(ptr && ptr < (ctx->databuf + ctx->datalen)) { + ptr = job->databuf; + while(ptr && ptr < (job->databuf + job->datalen)) { int i; buf[8] = 0; memcpy(buf, ptr + 24, 8); @@ -1568,10 +2017,11 @@ top: } sleep(1); /* Give things a moment */ - if (fast_return) { + if (fast_return && !manual_copies) { INFO("Fast return mode enabled.\n"); } else { INFO("Waiting for job to complete...\n"); + int started = 0; while (1) { /* Query status */ @@ -1584,8 +2034,10 @@ top: free(resp); /* If we're idle or there's an error..*/ - if (status == 0) + if (status == 0 && started) break; + if (status) + started = 1; if (status >= 1000) { ERROR("Printer encountered error: %s\n", dnpds40_statuses(status)); break; @@ -1612,11 +2064,8 @@ top: count -= ctx->mediaoffset; } - - if (ctx->media_count_new) { - ATTR("marker-levels=%d\n", count * 100 / ctx->media_count_new); - ATTR("marker-message=\"%d native prints remaining on '%s' ribbon\"\n", count, dnpds40_media_types(ctx->media)); - } + ctx->marker.levelnow = count; + dump_markers(&ctx->marker, 1, 0); } /* Clean up */ @@ -1627,12 +2076,12 @@ top: if (copies && --copies) { /* No need to wait on buffers due to matte switching */ - buf_needed = ctx->buf_needed; + buf_needed = job->buf_needed; goto top; } /* Finally, account for overcoat mode of last print */ - ctx->last_matte = !!ctx->matte; + ctx->last_matte = !!job->matte; #ifdef STATE_DIR { /* Store last matte status into file */ @@ -1746,6 +2195,60 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx) free(resp); } + if (ctx->type == P_CITIZEN_CW01) { + /* Get Horizonal resolution */ + dnpds40_build_cmd(&cmd, "INFO", "RESOLUTION_H", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return CUPS_BACKEND_FAILED; + + 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 CUPS_BACKEND_FAILED; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Vertical Resolution: %s dpi\n", (char*)resp + 3); + + 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 CUPS_BACKEND_FAILED; + + dnpds40_cleanup_string((char*)resp, len); + + INFO("Color Data Version: %s ", (char*)resp); + + free(resp); + + /* Get Color Control Data Checksum */ + dnpds40_build_cmd(&cmd, "MNT_RD", "CTRLD_CHKSUM", 0); + + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return CUPS_BACKEND_FAILED; + + dnpds40_cleanup_string((char*)resp, len); + + DEBUG2("(%s)\n", (char*)resp); + + free(resp); + } + /* Get Media Color offset */ dnpds40_build_cmd(&cmd, "INFO", "MCOLOR", 0); @@ -1798,6 +2301,9 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx) free(resp); + if (ctx->type == P_CITIZEN_CW01) + goto skip; + /* Get Ribbon ID code (?) */ dnpds40_build_cmd(&cmd, "MNT_RD", "RIBBON_ID_CODE", 0); @@ -1985,6 +2491,7 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx) free(resp); } +skip: return CUPS_BACKEND_OK; } @@ -2048,7 +2555,6 @@ static int dnpds40_get_status(struct dnpds40_ctx *ctx) dnpds40_cleanup_string((char*)resp, len); INFO("Free Buffers: %d\n", atoi((char*)resp + 3)); - free(resp); /* Report media */ @@ -2090,24 +2596,10 @@ static int dnpds40_get_status(struct dnpds40_ctx *ctx) INFO("Native Prints Available on New Media: %u\n", ctx->media_count_new); /* Get Media remaining */ - dnpds40_build_cmd(&cmd, "INFO", "MQTY", 0); - - resp = dnpds40_resp_cmd(ctx, &cmd, &len); - if (!resp) + count = dnpds40_query_mqty(ctx); + if (count < 0) return CUPS_BACKEND_FAILED; - dnpds40_cleanup_string((char*)resp, len); - - count = atoi((char*)resp+4); - free(resp); - - if (count) { - /* Old-sk00l models report one less than they should */ - if (!ctx->correct_count) - count++; - - count -= ctx->mediaoffset; - } INFO("Native Prints Remaining on Media: %d\n", count); if (ctx->supports_rewind) { @@ -2433,7 +2925,7 @@ static int dnpds40_cmdline_arg(void *vctx, int argc, char **argv) optarg[0] != 'B' && optarg[0] != 'M') return CUPS_BACKEND_FAILED; - if (!ctx->supports_matte) { + if (optarg[0] == 'M' && !ctx->supports_matte) { ERROR("Printer FW does not support matte functions, please update!\n"); return CUPS_BACKEND_FAILED; } @@ -2483,28 +2975,203 @@ static int dnpds40_cmdline_arg(void *vctx, int argc, char **argv) return 0; } +static int dnpds40_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct dnpds40_ctx *ctx = vctx; + + *markers = &ctx->marker; + *count = 1; + + ctx->marker.levelnow = dnpds40_query_mqty(ctx); + if (ctx->marker.levelnow < 0) + return CUPS_BACKEND_FAILED; + + return CUPS_BACKEND_OK; +} + +static const char *dnpds40_prefixes[] = { + "dnp_citizen", "dnpds40", // Family names, do *not* nuke. + "dnp-ds40", "dnp-ds80", "dnp-ds80dx", "dnp-ds620", "dnp-ds820", "dnp-dsrx1", + "citizen-cw-01", "citizen-cw-02", "citizen-cx-02", + // backwards compatibility + "dnpds80", "dnpds80dx", "dnpds620", "dnpds820", "dnprx1", + "citizencw01", "citizencw02", "citizencx02", + // These are all extras. + "citizen-cx", "citizen-cx-w", "citizen-cy", "citizen-cy-02", + "citizen-op900", "citizen-op900ii", + NULL +}; + +#define USB_VID_CITIZEN 0x1343 +#define USB_PID_DNP_DS40 0x0003 // Also Citizen CX +#define USB_PID_DNP_DS80 0x0004 // Also Citizen CX-W and Mitsubishi CP-3800DW +#define USB_PID_DNP_DSRX1 0x0005 // Also Citizen CY +#define USB_PID_DNP_DS80D 0x0008 + +#define USB_PID_CITIZEN_CW01 0x0002 // Maybe others? +#define USB_PID_CITIZEN_CW02 0x0006 // Also OP900II +#define USB_PID_CITIZEN_CX02 0x000A + +#define USB_VID_DNP 0x1452 +#define USB_PID_DNP_DS620 0x8b01 +#define USB_PID_DNP_DS820 0x9001 + /* Exported */ struct dyesub_backend dnpds40_backend = { - .name = "DNP DS40/DS80/DSRX1/DS620", - .version = "0.92", - .uri_prefix = "dnpds40", + .name = "DNP DS-series / Citizen C-series", + .version = "0.109", + .uri_prefixes = dnpds40_prefixes, + .flags = BACKEND_FLAG_JOBLIST, .cmdline_usage = dnpds40_cmdline, .cmdline_arg = dnpds40_cmdline_arg, .init = dnpds40_init, .attach = dnpds40_attach, .teardown = dnpds40_teardown, .read_parse = dnpds40_read_parse, + .cleanup_job = dnpds40_cleanup_job, .main_loop = dnpds40_main_loop, .query_serno = dnpds40_query_serno, + .query_markers = dnpds40_query_markers, .devices = { - { USB_VID_CITIZEN, USB_PID_DNP_DS40, P_DNP_DS40, ""}, - { USB_VID_CITIZEN, USB_PID_DNP_DS80, P_DNP_DS80, ""}, - { USB_VID_CITIZEN, USB_PID_DNP_DSRX1, P_DNP_DSRX1, ""}, - { USB_VID_CITIZEN, USB_PID_DNP_DS620_OLD, P_DNP_DS620, ""}, - { USB_VID_DNP, USB_PID_DNP_DS620, P_DNP_DS620, ""}, - { USB_VID_DNP, USB_PID_DNP_DS80D, P_DNP_DS80D, ""}, - { USB_VID_CITIZEN, USB_PID_CITIZEN_CW02, P_DNP_DS40, ""}, - { USB_VID_DNP, USB_PID_DNP_DS820, P_DNP_DS820, ""}, - { 0, 0, 0, ""} + { USB_VID_CITIZEN, USB_PID_DNP_DS40, P_DNP_DS40, NULL, "dnp-ds40"}, // Also Citizen CX + { USB_VID_CITIZEN, USB_PID_DNP_DS80, P_DNP_DS80, NULL, "dnp-ds80"}, // Also Citizen CX-W and Mitsubishi CP-3800DW + { USB_VID_CITIZEN, USB_PID_DNP_DS80D, P_DNP_DS80D, NULL, "dnp-ds80dx"}, + { USB_VID_CITIZEN, USB_PID_DNP_DSRX1, P_DNP_DSRX1, NULL, "dnp-dsrx1"}, // Also Citizen CY + { USB_VID_DNP, USB_PID_DNP_DS620, P_DNP_DS620, NULL, "dnp-ds620"}, + { USB_VID_DNP, USB_PID_DNP_DS820, P_DNP_DS820, NULL, "dnp-ds820"}, + { USB_VID_CITIZEN, USB_PID_CITIZEN_CW01, P_CITIZEN_CW01, NULL, "citizen-cw-01"}, // Also OP900 ? + { USB_VID_CITIZEN, USB_PID_CITIZEN_CW02, P_CITIZEN_OP900II, NULL, "citizen-cw-02"}, // Also OP900II + { USB_VID_CITIZEN, USB_PID_CITIZEN_CX02, P_DNP_DS620, NULL, "citizen-cx-02"}, + { 0, 0, 0, NULL, NULL} } }; + +/* Legacy CW-01 spool file support */ + +static int cw01_read_parse(struct dnpds40_printjob *job, int data_fd, + struct cw01_spool_hdr *hdr, int read_data) +{ + int i, remain; + uint32_t j; + uint8_t *buf; + uint8_t plane_hdr[14]; + + remain = hdr->plane_len * 3; + buf = malloc(remain); + if (!buf) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; + } + j = read_data - sizeof(*hdr); + memcpy(buf, job->databuf, j); + remain -= j; + /* Read in the remaining spool data */ + while (remain) { + i = read(data_fd, buf + j, remain); + + if (i < 0) { + free(buf); + return i; + } + + remain -= i; + j += i; + } + + /* Generate plane header (same for all planes) */ + j = cpu_to_le32(hdr->plane_len) + 24; + memset(plane_hdr, 0, sizeof(plane_hdr)); + plane_hdr[0] = 0x42; + plane_hdr[1] = 0x4d; + memcpy(plane_hdr + 2, &j, sizeof(j)); + plane_hdr[10] = 0x40; + plane_hdr[11] = 0x04; + + /* Okay, generate a new stream into job->databuf! */ +#if 0 + job->datalen += sprintf((char*)job->databuf + job->datalen, + "\033PCNTRL QTY 00000008%07d\r", hdr->copies); + job->datalen += sprintf((char*)job->databuf + job->datalen, + "\033PCNTRL CUTTER 0000000800000000"); +#else + /* QTY is stripped from the stream, and CUTTER is stashed away */ + job->cutter = 0; +#endif + + j = 0; + + /* Y plane */ + job->datalen += sprintf((char*)job->databuf + job->datalen, + "\033PIMAGE YPLANE %08u", hdr->plane_len + 24); + memcpy(job->databuf + job->datalen, plane_hdr, sizeof(plane_hdr)); + job->datalen += sizeof(plane_hdr); + memcpy(job->databuf + job->datalen, buf + j, hdr->plane_len); + job->datalen += hdr->plane_len; + j += hdr->plane_len; + memset(job->databuf + job->datalen, 0, 10); + job->datalen += 10; + + /* M plane */ + job->datalen += sprintf((char*)job->databuf + job->datalen, + "\033PIMAGE MPLANE %08u", hdr->plane_len + 24); + memcpy(job->databuf + job->datalen, plane_hdr, sizeof(plane_hdr)); + job->datalen += sizeof(plane_hdr); + memcpy(job->databuf + job->datalen, buf + j, hdr->plane_len); + job->datalen += hdr->plane_len; + j += hdr->plane_len; + memset(job->databuf + job->datalen, 0, 10); + job->datalen += 10; + + /* C plane */ + job->datalen += sprintf((char*)job->databuf + job->datalen, + "\033PIMAGE CPLANE %08u", hdr->plane_len + 24); + memcpy(job->databuf + job->datalen, plane_hdr, sizeof(plane_hdr)); + job->datalen += sizeof(plane_hdr); + memcpy(job->databuf + job->datalen, buf + j, hdr->plane_len); + job->datalen += hdr->plane_len; + j += hdr->plane_len; + memset(job->databuf + job->datalen, 0, 10); + job->datalen += 10; + + /* Start */ + job->datalen += sprintf((char*)job->databuf + job->datalen, + "\033PCNTRL START "); + + /* We're done */ + free(buf); + + return CUPS_BACKEND_OK; +} + +/* + +Basic spool file format for CW01 + +TT RR NN 00 XX XX XX XX 00 00 00 00 <- FILE header. + + NN : copies (0x01 or more) + RR : resolution; 0 == 334 dpi, 1 == 600dpi + TT : type 0x02 == 4x6, 0x01 == 5x3.5 + XX XX XX XX : plane length (LE) + plane length * 3 + 12 == file length. + +Followed by three planes, each with this header: + +28 00 00 00 00 08 00 00 RR RR 00 00 01 00 08 00 +00 00 00 00 00 00 00 00 5a 33 00 00 YY YY 00 00 +00 01 00 00 00 00 00 00 + + RR RR : rows in LE format + YY YY : 0x335a (334dpi) or 0x5c40 (600dpi) + +Followed by 1024 bytes of color tables: + + ff ff ff 00 ... 00 00 00 00 + +1024+40 = 1064 bytes of header per plane. + +Always have 2048 columns of data. + +followed by (2048 * rows) bytes of data. + +*/ diff --git a/src/cups/backend_kodak1400.c b/src/cups/backend_kodak1400.c index e87307f..99bd678 100644 --- a/src/cups/backend_kodak1400.c +++ b/src/cups/backend_kodak1400.c @@ -1,7 +1,7 @@ /* * Kodak Professional 1400/805 CUPS backend -- libusb-1.0 version * - * (c) 2013-2016 Solomon Peachy <pizza@shaftnet.org> + * (c) 2013-2018 Solomon Peachy <pizza@shaftnet.org> * * The latest version of this program can be found at: * @@ -18,11 +18,12 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * + * SPDX-License-Identifier: GPL-2.0+ + * */ #include <stdio.h> @@ -75,19 +76,26 @@ struct kodak1400_hdr { /* Private data structure */ +struct kodak1400_printjob { + struct kodak1400_hdr hdr; + uint8_t *plane_r; + uint8_t *plane_g; + uint8_t *plane_b; + + int copies; +}; + struct kodak1400_ctx { struct libusb_device_handle *dev; uint8_t endp_up; uint8_t endp_down; int type; - struct kodak1400_hdr hdr; - uint8_t *plane_r; - uint8_t *plane_g; - uint8_t *plane_b; + struct marker marker; }; static int send_plane(struct kodak1400_ctx *ctx, + const struct kodak1400_printjob *job, uint8_t planeno, uint8_t *planedata, uint8_t *cmdbuf) { @@ -113,9 +121,9 @@ static int send_plane(struct kodak1400_ctx *ctx, cmdbuf[3] = planeno; if (planedata) { - temp16 = htons(ctx->hdr.columns); + temp16 = htons(job->hdr.columns); memcpy(cmdbuf+7, &temp16, 2); - temp16 = htons(ctx->hdr.rows); + temp16 = htons(job->hdr.rows); memcpy(cmdbuf+9, &temp16, 2); } @@ -125,10 +133,10 @@ static int send_plane(struct kodak1400_ctx *ctx, if (planedata) { int i; - for (i = 0 ; i < ctx->hdr.rows ; i++) { + for (i = 0 ; i < job->hdr.rows ; i++) { if ((ret = send_data(ctx->dev, ctx->endp_down, - planedata + i * ctx->hdr.columns, - ctx->hdr.columns))) + planedata + i * job->hdr.columns, + job->hdr.columns))) return ret; } } @@ -292,24 +300,38 @@ static void *kodak1400_init(void) return ctx; } -static void kodak1400_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int kodak1400_attach(void *vctx, struct libusb_device_handle *dev, int type, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct kodak1400_ctx *ctx = vctx; - struct libusb_device *device; - struct libusb_device_descriptor desc; UNUSED(jobid); ctx->dev = dev; ctx->endp_up = endp_up; ctx->endp_down = endp_down; + ctx->type = type; + + ctx->marker.color = "#00FFFF#FF00FF#FFFF00"; + ctx->marker.name = "Unknown"; + ctx->marker.levelmax = -1; + ctx->marker.levelnow = -2; + + return CUPS_BACKEND_OK; +} + +static void kodak1400_cleanup_job(const void *vjob) +{ + const struct kodak1400_printjob *job = vjob; - device = libusb_get_device(dev); - libusb_get_device_descriptor(device, &desc); + if (job->plane_r) + free(job->plane_r); + if (job->plane_g) + free(job->plane_g); + if (job->plane_b) + free(job->plane_b); - ctx->type = lookup_printer_type(&kodak1400_backend, - desc.idVendor, desc.idProduct); + free((void*)job); } static void kodak1400_teardown(void *vctx) { @@ -318,83 +340,76 @@ static void kodak1400_teardown(void *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) { +static int kodak1400_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { struct kodak1400_ctx *ctx = vctx; int i, ret; + struct kodak1400_printjob *job = NULL; + if (!ctx) return CUPS_BACKEND_FAILED; - 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; + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; } + memset(job, 0, sizeof(*job)); + job->copies = copies; /* Read in then validate header */ - ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr)); - if (ret < 0 || ret != sizeof(ctx->hdr)) { + ret = read(data_fd, &job->hdr, sizeof(job->hdr)); + if (ret < 0 || ret != sizeof(job->hdr)) { if (ret == 0) return CUPS_BACKEND_CANCEL; ERROR("Read failed (%d/%d/%d)\n", - ret, 0, (int)sizeof(ctx->hdr)); + ret, 0, (int)sizeof(job->hdr)); perror("ERROR: Read failed"); return CUPS_BACKEND_CANCEL; } - if (ctx->hdr.hdr[0] != 'P' || - ctx->hdr.hdr[1] != 'G' || - ctx->hdr.hdr[2] != 'H' || - ctx->hdr.hdr[3] != 'D') { + if (job->hdr.hdr[0] != 'P' || + job->hdr.hdr[1] != 'G' || + job->hdr.hdr[2] != 'H' || + job->hdr.hdr[3] != 'D') { ERROR("Unrecognized data format!\n"); return CUPS_BACKEND_CANCEL; } - 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); + job->hdr.planesize = le32_to_cpu(job->hdr.planesize); + job->hdr.rows = le16_to_cpu(job->hdr.rows); + job->hdr.columns = le16_to_cpu(job->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) { + job->plane_r = malloc(job->hdr.planesize); + job->plane_g = malloc(job->hdr.planesize); + job->plane_b = malloc(job->hdr.planesize); + if (!job->plane_r || !job->plane_g || !job->plane_b) { ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_FAILED; + return CUPS_BACKEND_RETRY_CURRENT; } - for (i = 0 ; i < ctx->hdr.rows ; i++) { + for (i = 0 ; i < job->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; + ptr = job->plane_r + i * job->hdr.columns; else if (j == 1) - ptr = ctx->plane_g + i * ctx->hdr.columns; + ptr = job->plane_g + i * job->hdr.columns; else if (j == 2) - ptr = ctx->plane_b + i * ctx->hdr.columns; + ptr = job->plane_b + i * job->hdr.columns; + else + ptr = NULL; - remain = ctx->hdr.columns; + remain = job->hdr.columns; do { ret = read(data_fd, ptr, remain); if (ret < 0) { ERROR("Read failed (%d/%d/%u) (%d/%u @ %d)\n", - ret, remain, ctx->hdr.columns, - i, ctx->hdr.rows, j); + ret, remain, job->hdr.columns, + i, job->hdr.rows, j); perror("ERROR: Read failed"); return CUPS_BACKEND_CANCEL; } @@ -404,13 +419,15 @@ static int kodak1400_read_parse(void *vctx, int data_fd) { } } + *vjob = job; + return CUPS_BACKEND_OK; } static uint8_t idle_data[READBACK_LEN] = { 0xe4, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -static int kodak1400_main_loop(void *vctx, int copies) { +static int kodak1400_main_loop(void *vctx, const void *vjob) { struct kodak1400_ctx *ctx = vctx; uint8_t rdbuf[READBACK_LEN], rdbuf2[READBACK_LEN]; @@ -418,6 +435,16 @@ static int kodak1400_main_loop(void *vctx, int copies) { int last_state = -1, state = S_IDLE; int num, ret; uint16_t temp16; + int copies; + + const struct kodak1400_printjob *job = vjob; + + if (!ctx) + return CUPS_BACKEND_FAILED; + if (!job) + return CUPS_BACKEND_FAILED; + + copies = job->copies; top: if (state != last_state) { @@ -473,9 +500,9 @@ top: cmdbuf[0] = 0x1b; cmdbuf[1] = 0x5a; cmdbuf[2] = 0x53; - temp16 = be16_to_cpu(ctx->hdr.columns); + temp16 = be16_to_cpu(job->hdr.columns); memcpy(cmdbuf+3, &temp16, 2); - temp16 = be16_to_cpu(ctx->hdr.rows); + temp16 = be16_to_cpu(job->hdr.rows); memcpy(cmdbuf+5, &temp16, 2); if ((ret = send_data(ctx->dev, ctx->endp_down, @@ -486,7 +513,7 @@ top: memset(cmdbuf, 0, CMDBUF_LEN); cmdbuf[0] = 0x1b; cmdbuf[1] = 0x59; - cmdbuf[2] = ctx->hdr.matte; // ??? + cmdbuf[2] = job->hdr.matte; // ??? if ((ret = send_data(ctx->dev, ctx->endp_down, cmdbuf, CMDBUF_LEN))) @@ -496,7 +523,7 @@ top: memset(cmdbuf, 0, CMDBUF_LEN); cmdbuf[0] = 0x1b; cmdbuf[1] = 0x60; - cmdbuf[2] = ctx->hdr.laminate; + cmdbuf[2] = job->hdr.laminate; if (send_data(ctx->dev, ctx->endp_down, cmdbuf, CMDBUF_LEN)) @@ -506,7 +533,7 @@ top: memset(cmdbuf, 0, CMDBUF_LEN); cmdbuf[0] = 0x1b; cmdbuf[1] = 0x62; - cmdbuf[2] = ctx->hdr.lam_strength; + cmdbuf[2] = job->hdr.lam_strength; if ((ret = send_data(ctx->dev, ctx->endp_down, cmdbuf, CMDBUF_LEN))) @@ -516,7 +543,7 @@ top: memset(cmdbuf, 0, CMDBUF_LEN); cmdbuf[0] = 0x1b; cmdbuf[1] = 0x61; - cmdbuf[2] = ctx->hdr.unk1; // ??? + cmdbuf[2] = job->hdr.unk1; // ??? if ((ret = send_data(ctx->dev, ctx->endp_down, cmdbuf, CMDBUF_LEN))) @@ -526,7 +553,7 @@ top: break; case S_PRINTER_READY_Y: INFO("Sending YELLOW plane\n"); - if ((ret = send_plane(ctx, 1, ctx->plane_b, cmdbuf))) + if ((ret = send_plane(ctx, job, 1, job->plane_b, cmdbuf))) return CUPS_BACKEND_FAILED; state = S_PRINTER_SENT_Y; break; @@ -536,7 +563,7 @@ top: break; case S_PRINTER_READY_M: INFO("Sending MAGENTA plane\n"); - if ((ret = send_plane(ctx, 2, ctx->plane_g, cmdbuf))) + if ((ret = send_plane(ctx, job, 2, job->plane_g, cmdbuf))) return CUPS_BACKEND_FAILED; state = S_PRINTER_SENT_M; break; @@ -546,13 +573,13 @@ top: break; case S_PRINTER_READY_C: INFO("Sending CYAN plane\n"); - if ((ret = send_plane(ctx, 3, ctx->plane_r, cmdbuf))) + if ((ret = send_plane(ctx, job, 3, job->plane_r, cmdbuf))) return CUPS_BACKEND_FAILED; state = S_PRINTER_SENT_C; break; case S_PRINTER_SENT_C: if (!memcmp(rdbuf, idle_data, READBACK_LEN)) { - if (ctx->hdr.laminate) + if (job->hdr.laminate) state = S_PRINTER_READY_L; else state = S_PRINTER_DONE; @@ -560,7 +587,7 @@ top: break; case S_PRINTER_READY_L: INFO("Laminating page\n"); - if ((ret = send_plane(ctx, 4, NULL, cmdbuf))) + if ((ret = send_plane(ctx, job, 4, NULL, cmdbuf))) return CUPS_BACKEND_FAILED; state = S_PRINTER_SENT_L; break; @@ -604,26 +631,53 @@ top: return CUPS_BACKEND_OK; } +static int kodak1400_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct kodak1400_ctx *ctx = vctx; + + *markers = &ctx->marker; + *count = 1; + + return CUPS_BACKEND_OK; +} + /* Exported */ #define USB_VID_KODAK 0x040A #define USB_PID_KODAK_1400 0x4022 #define USB_PID_KODAK_805 0x4034 +#define USB_VID_MITSU 0x06D3 +#define USB_PID_MITSU_3020D 0x038B +#define USB_PID_MITSU_3020DA 0x03AA + +static const char *kodak1400_prefixes[] = { + "kodak1400", // Family driver, do NOT nuke! + "kodak-1400", "kodak-805", "mitsubishi-3020d", "mitsubishi-3020da", + // backwards compatibility + "kodak805", "mitsu3020d", "mitsu3020da", + // Extras. + "mitsubishi-3020dae", "mitsubishi-3020de", "mitsubishi-3020du", + NULL, +}; struct dyesub_backend kodak1400_backend = { .name = "Kodak 1400/805", - .version = "0.34", - .uri_prefix = "kodak1400", + .version = "0.39", + .uri_prefixes = kodak1400_prefixes, .cmdline_usage = kodak1400_cmdline, .cmdline_arg = kodak1400_cmdline_arg, .init = kodak1400_init, .attach = kodak1400_attach, .teardown = kodak1400_teardown, + .cleanup_job = kodak1400_cleanup_job, .read_parse = kodak1400_read_parse, .main_loop = kodak1400_main_loop, + .query_markers = kodak1400_query_markers, .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, ""} + { USB_VID_KODAK, USB_PID_KODAK_1400, P_KODAK_1400_805, "Kodak", "kodak-1400"}, + { USB_VID_KODAK, USB_PID_KODAK_805, P_KODAK_1400_805, "Kodak", "kodak-805"}, + { USB_VID_MITSU, USB_PID_MITSU_3020D, P_KODAK_1400_805, NULL, "mitsubishi-3020d"}, + { USB_VID_MITSU, USB_PID_MITSU_3020DA, P_KODAK_1400_805, NULL, "mitsubishi-3020da" }, + { 0, 0, 0, NULL, NULL} } }; diff --git a/src/cups/backend_kodak605.c b/src/cups/backend_kodak605.c index b301739..64524d4 100644 --- a/src/cups/backend_kodak605.c +++ b/src/cups/backend_kodak605.c @@ -1,7 +1,7 @@ /* * Kodak 605 Photo Printer CUPS backend -- libusb-1.0 version * - * (c) 2013-2016 Solomon Peachy <pizza@shaftnet.org> + * (c) 2013-2018 Solomon Peachy <pizza@shaftnet.org> * * The latest version of this program can be found at: * @@ -18,11 +18,12 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * + * SPDX-License-Identifier: GPL-2.0+ + * */ #include <stdio.h> @@ -165,6 +166,12 @@ static const char *kodak68xx_mediatypes(int type) #define CMDBUF_LEN 4 /* Private data structure */ +struct kodak605_printjob { + struct kodak605_hdr hdr; + uint8_t *databuf; + int datalen; +}; + struct kodak605_ctx { struct libusb_device_handle *dev; uint8_t endp_up; @@ -172,14 +179,10 @@ struct kodak605_ctx { int type; uint8_t jobid; - struct kodak605_hdr hdr; - struct kodak605_media_list *media; - uint8_t *databuf; - int datalen; + struct marker marker; - uint8_t last_donor; }; static int kodak605_get_media(struct kodak605_ctx *ctx, struct kodak605_media_list *media) @@ -216,6 +219,40 @@ static int kodak605_get_media(struct kodak605_ctx *ctx, struct kodak605_media_li return 0; } +static int kodak605_get_status(struct kodak605_ctx *ctx, struct kodak605_status *sts) +{ + uint8_t cmdbuf[4]; + + int ret, num = 0; + + /* Send Status Query */ + cmdbuf[0] = 0x01; + cmdbuf[1] = 0x00; + cmdbuf[2] = 0x00; + cmdbuf[3] = 0x00; + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, sizeof(cmdbuf)))) + return ret; + + /* Read in the printer status */ + ret = read_data(ctx->dev, ctx->endp_up, + (uint8_t*) sts, sizeof(*sts), &num); + if (ret < 0) + return ret; + + if (num < (int)sizeof(*sts)) { + ERROR("Short Read! (%d/%d)\n", num, (int)sizeof(*sts)); + return CUPS_BACKEND_FAILED; + } + + if (sts->hdr.result != RESULT_SUCCESS) { + ERROR("Unexpected response from status query (%x)!\n", sts->hdr.result); + return CUPS_BACKEND_FAILED; + } + + return 0; +} + static void *kodak605_init(void) { struct kodak605_ctx *ctx = malloc(sizeof(struct kodak605_ctx)); @@ -227,40 +264,54 @@ static void *kodak605_init(void) ctx->media = malloc(MAX_MEDIA_LEN); - ctx->type = P_ANY; - return ctx; } -static void kodak605_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int kodak605_attach(void *vctx, struct libusb_device_handle *dev, int type, + 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; ctx->dev = dev; ctx->endp_up = endp_up; ctx->endp_down = endp_down; - - device = libusb_get_device(dev); - libusb_get_device_descriptor(device, &desc); - - ctx->type = lookup_printer_type(&kodak605_backend, - desc.idVendor, desc.idProduct); + ctx->type = type; /* Make sure jobid is sane */ ctx->jobid = jobid & 0x7f; if (!ctx->jobid) ctx->jobid++; - /* Init */ - ctx->last_donor = 255; + if (test_mode < TEST_MODE_NOATTACH) { + /* Query media info */ + if (kodak605_get_media(ctx, ctx->media)) { + ERROR("Can't query media\n"); + return CUPS_BACKEND_FAILED; + } + } else { + int media_code = KODAK68x0_MEDIA_6TR2; + if (getenv("MEDIA_CODE")) + media_code = atoi(getenv("MEDIA_CODE")); - /* Query media info */ - if (kodak605_get_media(ctx, ctx->media)) { - ERROR("Can't query media\n"); + ctx->media->type = media_code; } + + ctx->marker.color = "#00FFFF#FF00FF#FFFF00"; + ctx->marker.name = kodak68xx_mediatypes(ctx->media->type); + ctx->marker.levelmax = 100; /* Ie percentage */ + ctx->marker.levelnow = -2; + + return CUPS_BACKEND_OK; +} + +static void kodak605_cleanup_job(const void *vjob) +{ + const struct kodak605_printjob *job = vjob; + + if (job->databuf) + free(job->databuf); + + free((void*)job); } static void kodak605_teardown(void *vctx) { @@ -269,57 +320,59 @@ static void kodak605_teardown(void *vctx) { if (!ctx) return; - if (ctx->databuf) - free(ctx->databuf); free(ctx); } -static int kodak605_read_parse(void *vctx, int data_fd) { +static int kodak605_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { struct kodak605_ctx *ctx = vctx; int ret; + struct kodak605_printjob *job = NULL; + if (!ctx) return CUPS_BACKEND_CANCEL; - if (ctx->databuf) { - free(ctx->databuf); - ctx->databuf = NULL; + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; } + memset(job, 0, sizeof(*job)); /* Read in then validate header */ - ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr)); - if (ret < 0 || ret != sizeof(ctx->hdr)) { + ret = read(data_fd, &job->hdr, sizeof(job->hdr)); + if (ret < 0 || ret != sizeof(job->hdr)) { if (ret == 0) return CUPS_BACKEND_CANCEL; ERROR("Read failed (%d/%d/%d)\n", - ret, 0, (int)sizeof(ctx->hdr)); + ret, 0, (int)sizeof(job->hdr)); perror("ERROR: Read failed"); return CUPS_BACKEND_CANCEL; } - if (ctx->hdr.hdr[0] != 0x01 || - ctx->hdr.hdr[1] != 0x40 || - ctx->hdr.hdr[2] != 0x0a || - ctx->hdr.hdr[3] != 0x00) { + if (job->hdr.hdr[0] != 0x01 || + job->hdr.hdr[1] != 0x40 || + job->hdr.hdr[2] != 0x0a || + job->hdr.hdr[3] != 0x00) { ERROR("Unrecognized data format!\n"); return CUPS_BACKEND_CANCEL; } - ctx->datalen = le16_to_cpu(ctx->hdr.rows) * le16_to_cpu(ctx->hdr.columns) * 3; - ctx->databuf = malloc(ctx->datalen); - if (!ctx->databuf) { + job->datalen = le16_to_cpu(job->hdr.rows) * le16_to_cpu(job->hdr.columns) * 3; + job->databuf = malloc(job->datalen); + if (!job->databuf) { ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_FAILED; + return CUPS_BACKEND_RETRY_CURRENT; } { - int remain = ctx->datalen; - uint8_t *ptr = ctx->databuf; + int remain = job->datalen; + uint8_t *ptr = job->databuf; do { ret = read(data_fd, ptr, remain); if (ret < 0) { ERROR("Read failed (%d/%d/%d)\n", - ret, remain, ctx->datalen); + ret, remain, job->datalen); perror("ERROR: Read failed"); return CUPS_BACKEND_CANCEL; } @@ -328,61 +381,36 @@ static int kodak605_read_parse(void *vctx, int data_fd) { } while (remain); } - return CUPS_BACKEND_OK; -} - -static int kodak605_get_status(struct kodak605_ctx *ctx, struct kodak605_status *sts) -{ - uint8_t cmdbuf[4]; - - int ret, num = 0; - - /* Send Status Query */ - cmdbuf[0] = 0x01; - cmdbuf[1] = 0x00; - cmdbuf[2] = 0x00; - cmdbuf[3] = 0x00; - if ((ret = send_data(ctx->dev, ctx->endp_down, - cmdbuf, sizeof(cmdbuf)))) - return ret; - - /* Read in the printer status */ - ret = read_data(ctx->dev, ctx->endp_up, - (uint8_t*) sts, sizeof(*sts), &num); - if (ret < 0) - return ret; - - if (num < (int)sizeof(*sts)) { - ERROR("Short Read! (%d/%d)\n", num, (int)sizeof(*sts)); - return CUPS_BACKEND_FAILED; - } + /* Printer handles generating copies.. */ + if (le16_to_cpu(job->hdr.copies) < copies) + job->hdr.copies = cpu_to_le16(copies); - if (sts->hdr.result != RESULT_SUCCESS) { - ERROR("Unexpected response from status query (%x)!\n", sts->hdr.result); - return CUPS_BACKEND_FAILED; - } + *vjob = job; - return 0; + return CUPS_BACKEND_OK; } -static int kodak605_main_loop(void *vctx, int copies) { +static int kodak605_main_loop(void *vctx, const void *vjob) { struct kodak605_ctx *ctx = vctx; struct kodak605_status sts; int num, ret; + const struct kodak605_printjob *job = vjob; + if (!ctx) return CUPS_BACKEND_FAILED; + if (!job) + return CUPS_BACKEND_FAILED; - /* Printer handles generating copies.. */ - if (le16_to_cpu(ctx->hdr.copies) < copies) - ctx->hdr.copies = cpu_to_le16(copies); + struct kodak605_hdr hdr; + memcpy(&hdr, &job->hdr, sizeof(hdr)); /* Validate against supported media list */ for (num = 0 ; num < ctx->media->count; num++) { - if (ctx->media->entries[num].rows == ctx->hdr.rows && - ctx->media->entries[num].cols == ctx->hdr.columns) + if (ctx->media->entries[num].rows == hdr.rows && + ctx->media->entries[num].cols == hdr.columns) break; } if (num == ctx->media->count) { @@ -390,22 +418,15 @@ static int kodak605_main_loop(void *vctx, int copies) { return CUPS_BACKEND_HOLD; } - /* Tell CUPS about the consumables we report */ - ATTR("marker-colors=#00FFFF#FF00FF#FFFF00\n"); - ATTR("marker-high-levels=100\n"); - ATTR("marker-low-levels=10\n"); - ATTR("marker-names='%s'\n", kodak68xx_mediatypes(ctx->media->type)); - ATTR("marker-types=ribbonWax\n"); - INFO("Waiting for printer idle\n"); while(1) { if ((ret = kodak605_get_status(ctx, &sts))) return CUPS_BACKEND_FAILED; - if (ctx->last_donor != sts.donor) { - ctx->last_donor = sts.donor; - ATTR("marker-levels=%u\n", sts.donor); + if (ctx->marker.levelnow != sts.donor) { + ctx->marker.levelnow = sts.donor; + dump_markers(&ctx->marker, 1, 0); } // XXX check for errors @@ -430,12 +451,12 @@ static int kodak605_main_loop(void *vctx, int copies) { } /* Use specified jobid */ - ctx->hdr.jobid = ctx->jobid; + hdr.jobid = ctx->jobid; { INFO("Sending image header (internal id %u)\n", ctx->jobid); if ((ret = send_data(ctx->dev, ctx->endp_down, - (uint8_t*)&ctx->hdr, sizeof(ctx->hdr)))) + (uint8_t*)&hdr, sizeof(hdr)))) return CUPS_BACKEND_FAILED; struct kodak605_sts_hdr resp; @@ -453,7 +474,7 @@ static int kodak605_main_loop(void *vctx, int copies) { INFO("Sending image data\n"); if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->databuf, ctx->datalen))) + job->databuf, job->datalen))) return CUPS_BACKEND_FAILED; INFO("Image data sent\n"); @@ -464,13 +485,12 @@ static int kodak605_main_loop(void *vctx, int copies) { if ((kodak605_get_status(ctx, &sts)) != 0) return CUPS_BACKEND_FAILED; + if (ctx->marker.levelnow != sts.donor) { + ctx->marker.levelnow = sts.donor; + dump_markers(&ctx->marker, 1, 0); + } // XXX check for errors - if (ctx->last_donor != sts.donor) { - ctx->last_donor = sts.donor; - ATTR("marker-levels=%u\n", sts.donor); - } // XXX check for errors ? - /* Wait for completion */ if (sts.b1_id == ctx->jobid && sts.b1_complete == sts.b1_total) break; @@ -671,21 +691,46 @@ static int kodak605_cmdline_arg(void *vctx, int argc, char **argv) return 0; } +static int kodak605_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct kodak605_ctx *ctx = vctx; + struct kodak605_status sts; + + /* Query printer status */ + if (kodak605_get_status(ctx, &sts)) + return CUPS_BACKEND_FAILED; + + ctx->marker.levelnow = sts.donor; + + *markers = &ctx->marker; + *count = 1; + + return CUPS_BACKEND_OK; +} + +static const char *kodak605_prefixes[] = { + "kodak605", // Family driver, do NOT nuke. + "kodak-605", + NULL, +}; + /* Exported */ struct dyesub_backend kodak605_backend = { .name = "Kodak 605", - .version = "0.27", - .uri_prefix = "kodak605", + .version = "0.33", + .uri_prefixes = kodak605_prefixes, .cmdline_usage = kodak605_cmdline, .cmdline_arg = kodak605_cmdline_arg, .init = kodak605_init, .attach = kodak605_attach, .teardown = kodak605_teardown, + .cleanup_job = kodak605_cleanup_job, .read_parse = kodak605_read_parse, .main_loop = kodak605_main_loop, + .query_markers = kodak605_query_markers, .devices = { - { USB_VID_KODAK, USB_PID_KODAK_605, P_KODAK_605, "Kodak"}, - { 0, 0, 0, ""} + { USB_VID_KODAK, USB_PID_KODAK_605, P_KODAK_605, "Kodak", "kodak-605"}, + { 0, 0, 0, NULL, NULL} } }; diff --git a/src/cups/backend_kodak6800.c b/src/cups/backend_kodak6800.c index f535797..79d950b 100644 --- a/src/cups/backend_kodak6800.c +++ b/src/cups/backend_kodak6800.c @@ -1,7 +1,7 @@ /* * Kodak 6800/6850 Photo Printer CUPS backend -- libusb-1.0 version * - * (c) 2013-2017 Solomon Peachy <pizza@shaftnet.org> + * (c) 2013-2018 Solomon Peachy <pizza@shaftnet.org> * * Development of this backend was sponsored by: * @@ -22,11 +22,12 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * + * SPDX-License-Identifier: GPL-2.0+ + * */ #include <stdio.h> @@ -222,6 +223,13 @@ struct kodak68x0_media_readback { #define CMDBUF_LEN 17 /* Private data structure */ +struct kodak6800_printjob { + struct kodak6800_hdr hdr; + uint8_t *databuf; + int datalen; + int copies; +}; + struct kodak6800_ctx { struct libusb_device_handle *dev; uint8_t endp_up; @@ -233,11 +241,7 @@ struct kodak6800_ctx { struct kodak68x0_media_readback *media; - struct kodak6800_hdr hdr; - uint8_t *databuf; - int datalen; - - uint8_t last_donor; + struct marker marker; }; static const char *kodak68xx_mediatypes(int type) @@ -276,8 +280,6 @@ static int kodak6800_do_cmd(struct kodak6800_ctx *ctx, return 0; } - - static void kodak68x0_dump_mediainfo(struct kodak68x0_media_readback *media) { int i; @@ -690,6 +692,7 @@ static int kodak6800_get_tonecurve(struct kodak6800_ctx *ctx, char *fname) cmdbuf[14] = 0x00; cmdbuf[15] = 0x00; + respbuf[0] = 0xff; /* Issue command and get response */ if ((ret = kodak6800_do_cmd(ctx, cmdbuf, sizeof(cmdbuf), respbuf, sizeof(respbuf), @@ -1004,40 +1007,54 @@ static void *kodak6800_init(void) ctx->media = malloc(MAX_MEDIA_LEN); - 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) +static int kodak6800_attach(void *vctx, struct libusb_device_handle *dev, int type, + 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; ctx->dev = dev; ctx->endp_up = endp_up; ctx->endp_down = endp_down; - - device = libusb_get_device(dev); - libusb_get_device_descriptor(device, &desc); - - ctx->type = lookup_printer_type(&kodak6800_backend, - desc.idVendor, desc.idProduct); + ctx->type = type; /* Ensure jobid is sane */ ctx->jobid = jobid & 0x7f; if (!ctx->jobid) ctx->jobid++; - /* Init */ - ctx->last_donor = 255; + if (test_mode < TEST_MODE_NOATTACH) { + /* Query media info */ + if (kodak6800_get_mediainfo(ctx, ctx->media)) { + ERROR("Can't query media\n"); + return CUPS_BACKEND_FAILED; + } + } else { + int media_code = KODAK68x0_MEDIA_6TR2; + if (getenv("MEDIA_CODE")) + media_code = atoi(getenv("MEDIA_CODE")); - /* Query media info */ - if (kodak6800_get_mediainfo(ctx, ctx->media)) { - ERROR("Can't query media\n"); + ctx->media->type = media_code; } + + ctx->marker.color = "#00FFFF#FF00FF#FFFF00"; + ctx->marker.name = kodak68xx_mediatypes(ctx->media->type); + ctx->marker.levelmax = 100; /* Ie percentage */ + ctx->marker.levelnow = -2; + + return CUPS_BACKEND_OK; +} + +static void kodak6800_cleanup_job(const void *vjob) +{ + const struct kodak6800_printjob *job = vjob; + + if (job->databuf) + free(job->databuf); + + free((void*)job); } static void kodak6800_teardown(void *vctx) { @@ -1046,57 +1063,59 @@ static void kodak6800_teardown(void *vctx) { if (!ctx) return; - if (ctx->databuf) - free(ctx->databuf); free(ctx); } -static int kodak6800_read_parse(void *vctx, int data_fd) { +static int kodak6800_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { struct kodak6800_ctx *ctx = vctx; int ret; + struct kodak6800_printjob *job = NULL; + if (!ctx) return CUPS_BACKEND_FAILED; - if (ctx->databuf) { - free(ctx->databuf); - ctx->databuf = NULL; + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; } + memset(job, 0, sizeof(*job)); /* Read in then validate header */ - ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr)); - if (ret < 0 || ret != sizeof(ctx->hdr)) { + ret = read(data_fd, &job->hdr, sizeof(job->hdr)); + if (ret < 0 || ret != sizeof(job->hdr)) { if (ret == 0) return CUPS_BACKEND_CANCEL; ERROR("Read failed (%d/%d/%d)\n", - ret, 0, (int)sizeof(ctx->hdr)); + ret, 0, (int)sizeof(job->hdr)); perror("ERROR: Read failed"); return CUPS_BACKEND_CANCEL; } - 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) { + if (job->hdr.hdr[0] != 0x03 || + job->hdr.hdr[1] != 0x1b || + job->hdr.hdr[2] != 0x43 || + job->hdr.hdr[3] != 0x48 || + job->hdr.hdr[4] != 0x43) { ERROR("Unrecognized data format!\n"); return CUPS_BACKEND_CANCEL; } - ctx->datalen = be16_to_cpu(ctx->hdr.rows) * be16_to_cpu(ctx->hdr.columns) * 3; - ctx->databuf = malloc(ctx->datalen); - if (!ctx->databuf) { + job->datalen = be16_to_cpu(job->hdr.rows) * be16_to_cpu(job->hdr.columns) * 3; + job->databuf = malloc(job->datalen); + if (!job->databuf) { ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_FAILED; + return CUPS_BACKEND_RETRY_CURRENT; } { - int remain = ctx->datalen; - uint8_t *ptr = ctx->databuf; + int remain = job->datalen; + uint8_t *ptr = job->databuf; do { ret = read(data_fd, ptr, remain); if (ret < 0) { ERROR("Read failed (%d/%d/%d)\n", - ret, remain, ctx->datalen); + ret, remain, job->datalen); perror("ERROR: Read failed"); return CUPS_BACKEND_CANCEL; } @@ -1105,29 +1124,39 @@ static int kodak6800_read_parse(void *vctx, int data_fd) { } while (remain); } + /* Fix max print count. */ + if (copies > 9999) // XXX test against remaining media + copies = 9999; + + /* Printer handles generating copies.. */ + if (le16_to_cpu(job->hdr.copies) < copies) + job->hdr.copies = cpu_to_be16(uint16_to_packed_bcd(copies)); + + *vjob = job; + return CUPS_BACKEND_OK; } -static int kodak6800_main_loop(void *vctx, int copies) { +static int kodak6800_main_loop(void *vctx, const void *vjob) { struct kodak6800_ctx *ctx = vctx; struct kodak68x0_status_readback status; int num, ret; + const struct kodak6800_printjob *job = vjob; + if (!ctx) return CUPS_BACKEND_FAILED; + if (!job) + return CUPS_BACKEND_FAILED; - /* Fix max print count. */ - if (copies > 9999) // XXX test against remaining media - copies = 9999; - - /* Printer handles generating copies.. */ - ctx->hdr.copies = cpu_to_be16(uint16_to_packed_bcd(copies)); + struct kodak6800_hdr hdr; + memcpy(&hdr, &job->hdr, sizeof(hdr)); /* Validate against supported media list */ for (num = 0 ; num < ctx->media->count; num++) { - if (ctx->media->sizes[num].height == ctx->hdr.rows && - ctx->media->sizes[num].width == ctx->hdr.columns && + if (ctx->media->sizes[num].height == hdr.rows && + ctx->media->sizes[num].width == hdr.columns && ctx->media->sizes[num].code2 == 0x00) // XXX code2? break; } @@ -1136,22 +1165,15 @@ static int kodak6800_main_loop(void *vctx, int copies) { return CUPS_BACKEND_HOLD; } - /* Tell CUPS about the consumables we report */ - ATTR("marker-colors=#00FFFF#FF00FF#FFFF00\n"); - ATTR("marker-high-levels=100\n"); - ATTR("marker-low-levels=10\n"); - ATTR("marker-names='%s'\n", kodak68xx_mediatypes(ctx->media->type)); - ATTR("marker-types=ribbonWax\n"); - INFO("Waiting for printer idle\n"); while(1) { if (kodak6800_get_status(ctx, &status)) return CUPS_BACKEND_FAILED; - if (ctx->last_donor != status.donor) { - ctx->last_donor = status.donor; - ATTR("marker-levels=%u\n", status.donor); + if (ctx->marker.levelnow != status.donor) { + ctx->marker.levelnow = status.donor; + dump_markers(&ctx->marker, 1, 0); } if (status.status1 == STATE_STATUS1_ERROR) { @@ -1189,20 +1211,20 @@ static int kodak6800_main_loop(void *vctx, int copies) { return ret; } - ctx->hdr.jobid = ctx->jobid; + hdr.jobid = ctx->jobid; #if 0 /* If we want to disable 4x6 rewind on 8x6 media.. */ // XXX not sure about this...? - if (ctx->hdr.size == 0x00 && + if (hdr.size == 0x00 && be16_to_cpu(ctx->media->sizes[0].width) == 0x0982) { - ctx->hdr.size = 0x06; - ctx->hdr.mode = 0x01; + hdr.size = 0x06; + hdr.mode = 0x01; } #endif INFO("Sending Print Job (internal id %u)\n", ctx->jobid); - if ((ret = kodak6800_do_cmd(ctx, (uint8_t*) &ctx->hdr, sizeof(ctx->hdr), + if ((ret = kodak6800_do_cmd(ctx, (uint8_t*) &hdr, sizeof(hdr), &status, sizeof(status), &num))) return ret; @@ -1215,7 +1237,7 @@ static int kodak6800_main_loop(void *vctx, int copies) { // sleep(1); // Appears to be necessary for reliability INFO("Sending image data\n"); if ((send_data(ctx->dev, ctx->endp_down, - ctx->databuf, ctx->datalen)) != 0) + job->databuf, job->datalen)) != 0) return CUPS_BACKEND_FAILED; INFO("Waiting for printer to acknowledge completion\n"); @@ -1224,9 +1246,9 @@ static int kodak6800_main_loop(void *vctx, int copies) { if (kodak6800_get_status(ctx, &status)) return CUPS_BACKEND_FAILED; - if (ctx->last_donor != status.donor) { - ctx->last_donor = status.donor; - ATTR("marker-levels=%u\n", status.donor); + if (ctx->marker.levelnow != status.donor) { + ctx->marker.levelnow = status.donor; + dump_markers(&ctx->marker, 1, 0); } if (status.status1 == STATE_STATUS1_ERROR) { @@ -1237,9 +1259,9 @@ static int kodak6800_main_loop(void *vctx, int copies) { } /* If all prints are complete, we're done! */ - if (status.b1_jobid == ctx->hdr.jobid && status.b1_complete == status.b1_total) + if (status.b1_jobid == hdr.jobid && status.b1_complete == status.b1_total) break; - if (status.b2_jobid == ctx->hdr.jobid && status.b2_complete == status.b2_total) + if (status.b2_jobid == hdr.jobid && status.b2_complete == status.b2_total) break; if (fast_return) { @@ -1254,23 +1276,50 @@ static int kodak6800_main_loop(void *vctx, int copies) { return CUPS_BACKEND_OK; } +static int kodak6800_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct kodak6800_ctx *ctx = vctx; + struct kodak68x0_status_readback status; + + /* Query printer status */ + if (kodak6800_get_status(ctx, &status)) + return CUPS_BACKEND_FAILED; + + ctx->marker.levelnow = status.donor; + + *markers = &ctx->marker; + *count = 1; + + return CUPS_BACKEND_OK; +} + +static const char *kodak6800_prefixes[] = { + "kodak68x0", // Family driver, do not nuke. + "kodak-6800", "kodak-6850", + // Backwards-compatibility + "kodak6800", "kodak6850", + NULL +}; + /* Exported */ struct dyesub_backend kodak6800_backend = { .name = "Kodak 6800/6850", - .version = "0.58", - .uri_prefix = "kodak6800", + .version = "0.65", + .uri_prefixes = kodak6800_prefixes, .cmdline_usage = kodak6800_cmdline, .cmdline_arg = kodak6800_cmdline_arg, .init = kodak6800_init, .attach = kodak6800_attach, .teardown = kodak6800_teardown, + .cleanup_job = kodak6800_cleanup_job, .read_parse = kodak6800_read_parse, .main_loop = kodak6800_main_loop, .query_serno = kodak6800_query_serno, + .query_markers = kodak6800_query_markers, .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, ""} + { USB_VID_KODAK, USB_PID_KODAK_6800, P_KODAK_6800, "Kodak", "kodak-6800"}, + { USB_VID_KODAK, USB_PID_KODAK_6850, P_KODAK_6850, "Kodak", "kodak-6850"}, + { 0, 0, 0, NULL, NULL} } }; diff --git a/src/cups/backend_magicard.c b/src/cups/backend_magicard.c new file mode 100644 index 0000000..d356bba --- /dev/null +++ b/src/cups/backend_magicard.c @@ -0,0 +1,1143 @@ +/* + * Magicard card printer family CUPS backend -- libusb-1.0 version + * + * (c) 2017-2018 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, see <https://www.gnu.org/licenses/>. + * + * [http://www.gnu.org/licenses/gpl-2.0.html] + * + * SPDX-License-Identifier: GPL-2.0+ + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <time.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <signal.h> +#include <string.h> + +#define BACKEND magicard_backend + +#include "backend_common.h" + +/* Exported */ +#define USB_VID_MAGICARD 0x0C1F +#define USB_PID_MAGICARD_TANGO2E 0x1800 +#define USB_PID_MAGICARD_ENDURO 0x4800 // ?? +#define USB_PID_MAGICARD_ENDUROPLUS 0x880A // ?? + +/* Gamma tables computed with this perl program: + + my $input_bpp = 8; + my $output_bpp = 6; + my $gamma = 1/1.8; # or 1/2.2 or whatever. + + my $i; + + for (my $i = 0 ; $i < (2 ** $input_bpp) ; $i++) { + my $linear = $i / (2 ** $input_bpp); + my $gc = ($linear ** $gamma) * (2 ** $output_bpp); + $gc = int($gc); + print "$gc, "; + } + +*/ + +static uint8_t gammas[2][256] = { + /* Gamma = 2.2 */ + { + 0, 5, 7, 8, 9, 10, 11, 12, 13, 13, 14, 15, 15, 16, 17, + 17, 18, 18, 19, 19, 20, 20, 20, 21, 21, 22, 22, 23, 23, 23, + 24, 24, 24, 25, 25, 25, 26, 26, 26, 27, 27, 27, 28, 28, 28, + 29, 29, 29, 29, 30, 30, 30, 31, 31, 31, 31, 32, 32, 32, 32, + 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35, 35, 36, 36, + 36, 36, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 39, 39, 39, + 39, 39, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, 42, 42, 42, + 42, 42, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 45, 45, + 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 47, 47, 47, 47, 47, + 47, 48, 48, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 49, 50, + 50, 50, 50, 50, 50, 50, 51, 51, 51, 51, 51, 51, 51, 52, 52, + 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 54, 54, 54, + 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, + 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, + 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, + 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, + }, + /* Gamma = 1.8 */ + { + 0, 2, 4, 5, 6, 7, 7, 8, 9, 9, 10, 11, 11, 12, 12, + 13, 13, 14, 14, 15, 15, 15, 16, 16, 17, 17, 17, 18, 18, 19, + 19, 19, 20, 20, 20, 21, 21, 21, 22, 22, 22, 23, 23, 23, 24, + 24, 24, 24, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 28, 28, + 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 32, + 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 34, 35, 35, 35, + 35, 36, 36, 36, 36, 36, 37, 37, 37, 37, 37, 38, 38, 38, 38, + 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, + 42, 42, 42, 42, 42, 42, 43, 43, 43, 43, 43, 44, 44, 44, 44, + 44, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 47, 47, 47, + 47, 47, 47, 48, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 49, + 50, 50, 50, 50, 50, 50, 51, 51, 51, 51, 51, 51, 52, 52, 52, + 52, 52, 52, 53, 53, 53, 53, 53, 53, 54, 54, 54, 54, 54, 54, + 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 57, 57, + 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, + 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, + 61, 61, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, + } +}; + +struct magicard_printjob { + uint8_t *databuf; + int datalen; + + int hdr_len; + int copies; +}; + +/* Private data structure */ +struct magicard_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + int type; + + struct marker marker; +}; + +struct magicard_cmd_header { + uint8_t guard[9]; /* 0x05 */ + uint8_t guard2[1]; /* 0x01 */ + uint8_t cmd[4]; /* 'REQ,' */ + uint8_t subcmd[4]; /* '???,' */ + uint8_t arg[4]; /* '???,' */ + uint8_t footer[2]; /* 0x1c 0x03 */ +}; + +struct magicard_cmd_simple_header { + uint8_t guard[9]; /* 0x05 */ + uint8_t guard2[1]; /* 0x01 */ + uint8_t cmd[]; /* '???' */ +// uint8_t footer[2]; /* 0x1c 0x03 */ +}; + +struct magicard_resp_header { + uint8_t guard[1]; /* 0x01 */ + uint8_t subcmd_arg[7]; /* '???,???' */ + uint8_t data[0]; /* freeform resp */ +// uint8_t term[2]; /* 0x2c 0x03 terminates! */ +}; + +struct magicard_requests { + char *key; + char *desc; + uint8_t type; +}; + +enum { + TYPE_UNKNOWN = 0, + TYPE_STRING, + TYPE_STRINGINT, + TYPE_STRINGINT_HEX, + TYPE_IPADDR, + TYPE_YESNO, + TYPE_MODEL, +}; + +/* Data definitions */ +static struct magicard_requests magicard_sta_requests[] = { + { "MSR", "Printer Serial Number", TYPE_STRING }, + { "PSR", "Print Head Serial Number", TYPE_STRING }, + { "BSR", "PCB Serial Number", TYPE_STRING }, + { "VRS", "Firmware Version", TYPE_STRING }, + { "FDC", "Head Density", TYPE_STRINGINT }, /* 25 per step */ + { "FSP", "Image Start", TYPE_STRINGINT }, /* 8 steps per pixel */ + { "FEP", "Image End", TYPE_STRINGINT }, /* 8 steps per pixel */ + { "FSS", "Ramp Adjust", TYPE_STRINGINT }, + { "FPP", "Head Position", TYPE_STRINGINT }, /* L-R alignment */ + { "MDL", "Model", TYPE_MODEL }, /* 0 == Standard. Others? */ + { "PID", "USB PID", TYPE_STRINGINT_HEX }, /* ASCII integer, but needs to be shown as hex */ + { "VID", "USB VID", TYPE_STRINGINT_HEX }, /* ASCII integer, but needs to be shown as hex */ + { "USN", "USB Serial Number", TYPE_STRING }, + { "UPN", "USB Manufacturer", TYPE_STRING }, + { "MAC", "Ethernet MAC Address", TYPE_STRING }, + { "DYN", "Dynamic Address", TYPE_YESNO }, /* 1 == yes, 0 == no */ + { "IPA", "IP Address", TYPE_IPADDR }, /* ASCII signed integer */ + { "SNM", "IP Netmask", TYPE_IPADDR }, /* ASCII signed integer */ + { "GWY", "IP Gateway", TYPE_IPADDR }, /* ASCII signed integer */ + + { "TCQ", "Total Cards Printed", TYPE_STRINGINT }, + { "TCP", "Prints on Head", TYPE_STRINGINT }, + { "TCN", "Cleaning Cycles", TYPE_STRINGINT }, + { "CCQ", "Cards Since Last Cleaning", TYPE_STRINGINT }, + { "TPQ", "Total Panels Printed", TYPE_STRINGINT }, + { "CCP", "Cards between Cleaning Prompts", TYPE_STRINGINT }, + { "CPQ", "Panels Since Last Cleaning", TYPE_STRINGINT }, + { "DFR", "Panels Remaining", TYPE_STRINGINT }, // cook somehow? + { "CLP", "Cleaning Prompt", TYPE_STRING }, + + // CRQ: OFF ?? Cleaning overdue? + // CHK: checksum of fw? (8 chars, hex?) + // TES: ??? signed int? IP addr? + // RAMP: ??? hangs. + + { NULL, NULL, 0 } +}; + +// Sensors: CAM1 CAM2 TACHO FLIP DYE BARCODE LID FRONT REAR BUTTON TEMP ON OFF +// Languages: ENG ITA POR FRA DEU ESP SCH + +/* Helper functions */ +static int magicard_build_cmd(uint8_t *buf, + char *cmd, char *subcmd, char *arg) +{ + struct magicard_cmd_header *hdr = (struct magicard_cmd_header *) buf; + + memset(hdr->guard, 0x05, sizeof(hdr->guard)); + hdr->guard2[0] = 0x01; + memcpy(hdr->cmd, cmd, 3); + hdr->cmd[3] = ','; + memcpy(hdr->subcmd, subcmd, 3); + hdr->subcmd[3] = ','; + memcpy(hdr->arg, arg, 3); + hdr->arg[3] = ','; + hdr->footer[0] = 0x1c; + hdr->footer[1] = 0x03; + + return sizeof(*hdr); +} + +static int magicard_build_cmd_simple(uint8_t *buf, + char *cmd) +{ + struct magicard_cmd_simple_header *hdr = (struct magicard_cmd_simple_header *) buf; + int len = strlen(cmd); + + memset(hdr->guard, 0x05, sizeof(hdr->guard)); + hdr->guard2[0] = 0x01; + strncpy((char*)hdr->cmd, cmd, len); + hdr->cmd[len] = 0x1c; + hdr->cmd[len+1] = 0x03; + + return (sizeof(*hdr) + len + 2); +} + + +static uint8_t * magicard_parse_resp(uint8_t *buf, uint16_t len, uint16_t *resplen) +{ + struct magicard_resp_header *hdr = (struct magicard_resp_header *) buf; + + *resplen = len - sizeof(hdr->guard) - sizeof(hdr->subcmd_arg) - 2; + + return hdr->data; +} + +static int magicard_query_sensors(struct magicard_ctx *ctx) +{ + int ret = 0; + int i; + uint8_t buf[256]; + char buf2[24]; + + for (i = 1 ; ; i++) { + int num = 0; + + snprintf(buf2, sizeof(buf2), "SNR%d", i); + ret = magicard_build_cmd_simple(buf, buf2); + + if ((ret = send_data(ctx->dev, ctx->endp_down, + buf, ret))) + return ret; + + memset(buf, 0, sizeof(buf)); + + ret = read_data(ctx->dev, ctx->endp_up, + buf, sizeof(buf), &num); + + if (ret < 0) + return ret; + + if (!memcmp(buf, "END", 3)) + break; + + buf[num] = 0; + INFO("%s\n", buf); + } + return 0; +} + +static int magicard_selftest_card(struct magicard_ctx *ctx) +{ + int ret = 0; + uint8_t buf[256]; + + ret = magicard_build_cmd_simple(buf, "TST,"); + + ret = send_data(ctx->dev, ctx->endp_down, + buf, ret); + return ret; +} + +static int magicard_reset(struct magicard_ctx *ctx) +{ + int ret = 0; + uint8_t buf[256]; + + ret = magicard_build_cmd_simple(buf, "RST,"); + + ret = send_data(ctx->dev, ctx->endp_down, + buf, ret); + return ret; +} + +static int magicard_eject(struct magicard_ctx *ctx) +{ + int ret = 0; + uint8_t buf[256]; + + ret = magicard_build_cmd_simple(buf, "EJT,"); + + ret = send_data(ctx->dev, ctx->endp_down, + buf, ret); + return ret; +} + +static int magicard_query_printer(struct magicard_ctx *ctx) +{ + int ret = 0; + int i; + uint8_t buf[256]; + char buf2[24]; + + for (i = 1 ; ; i++) { + int num = 0; + + snprintf(buf2, sizeof(buf2), "QPR%d", i); + ret = magicard_build_cmd_simple(buf, buf2); + + if ((ret = send_data(ctx->dev, ctx->endp_down, + buf, ret))) + return ret; + + memset(buf, 0, sizeof(buf)); + + ret = read_data(ctx->dev, ctx->endp_up, + buf, sizeof(buf), &num); + + if (ret < 0) + return ret; + + if (!memcmp(buf, "END", 3)) + break; + + buf[num] = 0; + INFO("%s\n", buf); + } + return 0; +} + +static int magicard_query_status(struct magicard_ctx *ctx) +{ + int ret = 0; + int i; + uint8_t buf[256]; + + for (i = 0 ; ; i++) { + uint16_t resplen = 0; + uint8_t *resp; + int num = 0; + + if (magicard_sta_requests[i].key == NULL) + break; + + ret = magicard_build_cmd(buf, "REQ", "STA", + magicard_sta_requests[i].key); + + if ((ret = send_data(ctx->dev, ctx->endp_down, + buf, ret))) + return ret; + + memset(buf, 0, sizeof(buf)); + + ret = read_data(ctx->dev, ctx->endp_up, + buf, sizeof(buf), &num); + + if (ret < 0) + return ret; + + resp = magicard_parse_resp(buf, num, &resplen); + resp[resplen] = 0; + switch(magicard_sta_requests[i].type) { + case TYPE_IPADDR: { + int32_t ipaddr; + uint8_t *addr = (uint8_t *) &ipaddr; + ipaddr = atoi((char*)resp); + INFO("%s:\t%d.%d.%d.%d\n", + magicard_sta_requests[i].desc, + addr[3], addr[2], addr[1], addr[0]); + break; + } + case TYPE_YESNO: { + int val = atoi((char*)resp); + INFO("%s:\t%s\n", + magicard_sta_requests[i].desc, + val? "Yes" : "No"); + break; + } + case TYPE_MODEL: { + int val = atoi((char*)resp); + INFO("%s:\t%s\n", + magicard_sta_requests[i].desc, + val == 0? "Standard" : "Unknown"); + break; + } + case TYPE_STRINGINT_HEX: { + int val = atoi((char*)resp); + INFO("%s:\t%X\n", + magicard_sta_requests[i].desc, + val); + break; + } + case TYPE_STRINGINT: + // treat differently? + case TYPE_STRING: + case TYPE_UNKNOWN: + default: + INFO("%s:\t%s\n", + magicard_sta_requests[i].desc, + resp); + } + } + + return ret; +} + +/* Main driver */ +static void* magicard_init(void) +{ + struct magicard_ctx *ctx = malloc(sizeof(struct magicard_ctx)); + if (!ctx) { + ERROR("Memory Allocation Failure!"); + return NULL; + } + memset(ctx, 0, sizeof(struct magicard_ctx)); + return ctx; +} + +static int magicard_attach(void *vctx, struct libusb_device_handle *dev, int type, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +{ + struct magicard_ctx *ctx = vctx; + + UNUSED(jobid); + + ctx->dev = dev; + ctx->endp_up = endp_up; + ctx->endp_down = endp_down; + ctx->type = type; + + ctx->marker.color = "#00FFFF#FF00FF#FFFF00"; // XXX YMCK too! + ctx->marker.name = "Unknown"; // LC1/LC3/LC6/LC8 + ctx->marker.levelmax = -1; + ctx->marker.levelnow = -2; + + return CUPS_BACKEND_OK; +} + +static void magicard_cleanup_job(const void *vjob) +{ + const struct magicard_printjob *job = vjob; + + if (job->databuf) + free(job->databuf); + + free((void*)job); +} + +static void magicard_teardown(void *vctx) { + struct magicard_ctx *ctx = vctx; + + if (!ctx) + return; + + free(ctx); +} + +static void downscale_and_extract(int gamma, uint32_t pixels, + uint8_t *y_i, uint8_t *m_i, uint8_t *c_i, + uint8_t *y_o, uint8_t *m_o, uint8_t *c_o, uint8_t *k_o) +{ + uint32_t i; + + for (i = 0 ; i < pixels; i++) + { + uint8_t y, m, c; + uint8_t k = 0; + uint32_t j; + uint32_t row; + uint32_t col; + uint32_t b_offset; + uint8_t b_shift; + + /* Downscale color planes from 8bpp -> 6bpp; */ + if (gamma) { + if (gamma > 2) + gamma = 2; + gamma--; + y = gammas[gamma][*y_i++]; + m = gammas[gamma][*m_i++]; + c = gammas[gamma][*c_i++]; + } else { + y = *y_i++ >> 2; + m = *m_i++ >> 2; + c = *c_i++ >> 2; + } + + /* Extract "true black" from ymc data, if enabled */ + if (k_o && y == 0x3f && m == 0x3f && c == 0x3f) { + k = 1; + y = m = c = 0; + } + + /* Compute row number and offsets */ + row = i / 672; + col = i - (row * 672); + b_offset = col / 8; + b_shift = 7 - (col - (b_offset * 8)); + + /* Now, for each row, break it down into sub-chunks */ + for (j = 0 ; j < 6 ; j++) { + if (b_shift == 7) { + y_o[row * 504 + j * 84 + b_offset] = 0; + m_o[row * 504 + j * 84 + b_offset] = 0; + c_o[row * 504 + j * 84 + b_offset] = 0; + } + if (y & (1 << j)) + y_o[row * 504 + j * 84 + b_offset] |= (1 << b_shift); + if (m & (1 << j)) + m_o[row * 504 + j * 84 + b_offset] |= (1 << b_shift); + if (c & (1 << j)) + c_o[row * 504 + j * 84 + b_offset] |= (1 << b_shift); + } + + /* And resin black, if enabled */ + if (k_o) { + if (b_shift == 7) { + k_o[row * 84 + b_offset] = 0; + } + if (k) + k_o[row * 84 + b_offset] |= (1 << b_shift); + } + } +} + +#define MAX_PRINTJOB_LEN (1016*672*4) + 1024 /* 1016*672 * 4color */ +#define INITIAL_BUF_LEN 1024 +static int magicard_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { + struct magicard_ctx *ctx = vctx; + uint8_t initial_buf[INITIAL_BUF_LEN + 1]; + uint32_t buf_offset = 0; + int i; + + uint8_t *in_y, *in_m, *in_c; + uint8_t *out_y, *out_m, *out_c, *out_k; + uint32_t len_y = 0, len_m = 0, len_c = 0, len_k = 0; + int gamma = 0; + + uint8_t x_gp_8bpp; + uint8_t x_gp_rk; + uint8_t k_only; + + struct magicard_printjob *job = NULL; + + if (!ctx) + return CUPS_BACKEND_FAILED; + + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; + } + memset(job, 0, sizeof(*job)); + job->copies = copies; + + /* Read in the first chunk */ + i = read(data_fd, initial_buf, INITIAL_BUF_LEN); + if (i < 0) { + magicard_cleanup_job(job); + return i; + } else if (i == 0) { + magicard_cleanup_job(job); + return CUPS_BACKEND_CANCEL; /* Ie no data, we're done */ + } else if (i < INITIAL_BUF_LEN) { + magicard_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + + /* Basic Sanity Check */ + if (initial_buf[0] != 0x05 || + initial_buf[64] != 0x01 || + initial_buf[65] != 0x2c) { + ERROR("Unrecognized header data format @%d!\n", job->datalen); + magicard_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + + initial_buf[INITIAL_BUF_LEN] = 0; + + /* We can start allocating! */ + if (job->databuf) { + free(job->databuf); + job->databuf = NULL; + } + job->datalen = 0; + job->databuf = malloc(MAX_PRINTJOB_LEN); + if (!job->databuf) { + ERROR("Memory allocation failure!\n"); + magicard_cleanup_job(job); + return CUPS_BACKEND_RETRY_CURRENT; + } + + /* Copy over initial header */ + memcpy(job->databuf + job->datalen, initial_buf + buf_offset, 65); + job->datalen += 65; + buf_offset += 65; + + /* Start parsing headers */ + x_gp_8bpp = x_gp_rk = k_only = job->hdr_len = 0; + + char *ptr; + ptr = strtok((char*)initial_buf + ++buf_offset, ",\x1c"); + while (ptr && *ptr != 0x1c) { + if (!strcmp("X-GP-8", ptr)) { + x_gp_8bpp = 1; + } else if (!strncmp("TDT", ptr, 3)) { + /* Strip out the timestamp, replace it with one from the backend */ + } else if (!strncmp("IMF", ptr,3)) { + /* Strip out the image format, replace it with backend */ +// } else if (!strncmp("ESS", ptr, 3)) { +// /* Strip out copies */ + } else if (!strcmp("X-GP-RK", ptr)) { + x_gp_rk = 1; + } else if (!strncmp("ICC", ptr,3)) { + /* Gamma curve is not handled by printer, + strip it out and use it! */ + gamma = atoi(ptr + 3); + } else if (!strncmp("SZ", ptr, 2)) { + if (ptr[2] == 'B') { + len_y = atoi(ptr + 3); + } else if (ptr[2] == 'G') { + len_m = atoi(ptr + 3); + } else if (ptr[2] == 'R') { + len_c = atoi(ptr + 3); + } else if (ptr[2] == 'K') { + len_k = atoi(ptr + 3); + } + } else { + /* Everything else goes in */ + job->datalen += sprintf((char*)job->databuf + job->datalen, ",%s", ptr); + } + + /* Keep going */ + buf_offset += strlen(ptr) + 1; + /* Peek ahead to see if this is it */ + if (initial_buf[buf_offset + 1] == 0x1c) + break; + /* Otherwise continue to the next token */ + ptr = strtok(NULL, ",\x1c"); + } + + /* Sanity checks */ + if (!len_y || !len_m || !len_c) { + ERROR("Plane lengths missing? %u/%u/%u!\n", len_y, len_m, len_c); + magicard_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + if (len_y != len_m || len_y != len_c) { + ERROR("Inconsistent data plane lengths! %u/%u/%u!\n", len_y, len_m, len_c); + magicard_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + if (x_gp_rk && len_k) { + ERROR("Data stream already has a K layer!\n"); + magicard_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + + /* Generate a timestamp */ + job->datalen += sprintf((char*)job->databuf + job->datalen, ",TDT%08X", (uint32_t) time(NULL)); + + /* Generate image format tag */ + if (k_only == 1) { + job->datalen += sprintf((char*)job->databuf + job->datalen, ",IMFK"); + } else if (x_gp_rk || len_k) { + /* We're adding K, so make this BGRK */ + job->datalen += sprintf((char*)job->databuf + job->datalen, ",IMFBGRK"); + } else { + /* Just BGR */ + job->datalen += sprintf((char*)job->databuf + job->datalen, ",IMFBGR"); + } + + /* Insert SZB/G/R/K length descriptors */ + if (x_gp_8bpp) { + if (k_only == 1) { + job->datalen += sprintf((char*)job->databuf + job->datalen, ",SZK%u", len_c / 8); + } else { + job->datalen += sprintf((char*)job->databuf + job->datalen, ",SZB%u", len_y * 6 / 8); + job->datalen += sprintf((char*)job->databuf + job->datalen, ",SZG%u", len_m * 6 / 8); + job->datalen += sprintf((char*)job->databuf + job->datalen, ",SZR%u", len_c * 6 / 8); + /* Add in a SZK length indication if requested */ + if (x_gp_rk == 1) { + job->datalen += sprintf((char*)job->databuf + job->datalen, ",SZK%u", len_c / 8); + } + } + } else { + job->datalen += sprintf((char*)job->databuf + job->datalen, ",SZB%u", len_y); + job->datalen += sprintf((char*)job->databuf + job->datalen, ",SZG%u", len_m); + job->datalen += sprintf((char*)job->databuf + job->datalen, ",SZR%u", len_c); + /* Add in a SZK length indication if requested */ + if (len_k) { + job->datalen += sprintf((char*)job->databuf + job->datalen, ",SZK%u", len_k); + } + } + + /* Terminate command stream */ + job->databuf[job->datalen++] = 0x1c; + + /* Let's figure out how long the image data stream is supposed to be. */ + uint32_t remain; + if (k_only) { + remain = len_k + 3; + } else { + remain = len_y + len_m + len_c + 3 * 3; + if (len_k) + remain += len_k + 3; + } + /* Offset the stuff we already read in. */ + remain -= INITIAL_BUF_LEN - buf_offset; + remain++; /* Add in a byte for the end of job marker. This is our final value. */ + + /* This is how much of the initial buffer is the header length. */ + job->hdr_len = job->datalen; + + if (x_gp_8bpp) { + uint32_t srcbuf_offset = INITIAL_BUF_LEN - buf_offset; + uint8_t *srcbuf = malloc(MAX_PRINTJOB_LEN); + if (!srcbuf) { + magicard_cleanup_job(job); + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; + } + + memcpy(srcbuf, initial_buf + buf_offset, srcbuf_offset); + + /* Finish loading the data */ + while (remain > 0) { + i = read(data_fd, srcbuf + srcbuf_offset, remain); + if (i < 0) { + ERROR("Data Read Error: %d (%u) @%u)\n", i, remain, srcbuf_offset); + magicard_cleanup_job(job); + free(srcbuf); + return i; + } + if (i == 0) { + ERROR("Short read! (%d/%u)\n", i, remain); + magicard_cleanup_job(job); + free(srcbuf); + return CUPS_BACKEND_CANCEL; + } + srcbuf_offset += i; + remain -= i; + } + + // XXX handle conversion of K-only jobs. if needed. + + /* set up source pointers */ + in_y = srcbuf; + in_m = in_y + len_y + 3; + in_c = in_m + len_m + 3; + + /* Set up destination pointers */ + out_y = job->databuf + job->datalen; + out_m = out_y + (len_y * 6 / 8) + 3; + out_c = out_m + (len_m * 6 / 8) + 3; + out_k = out_c + (len_c * 6 / 8) + 3; + + /* Termination of each plane */ + memcpy(out_m - 3, in_y + len_y, 3); + memcpy(out_c - 3, in_m + len_m, 3); + memcpy(out_k - 3, in_c + len_c, 3); + + if (!x_gp_rk) + out_k = NULL; + + INFO("Converting image data to printer's native format %s\n", x_gp_rk ? "and extracting K channel" : ""); + + downscale_and_extract(gamma, len_y, in_y, in_m, in_c, + out_y, out_m, out_c, out_k); + + /* Pad out the length appropriately. */ + job->datalen += ((len_c * 6 / 8) + 3) * 3; + + /* If there's a K plane, compute length.. */ + if (out_k) { + job->datalen += (len_c / 8); + job->databuf[job->datalen++] = 0x1c; + job->databuf[job->datalen++] = 0x4b; + job->databuf[job->datalen++] = 0x3a; + } + + /* Terminate the entire stream */ + job->databuf[job->datalen++] = 0x03; + + free(srcbuf); + } else { + uint32_t srcbuf_offset = INITIAL_BUF_LEN - buf_offset; + memcpy(job->databuf + job->datalen, initial_buf + buf_offset, srcbuf_offset); + job->datalen += srcbuf_offset; + + /* Finish loading the data */ + while (remain > 0) { + i = read(data_fd, job->databuf + job->datalen, remain); + if (i < 0) { + ERROR("Data Read Error: %d (%u) @%d)\n", i, remain, job->datalen); + magicard_cleanup_job(job); + return i; + } + if (i == 0) { + magicard_cleanup_job(job); + ERROR("Short read! (%d/%u)\n", i, remain); + return CUPS_BACKEND_CANCEL; + } + job->datalen += i; + remain -= i; + } + } + + *vjob = job; + + return CUPS_BACKEND_OK; +} + +static int magicard_main_loop(void *vctx, const void *vjob) { + struct magicard_ctx *ctx = vctx; + int ret; + + const struct magicard_printjob *job = vjob; + + // XXX printer handles copy generation.. + // but it's a numeric parameter. Bleh. + if (!ctx) + return CUPS_BACKEND_FAILED; + if (!job) + return CUPS_BACKEND_FAILED; + + copies = job->copies; +top: + if ((ret = send_data(ctx->dev, ctx->endp_down, + job->databuf, job->hdr_len))) + return CUPS_BACKEND_FAILED; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + job->databuf + job->hdr_len, job->datalen - job->hdr_len))) + return CUPS_BACKEND_FAILED; + + /* Clean up */ + if (terminate) + copies = 1; + + INFO("Print complete (%d copies remaining)\n", copies - 1); + + if (copies && --copies) { + goto top; + } + + return CUPS_BACKEND_OK; +} + +static void magicard_cmdline(void) +{ + DEBUG("\t\t[ -s ] # Query status\n"); + DEBUG("\t\t[ -q ] # Query information\n"); + DEBUG("\t\t[ -I ] # Query printer sensors\n"); + DEBUG("\t\t[ -E ] # Eject card\n"); + DEBUG("\t\t[ -T ] # Print self-test card\n"); + DEBUG("\t\t[ -R ] # Reset printer\n"); +} + +static int magicard_cmdline_arg(void *vctx, int argc, char **argv) +{ + struct magicard_ctx *ctx = vctx; + int i, j = 0; + + if (!ctx) + return -1; + + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "sqEIRT")) >= 0) { + switch(i) { + GETOPT_PROCESS_GLOBAL + case 's': + j = magicard_query_status(ctx); + break; + case 'q': + j = magicard_query_printer(ctx); + break; + case 'E': + j = magicard_eject(ctx); + break; + case 'I': + j = magicard_query_sensors(ctx); + break; + case 'R': + j = magicard_reset(ctx); + break; + case 'T': + j = magicard_selftest_card(ctx); + break; + } + + if (j) return j; + } + + return 0; +} + +static int magicard_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct magicard_ctx *ctx = vctx; + + *markers = &ctx->marker; + *count = 1; + + return CUPS_BACKEND_OK; +} + +static const char *magicard_prefixes[] = { + "magicard", // Family name + "magicard-tango-2e", "magicard-enduro", "magicard-enduroplus", + // extras + "magicard-rio-2e", + // backwards compatibility + "tango2e", "enduro", "enduroplus", + NULL +}; + +struct dyesub_backend magicard_backend = { + .name = "Magicard family", + .version = "0.15", + .uri_prefixes = magicard_prefixes, + .cmdline_arg = magicard_cmdline_arg, + .cmdline_usage = magicard_cmdline, + .init = magicard_init, + .attach = magicard_attach, + .teardown = magicard_teardown, + .cleanup_job = magicard_cleanup_job, + .read_parse = magicard_read_parse, + .main_loop = magicard_main_loop, + .query_markers = magicard_query_markers, + .devices = { + { USB_VID_MAGICARD, USB_PID_MAGICARD_TANGO2E, P_MAGICARD, NULL, "magicard-tango2e"}, + { USB_VID_MAGICARD, USB_PID_MAGICARD_ENDURO, P_MAGICARD, NULL, "magicard-enduro"}, + { USB_VID_MAGICARD, USB_PID_MAGICARD_ENDUROPLUS, P_MAGICARD, NULL, "magicard-enduroplus"}, + { USB_VID_MAGICARD, 0xFFFF, P_MAGICARD, NULL, "magicard"}, + { 0, 0, 0, NULL, "magicard"} + } +}; + +/* Magicard family Spool file format (Tango2e/Rio2e/AvalonE family) + + This one was rather fun to figure out. + + * Job starts with a sequence of 64 '0x05' + * Command sequence starts with 0x01 + * Commands are textual and comma-separated. + * Most are passed through ignored, except for: + * SZB, SZG, SZR, SZK -- indicate length of respective data plane + * IMF -- Image format (BGR/BGRK/K) + * X-GP-8 -- Tells backend to convert from Gutenprint's 8bpp data + * X-GP-RK -- Tells backend to extract K channel from color data + * Command sequence ends with 0x1c + * Image plane data follows, in the order of the SZ# entries + * Plane lengths are specified by the SZ# entry. + * Color planes are actually Y/M/C rather than B/G/R! + * Each plane terminates with 0x1c __ 0x3a, where __ is 0x42, 0x47, 0x52, + and 0x4b for B/G/R/K respectively. Terminator is _not_ part of length. + * Image data is 6bpp for B/G/R and 1bpp for K, 672*1016 pixels + * Organized in a series of 84-byte rows. + * Byte data is LSB first. + * Each row is a single stripe of a single bit of a pixel, so + color data is b0b0b0b0.. b1b1b1b1.. .. b5b5b5b5. + * Job ends with 0x03 + + ** ** ** ** ** ** + + Firmware updates: + + 0x05 (x9) 0x01 REQ,FRM###### 0x1c + + Where ###### is the length of the firmware image. + + Then send over 64 bytes at a time until it's done. + + Then send 0x03 to mark end of job. + + Follow it with: + + 0x01 STA,CHK########, 0x03 (8-digit checksum?) + + 0x05 (x9) 0x01 REQ,UPG, 0x1c 0x03 + + ** ** ** ** ** ** + + Known commands seen in print jobs: + + BAC%s Backside format (CKO, KO, C, CO, K) -- Only used with Duplex. + CKI%s Custom Holokote (ON or OFF) + CPW%s Color power level (0-100, default 50) + DPX%s Duplex (ON or OFF) + EOI%d Card alignment end (0-100, default 50) + ESS%d Number of copies (1-?) + HGT%d Image Height (always seems to be 1016) + HKM%06X Holokote hole. bitwise number, each bit corresponds to an area. + HKT%d Holokote type (1 is "ultra secure, 2 is "interlocking rings", etc) + HPH%s Holopatch (ON or OFF) + IMF%s Image Data Format (BGR, BGRK, K) + KPW%s Black power level (0-100, default 50) + LAN%s Printer display lanaguage (ENG, ITA, POR, FRA, DEU, ESP, SCH) + LC%d Force media type (LC1, LC3, LC6, LC8 for YMCKO/MONO/KO/YMCKOK) + NCT%d,%d,%d,%d Overcoat hole + OPW%s Overcoat power level (0-100, default 50) + OVR%s Overcoat (ON or OFF) + PAG%d Page number (always 1, except 2 if printing duplex backside) + PAT%d Holopatch area (0-24) + REJ%s Reject faulty cards (ON or OFF) + SOI%d Card alignment start (0-100, default 50) + SLW%s Colorsure (ON or OFF) + SZB%d Blue data length + SZG%d Green data length + SZK%d Black data length + SZR%d Red data length + TDT%08X Driver-supplied timestamp of print job. + USF%s Holokote (ON or OFF) + VER%s Inform the printer of the driver version (seems to be ignored) + WID%d Image Width (always seems to be 642) + + Mag-stripe encoding: + + MAG%d Magstripe position (1, 2, or 3) + BPI%d Bits per Inch (75 or 210) + MPC%d Character encoding (5 or 7) + COE%s 'H'igh or 'L'ow coercivity + + Unknown commands seen in print jobs: + + DDD%s ? (only seen '50') -- Could it be K alignment? + KEE ? + NNN%s ? (Seen 'OFF') + NOC%d ? (Seen '1') (Seems to start a job) + PCT%d,%d,%d,%d ? Print area, seems fixed @ 0,0, 1025, 641) + RT2 ? + TRO%d ? (Seen '0', appears with Holokote) + XCO%d ? X start offset (always seems to be 0) + YCO%d ? Y start offset (always seems to be 0) + + Unknown commands: (Seen in firmware guts) + + AAA + AMS + BBB%d Numeric parameter + CLR + FBF + FTC + HFD%s String parameter + IPM + KKK + LBL + LLL + LRC + MGV%s "ON" or "OFF" but no idea + MMM + PAR + RDM + SNR + SSP + + Unknown commands unique to Tango +L (ie w/ Laminator support) + + FRN + LAM + LAM_DLY + LAM_SPD + LAM_LEN + LAM_END + LAM_STA + LAM_DEG + LAM_FLM + LAM_KBD + LAM_MOD + + Commands consumed by backend: + + ICC%d Gamma curve (0, 1, 2) -- off, 2.2, or 1.8 respectively. + X-GP-8 Raw data is 8bpp. needs to be converted. + X-GP-RK Extract K channel from color data. + + Open questions: + + * How to query/read magstripe + * How to set IP address (etc) + * How to set other parameters + + "Simple Commands" (REQ,....,) + + RST Reset printer + TST Generate self-test page + EJT Eject card + + Other "Simple commands" referenced in Rio Pro/Enduro+ docs + + DEALERSERVICE%s ON/OFF (enter/exit dealer service mode) + CAM Reset print head cam position + CHP%s UP/DOWN Feed card into smart encoder + CLN Cleaning cycle + DYE Re-init dye film + ENC Test encoding cycle + FEED%d 0/1,+ 0/1, load card into standby, >1 feed N cards. + FLIP Flip card in printer + FRN%s ON/OFF -- Film saving + HEAD%s UP/DOWN -- Raise or lower print head. + RAMP%d 0-100 Density ramp, 50 default + SET Saves settings into NVDATA + STN Re-init Holokote + SNS Soak cycle, test all sensors + SHW%s CAM, TACHO, FLIP, DYE, LID, FRONT, MID, READ, BUTTON1, BUTTON2, + SMART, TEMP, ON, OFF + LNG%d 0/1/2/3/4/5 == ENG/POR/FRE/GER/SPA/ITA + RUN%s CAM, FEED, DYE, MAIN, FLIPPER, FLIPROLL, FAN, PANEL, POUT, CAL, LCD, + OFF + FLM%s Y/M/C/K/O Align ribbon at corresponding panel + FCL Init dye calibration routine + FCL###### Set dye color to ###### (RGB hex) + +*/ diff --git a/src/cups/backend_mitsu70x.c b/src/cups/backend_mitsu70x.c index 00547a0..154fabb 100644 --- a/src/cups/backend_mitsu70x.c +++ b/src/cups/backend_mitsu70x.c @@ -1,7 +1,7 @@ /* * Mitsubishi CP-D70/D707 Photo Printer CUPS backend -- libusb-1.0 version * - * (c) 2013-2017 Solomon Peachy <pizza@shaftnet.org> + * (c) 2013-2018 Solomon Peachy <pizza@shaftnet.org> * * The latest version of this program can be found at: * @@ -18,11 +18,12 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * + * SPDX-License-Identifier: GPL-2.0+ + * */ #include <stdio.h> @@ -112,7 +113,6 @@ typedef int (*send_image_dataFN)(struct BandImage *out, void *context, #define USB_PID_MITSU_D70X 0x3B30 #define USB_PID_MITSU_K60 0x3B31 #define USB_PID_MITSU_D80 0x3B36 -#define USB_PID_MITSU_D90 0x3B60 #define USB_VID_KODAK 0x040a #define USB_PID_KODAK305 0x404f #define USB_VID_FUJIFILM 0x04cb @@ -125,29 +125,47 @@ typedef int (*send_image_dataFN)(struct BandImage *out, void *context, #define CHUNK_LEN (256*1024) /* Private data structure */ -struct mitsu70x_ctx { - struct libusb_device_handle *dev; - uint8_t endp_up; - uint8_t endp_down; - int type; - +struct mitsu70x_printjob { uint8_t *databuf; int datalen; - uint32_t matte; + uint8_t *spoolbuf; + int spoolbuflen; - uint16_t jobid; uint16_t rows; uint16_t cols; + uint32_t planelen; + uint32_t matte; + int raw_format; + int copies; - uint16_t last_donor_l; - uint16_t last_donor_u; - int num_decks; + int decks_exact[2]; /* Media is exact match */ + int decks_ok[2]; /* Media can be used */ + + /* These are used only for the image processing */ + int sharpen; /* ie mhdr.sharpen - 1 */ + int reverse; char *laminatefname; char *lutfname; char *cpcfname; char *ecpcfname; +}; + +struct mitsu70x_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + int type; + + uint16_t jobid; + + struct marker marker[2]; + uint8_t medias[2]; + + uint16_t last_l; + uint16_t last_u; + int num_decks; void *dl_handle; lib70x_getapiversionFN GetAPIVersion; @@ -170,12 +188,6 @@ struct mitsu70x_ctx { char *last_cpcfname; char *last_ecpcfname; - int raw_format; - int reverse; - int sharpen; /* ie mhdr.sharpen - 1 */ - - uint8_t rew[2]; /* 1 for rewind ok (default!) */ - struct BandImage output; }; @@ -190,7 +202,9 @@ struct mitsu70x_jobstatus { uint8_t mecha_status[2]; uint8_t temperature; uint8_t error_status[3]; - uint8_t reserved[6]; + uint8_t mecha_status_up[2]; + uint8_t temperature_up; + uint8_t error_status_up[3]; } __attribute__((packed)); struct mitsu70x_job { @@ -306,8 +320,7 @@ struct mitsu70x_status_deck { uint8_t mecha_status[2]; uint8_t temperature; /* D70/D80 family only, K60 no? */ uint8_t error_status[3]; - uint8_t rsvd_a[10]; /* K60 family [1] == temperature? [3:6] == lifetime prints in BCD */ - + uint8_t rsvd_a[10]; /* K60 [1] == temperature? All: [3:6] == some counter in BCD. K60 [9] == ?? */ uint8_t media_brand; uint8_t media_type; uint8_t rsvd_b[2]; @@ -315,7 +328,8 @@ struct mitsu70x_status_deck { uint16_t remain; /* media remaining */ uint8_t rsvd_c[2]; uint8_t lifetime_prints[4]; /* lifetime prints on deck + 10, in BCD! */ - uint16_t rsvd_e[17]; + uint8_t rsvd_d[2]; // Unknown + uint16_t rsvd_e[16]; /* all 80 00 */ } __attribute__((packed)); struct mitsu70x_status_ver { @@ -324,13 +338,15 @@ struct mitsu70x_status_ver { } __attribute__((packed)); struct mitsu70x_printerstatus_resp { - uint8_t hdr[4]; /* E4 56 32 31 */ + uint8_t hdr[4]; /* E4 56 32 30 */ uint8_t memory; uint8_t power; uint8_t unk[20]; uint8_t sleeptime; /* In minutes, 0-60 */ uint8_t iserial; /* 0x00 for Enabled, 0x80 for Disabled */ - uint8_t unk_b[12]; + uint8_t unk_b[5]; // [4] == 0x44 on D70x, 0x02 on D80 + uint8_t dual_deck; /* 0x80 for dual-deck D707 */ + uint8_t unk_c[6]; // [3] == 0x5f on D70x, 0x01 on D80. [5] == 0xbd on D70x, 0x87 on D80 int16_t model[6]; /* LE, UTF-16 */ int16_t serno[6]; /* LE, UTF-16 */ struct mitsu70x_status_ver vers[7]; // components are 'MLRTF' @@ -340,12 +356,6 @@ struct mitsu70x_printerstatus_resp { struct mitsu70x_status_deck upper; } __attribute__((packed)); -#define MK60S_0105_M_CSUM 0x148C /* 1.05 316M3 1 148C */ -#define EK305_0104_M_CSUM 0x2878 /* 1.04 316F8 3 2878 */ -#define MD70X_0110_M_CSUM 0x064D /* 1.10 316V1 1 064D */ -#define MD70X_0112_M_CSUM 0x9FC3 /* 1.12 316W1 1 9FC3 */ -#define FA300_XXXX_M_CSUM 0x4431 /* ?.?? 416J2 1 4431 */ - struct mitsu70x_memorystatus_resp { uint8_t hdr[3]; /* E4 56 33 */ uint8_t memory; @@ -383,9 +393,27 @@ struct mitsu70x_hdr { uint8_t pad[447]; } __attribute__((packed)); +static int mitsu70x_get_printerstatus(struct mitsu70x_ctx *ctx, struct mitsu70x_printerstatus_resp *resp); +static int mitsu70x_main_loop(void *vctx, const void *vjob); + /* Error dumps, etc */ -static char *mitsu70x_mechastatus(uint8_t *sts) +const char *mitsu70x_temperatures(uint8_t temp) +{ + switch(temp) { + case TEMPERATURE_NORMAL: + return "Normal"; + case TEMPERATURE_PREHEAT: + return "Warming Up"; + case TEMPERATURE_COOLING: + return "Cooling Down"; + default: + break; + } + return "Unknown Temperature Status"; +} + +static const char *mitsu70x_mechastatus(uint8_t *sts) { switch(sts[0]) { case MECHA_STATUS_INIT: @@ -405,7 +433,7 @@ static char *mitsu70x_mechastatus(uint8_t *sts) return "Unknown Mechanical Status"; } -static char *mitsu70x_jobstatuses(uint8_t *sts) +static const char *mitsu70x_jobstatuses(uint8_t *sts) { switch(sts[0]) { case JOB_STATUS0_NONE: @@ -455,7 +483,7 @@ static char *mitsu70x_jobstatuses(uint8_t *sts) default: return "Unknown 'End Header' status2"; } - break; + break; case JOB_STATUS1_END_PRINT: switch(sts[2]) { case JOB_STATUS2_END_PRINT_MEDIA: @@ -492,7 +520,7 @@ static char *mitsu70x_jobstatuses(uint8_t *sts) return "Unknown status0"; } -static char *mitsu70x_errorclass(uint8_t *err) +static const char *mitsu70x_errorclass(uint8_t *err) { switch(err[1]) { case ERROR_STATUS1_PAPER: @@ -523,7 +551,7 @@ static char *mitsu70x_errorclass(uint8_t *err) return "Unknown error class"; } -static char *mitsu70x_errorrecovery(uint8_t *err) +static const char *mitsu70x_errorrecovery(uint8_t *err) { switch(err[1]) { case ERROR_STATUS2_AUTO: @@ -554,7 +582,7 @@ static char *mitsu70x_errorrecovery(uint8_t *err) return "Unknown recovery"; } -static char *mitsu70x_errors(uint8_t *err) +static const char *mitsu70x_errors(uint8_t *err) { switch(err[0]) { case ERROR_STATUS0_NOSTRIPBIN: @@ -620,7 +648,7 @@ static char *mitsu70x_errors(uint8_t *err) return "Unknown error"; } -static const char *mitsu70x_media_types(uint8_t brand, uint8_t type) +const char *mitsu70x_media_types(uint8_t brand, uint8_t type) { if (brand == 0xff && type == 0x01) return "CK-D735 (3.5x5)"; @@ -675,12 +703,10 @@ static void *mitsu70x_init(void) return ctx; } -static void mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, int type, + 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; ctx->jobid = jobid; if (!ctx->jobid) @@ -689,14 +715,9 @@ static void mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, ctx->dev = dev; ctx->endp_up = endp_up; ctx->endp_down = endp_down; + ctx->type = type; - device = libusb_get_device(dev); - libusb_get_device_descriptor(device, &desc); - - ctx->type = lookup_printer_type(&mitsu70x_backend, - desc.idVendor, desc.idProduct); - - ctx->last_donor_l = ctx->last_donor_u = 65535; + ctx->last_l = ctx->last_u = 65535; /* Attempt to open the library */ #if defined(WITH_DYNAMIC) @@ -710,13 +731,13 @@ static void mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, ERROR("Problem resolving API Version symbol in imaging processing library, too old or not installed?\n"); DL_CLOSE(ctx->dl_handle); ctx->dl_handle = NULL; - return; + return CUPS_BACKEND_FAILED; } if (ctx->GetAPIVersion() != REQUIRED_LIB_APIVERSION) { ERROR("Image processing library API version mismatch!\n"); DL_CLOSE(ctx->dl_handle); ctx->dl_handle = NULL; - return; + return CUPS_BACKEND_FAILED; } ctx->Get3DColorTable = DL_SYM(ctx->dl_handle, "CColorConv3D_Get3DColorTable"); @@ -737,6 +758,7 @@ static void mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, ERROR("Problem resolving symbols in imaging processing library\n"); DL_CLOSE(ctx->dl_handle); ctx->dl_handle = NULL; + return CUPS_BACKEND_FAILED; } else { DEBUG("Image processing library successfully loaded\n"); } @@ -757,6 +779,100 @@ static void mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, #else WARNING("Dynamic library support not enabled, using internal fallback code\n"); #endif + + struct mitsu70x_printerstatus_resp resp; + int ret; + + if (test_mode < TEST_MODE_NOATTACH) { + ret = mitsu70x_get_printerstatus(ctx, &resp); + if (ret) { + ERROR("Unable to get printer status! (%d)\n", ret); + return CUPS_BACKEND_FAILED; + } + } else { + int media_code = 0xf; + if (getenv("MEDIA_CODE")) + media_code = atoi(getenv("MEDIA_CODE")) & 0xf; + + resp.upper.mecha_status[0] = MECHA_STATUS_INIT; + resp.lower.mecha_status[0] = MECHA_STATUS_INIT; + resp.upper.capacity = cpu_to_be16(230); + resp.lower.capacity = cpu_to_be16(230); + resp.upper.remain = cpu_to_be16(200); + resp.lower.remain = cpu_to_be16(200); + resp.upper.media_brand = 0xff; + resp.lower.media_brand = 0xff; + resp.upper.media_type = media_code; + resp.lower.media_type = media_code; + resp.dual_deck = 0x80; /* Make it a dual deck */ + } + + /* Figure out if we're a D707 with two decks */ + if (ctx->type == P_MITSU_D70X && + resp.dual_deck == 0x80) + ctx->num_decks = 2; + else + ctx->num_decks = 1; + + /* Set up markers */ + ctx->marker[0].color = "#00FFFF#FF00FF#FFFF00"; + ctx->marker[0].name = mitsu70x_media_types(resp.lower.media_brand, resp.lower.media_type); + ctx->marker[0].levelmax = be16_to_cpu(resp.lower.capacity); + ctx->marker[0].levelnow = be16_to_cpu(resp.lower.remain); + ctx->medias[0] = resp.lower.media_type & 0xf; + + if (ctx->num_decks == 2) { + ctx->marker[1].color = "#00FFFF#FF00FF#FFFF00"; + ctx->marker[1].name = mitsu70x_media_types(resp.upper.media_brand, resp.upper.media_type); + ctx->marker[1].levelmax = be16_to_cpu(resp.upper.capacity); + ctx->marker[1].levelnow = be16_to_cpu(resp.upper.remain); + ctx->medias[1] = resp.upper.media_type & 0xf; + } + + /* FW sanity checking */ + if (ctx->type == P_KODAK_305) { + /* Known versions: + v1.02: M 316E81 1433 (Add Ultrafine and matte support) + v1.04: M 316F83 2878 (Add 2x6 strip and support "Triton" media) + */ + if (strncmp(resp.vers[0].ver, "316F83", 6) < 0) + WARNING("Printer FW out of date. Highly recommend upgrading EK305 to v1.04 or newer!\n"); + } else if (ctx->type == P_MITSU_K60) { + /* Known versions: + v1.05: M 316M31 148C (Add HG media support) + */ + if (strncmp(resp.vers[0].ver, "316M31", 6) < 0) + WARNING("Printer FW out of date. Highly recommend upgrading K60 to v1.05 or newer!\n"); + } else if (ctx->type == P_MITSU_D70X) { + /* Known versions: + v1.10: M 316V11 064D (Add ultrafine mode, 6x6 support, 2x6 strip, and more?) + v1.12: M 316W11 9FC3 (??) + v1.13: (??) + */ + if (strncmp(resp.vers[0].ver, "316W11", 6) < 0) + WARNING("Printer FW out of date. Highly recommend upgrading D70/D707 to v1.12 or newer!\n"); + } else if (ctx->type == P_FUJI_ASK300) { + /* Known versions: + v?.??: M 316A21 7998 (ancient. no matte or ultrafine) + v?.??: M 316H21 F8EB + v4.20a: M 316J21 4431 (Add 2x6 strip support) + */ + if (strncmp(resp.vers[0].ver, "316J21", 6) < 0) + WARNING("Printer FW out of date. Highly recommend upgrading ASK300 to v4.20a or newer!\n"); + } + + return CUPS_BACKEND_OK; +} + +static void mitsu70x_cleanup_job(const void *vjob) { + const struct mitsu70x_printjob *job = vjob; + + if (job->databuf) + free(job->databuf); + if (job->spoolbuf) + free(job->spoolbuf); + + free((void*)job); } static void mitsu70x_teardown(void *vctx) { @@ -765,9 +881,6 @@ static void mitsu70x_teardown(void *vctx) { if (!ctx) return; - if (ctx->databuf) - free(ctx->databuf); - if (ctx->dl_handle) { if (ctx->cpcdata) ctx->DestroyCPCData(ctx->cpcdata); @@ -783,34 +896,174 @@ static void mitsu70x_teardown(void *vctx) { free(ctx); } -static int mitsu70x_read_parse(void *vctx, int data_fd) { +#define JOB_EQUIV(__x) if (job1->__x != job2->__x) goto done + +static struct mitsu70x_printjob *combine_jobs(const struct mitsu70x_printjob *job1, + const struct mitsu70x_printjob *job2) +{ + struct mitsu70x_printjob *newjob = NULL; + uint16_t newrows; + uint16_t newcols; + uint32_t newpad, finalpad; + uint16_t lamoffset; + + const struct mitsu70x_hdr *hdr1, *hdr2; + struct mitsu70x_hdr *newhdr; + + /* Sanity check */ + if (!job1 || !job2) + goto done; + + hdr1 = (struct mitsu70x_hdr *) job1->databuf; + hdr2 = (struct mitsu70x_hdr *) job2->databuf; + + JOB_EQUIV(rows); + JOB_EQUIV(cols); + JOB_EQUIV(matte); + JOB_EQUIV(sharpen); + + if (hdr1->multicut || hdr2->multicut) + goto done; + if (job1->raw_format || job2->raw_format) + goto done; + if (hdr1->speed != hdr2->speed) + goto done; + + switch (job1->rows) { + case 1218: /* K60, EK305 */ + newrows = 2454; + newpad = 16; + finalpad = 0; + lamoffset = 0; + break; + case 1228: /* D70, ASK300, D80 */ + newrows = 2730; + newpad = 38; + finalpad = 236; + lamoffset = 12; + break; + case 1076: /* EK305, K60 3.5x5" prints */ + newrows = 2190; + newpad = 49; + finalpad = 0; + lamoffset = 0; + break; + default: + goto done; + } + newcols = job1->cols; + newpad *= newcols; + finalpad *= newcols; + + /* Okay, it's kosher to proceed */ + + DEBUG("Combining jobs to save media\n"); + + newjob = malloc(sizeof(*newjob)); + if (!newjob) { + ERROR("Memory allocation failure!\n"); + goto done; + } + memcpy(newjob, job1, sizeof(*newjob)); + + newjob->spoolbuf = NULL; + newjob->rows = newrows; + newjob->cols = newcols; + newjob->planelen = (((newrows * newcols * 2) + 511) /512) * 512; + if (newjob->matte) { + newjob->matte = ((((newrows + lamoffset) * newcols * 2) + 511) / 512) * 512; + } + newjob->databuf = malloc(sizeof(*newhdr) + newjob->planelen * 3 + newjob->matte); + newjob->datalen = 0; + if (!newjob->databuf) { + mitsu70x_cleanup_job(newjob); + newjob = NULL; + ERROR("Memory allocation failure!\n"); + goto done; + } + newhdr = (struct mitsu70x_hdr *) newjob->databuf; + + /* Copy over header */ + memcpy(newhdr, hdr1, sizeof(*newhdr)); + newjob->datalen += sizeof(*newhdr); + + newhdr->rows = cpu_to_be16(newrows); + newhdr->cols = cpu_to_be16(newcols); + + if (newjob->matte) { + newhdr->lamrows = cpu_to_be16(newrows + lamoffset); + newhdr->lamcols = cpu_to_be16(newcols); + } + newhdr->multicut = 1; + newhdr->deck = 0; /* Let printer decide */ + + newjob->spoolbuf = malloc(newrows * newcols * 3); + newjob->spoolbuflen = 0; + if (!newjob->spoolbuf) { + mitsu70x_cleanup_job(newjob); + newjob = NULL; + ERROR("Memory allocation failure!\n"); + goto done; + } + + /* Fill in padding */ + memset(newjob->spoolbuf + newjob->spoolbuflen, 0xff, finalpad * 3); + newjob->spoolbuflen += finalpad * 3; + + /* Copy image payload */ + memcpy(newjob->spoolbuf + newjob->spoolbuflen, job1->spoolbuf, + job1->spoolbuflen); + newjob->spoolbuflen += job1->spoolbuflen; + + /* Fill in padding */ + memset(newjob->spoolbuf + newjob->spoolbuflen, 0xff, newpad * 3); + newjob->spoolbuflen += newpad * 3; + + /* Copy image payload */ + memcpy(newjob->spoolbuf + newjob->spoolbuflen, job2->spoolbuf, + job2->spoolbuflen); + newjob->spoolbuflen += job2->spoolbuflen; + + /* Okay, we're done. */ + +done: + return newjob; +} +#undef JOB_EQUIV + +static int mitsu70x_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { struct mitsu70x_ctx *ctx = vctx; int i, remain; struct mitsu70x_hdr mhdr; - uint32_t planelen; + + struct mitsu70x_printjob *job = NULL; + struct dyesub_joblist *list; + int can_combine; if (!ctx) return CUPS_BACKEND_FAILED; - if (ctx->databuf) { - free(ctx->databuf); - ctx->databuf = NULL; + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; } - - /* Reset some state */ - ctx->matte = 0; - ctx->rew[0] = 1; - ctx->rew[1] = 1; + memset(job, 0, sizeof(*job)); + job->copies = copies; repeat: /* Read in initial header */ remain = sizeof(mhdr); while (remain > 0) { i = read(data_fd, ((uint8_t*)&mhdr) + sizeof(mhdr) - remain, remain); - if (i == 0) + if (i == 0) { + mitsu70x_cleanup_job(job); return CUPS_BACKEND_CANCEL; - if (i < 0) + } + if (i < 0) { + mitsu70x_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } remain -= i; } @@ -823,14 +1076,15 @@ repeat: } /* Sanity check header */ - if (mhdr.hdr[0] != 0x1b && - mhdr.hdr[1] != 0x5a && + if (mhdr.hdr[0] != 0x1b || + mhdr.hdr[1] != 0x5a || mhdr.hdr[2] != 0x54) { ERROR("Unrecognized data format!\n"); + mitsu70x_cleanup_job(job); return CUPS_BACKEND_CANCEL; } - ctx->raw_format = !mhdr.mode; + job->raw_format = !mhdr.mode; /* Sanity check Matte mode */ if (!mhdr.laminate && mhdr.laminate_mode) { @@ -849,61 +1103,61 @@ repeat: /* Figure out the correction data table to use */ if (ctx->type == P_MITSU_D70X) { - ctx->laminatefname = CORRTABLE_PATH "/D70MAT01.raw"; - ctx->lutfname = CORRTABLE_PATH "/CPD70L01.lut"; + job->laminatefname = CORRTABLE_PATH "/D70MAT01.raw"; + job->lutfname = CORRTABLE_PATH "/CPD70L01.lut"; if (mhdr.speed == 3) { - ctx->cpcfname = CORRTABLE_PATH "/CPD70S01.cpc"; + job->cpcfname = CORRTABLE_PATH "/CPD70S01.cpc"; } else if (mhdr.speed == 4) { - ctx->cpcfname = CORRTABLE_PATH "/CPD70U01.cpc"; + job->cpcfname = CORRTABLE_PATH "/CPD70U01.cpc"; } else { - ctx->cpcfname = CORRTABLE_PATH "/CPD70N01.cpc"; + job->cpcfname = CORRTABLE_PATH "/CPD70N01.cpc"; } if (mhdr.hdr[3] != 0x01) { WARNING("Print job has wrong submodel specifier (%x)\n", mhdr.hdr[3]); mhdr.hdr[3] = 0x01; } } else if (ctx->type == P_MITSU_D80) { - ctx->laminatefname = CORRTABLE_PATH "/D80MAT01.raw"; - ctx->lutfname = CORRTABLE_PATH "/CPD80L01.lut"; + job->laminatefname = CORRTABLE_PATH "/D80MAT01.raw"; + job->lutfname = CORRTABLE_PATH "/CPD80L01.lut"; if (mhdr.speed == 3) { - ctx->cpcfname = CORRTABLE_PATH "/CPD80S01.cpc"; - ctx->ecpcfname = CORRTABLE_PATH "/CPD80E01.cpc"; + job->cpcfname = CORRTABLE_PATH "/CPD80S01.cpc"; + job->ecpcfname = CORRTABLE_PATH "/CPD80E01.cpc"; } else if (mhdr.speed == 4) { - ctx->cpcfname = CORRTABLE_PATH "/CPD80U01.cpc"; - ctx->ecpcfname = NULL; + job->cpcfname = CORRTABLE_PATH "/CPD80U01.cpc"; + job->ecpcfname = NULL; } else { - ctx->cpcfname = CORRTABLE_PATH "/CPD80N01.cpc"; - ctx->ecpcfname = NULL; + job->cpcfname = CORRTABLE_PATH "/CPD80N01.cpc"; + job->ecpcfname = NULL; } if (mhdr.hdr[3] != 0x01) { WARNING("Print job has wrong submodel specifier (%x)\n", mhdr.hdr[3]); mhdr.hdr[3] = 0x01; } } else if (ctx->type == P_MITSU_K60) { - ctx->laminatefname = CORRTABLE_PATH "/S60MAT02.raw"; - ctx->lutfname = CORRTABLE_PATH "/CPS60L01.lut"; + job->laminatefname = CORRTABLE_PATH "/S60MAT02.raw"; + job->lutfname = CORRTABLE_PATH "/CPS60L01.lut"; if (mhdr.speed == 3 || mhdr.speed == 4) { mhdr.speed = 4; /* Ultra Fine */ - ctx->cpcfname = CORRTABLE_PATH "/CPS60T03.cpc"; + job->cpcfname = CORRTABLE_PATH "/CPS60T03.cpc"; } else { - ctx->cpcfname = CORRTABLE_PATH "/CPS60T01.cpc"; + job->cpcfname = CORRTABLE_PATH "/CPS60T01.cpc"; } if (mhdr.hdr[3] != 0x00) { WARNING("Print job has wrong submodel specifier (%x)\n", mhdr.hdr[3]); mhdr.hdr[3] = 0x00; } } else if (ctx->type == P_KODAK_305) { - ctx->laminatefname = CORRTABLE_PATH "/EK305MAT.raw"; // Same as K60 - ctx->lutfname = CORRTABLE_PATH "/EK305L01.lut"; + job->laminatefname = CORRTABLE_PATH "/EK305MAT.raw"; // Same as K60 + job->lutfname = CORRTABLE_PATH "/EK305L01.lut"; if (mhdr.speed == 3 || mhdr.speed == 4) { mhdr.speed = 4; /* Ultra Fine */ - ctx->cpcfname = CORRTABLE_PATH "/EK305T03.cpc"; + job->cpcfname = CORRTABLE_PATH "/EK305T03.cpc"; } else { - ctx->cpcfname = CORRTABLE_PATH "/EK305T01.cpc"; + job->cpcfname = CORRTABLE_PATH "/EK305T01.cpc"; } // XXX what about using K60 media if we read back the proper code? if (mhdr.hdr[3] != 0x90) { @@ -911,13 +1165,13 @@ repeat: mhdr.hdr[3] = 0x90; } } else if (ctx->type == P_FUJI_ASK300) { - ctx->laminatefname = CORRTABLE_PATH "/ASK300M2.raw"; // Same as D70 -// ctx->lutfname = CORRTABLE_PATH "/CPD70L01.lut"; // XXX guess, driver did not come with external LUT! + job->laminatefname = CORRTABLE_PATH "/ASK300M2.raw"; // Same as D70 +// job->lutfname = CORRTABLE_PATH "/CPD70L01.lut"; // XXX guess, driver did not come with external LUT! if (mhdr.speed == 3 || mhdr.speed == 4) { mhdr.speed = 3; /* Super Fine */ - ctx->cpcfname = CORRTABLE_PATH "/ASK300T3.cpc"; + job->cpcfname = CORRTABLE_PATH "/ASK300T3.cpc"; } else { - ctx->cpcfname = CORRTABLE_PATH "/ASK300T1.cpc"; + job->cpcfname = CORRTABLE_PATH "/ASK300T1.cpc"; } if (mhdr.hdr[3] != 0x80) { WARNING("Print job has wrong submodel specifier (%x)\n", mhdr.hdr[3]); @@ -925,10 +1179,10 @@ repeat: } } if (!mhdr.use_lut) - ctx->lutfname = NULL; + job->lutfname = NULL; - ctx->sharpen = mhdr.sharpen - 1; - ctx->reverse = !mhdr.reversed; + job->sharpen = mhdr.sharpen - 1; + job->reverse = !mhdr.reversed; /* Clean up header back to pristine. */ mhdr.use_lut = 0; @@ -937,188 +1191,214 @@ repeat: mhdr.reversed = 0; /* Work out total printjob size */ - ctx->cols = be16_to_cpu(mhdr.cols); - ctx->rows = be16_to_cpu(mhdr.rows); + job->cols = be16_to_cpu(mhdr.cols); + job->rows = be16_to_cpu(mhdr.rows); - planelen = ctx->rows * ctx->cols * 2; - planelen = (planelen + 511) / 512 * 512; /* Round to nearest 512 bytes. */ + job->planelen = job->rows * job->cols * 2; + job->planelen = (job->planelen + 511) / 512 * 512; /* Round to nearest 512 bytes. */ if (!mhdr.laminate && mhdr.laminate_mode) { i = be16_to_cpu(mhdr.lamcols) * be16_to_cpu(mhdr.lamrows) * 2; i = (i + 511) / 512 * 512; /* Round to nearest 512 bytes. */ - ctx->matte = i; + job->matte = i; } - remain = 3 * planelen + ctx->matte; + remain = 3 * job->planelen + job->matte; - ctx->datalen = 0; - ctx->databuf = malloc(sizeof(mhdr) + remain + LAMINATE_STRIDE*2); /* Give us a bit extra */ + job->datalen = 0; + job->databuf = malloc(sizeof(mhdr) + remain + LAMINATE_STRIDE*2); /* Give us a bit extra */ - if (!ctx->databuf) { + if (!job->databuf) { ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_FAILED; + mitsu70x_cleanup_job(job); + return CUPS_BACKEND_RETRY_CURRENT; } - memcpy(ctx->databuf + ctx->datalen, &mhdr, sizeof(mhdr)); - ctx->datalen += sizeof(mhdr); + memcpy(job->databuf + job->datalen, &mhdr, sizeof(mhdr)); + job->datalen += sizeof(mhdr); - if (ctx->raw_format) { /* RAW MODE */ + if (job->raw_format) { /* RAW MODE */ DEBUG("Reading in %d bytes of 16bpp YMCL data\n", remain); /* Read in the spool data */ while(remain) { - i = read(data_fd, ctx->databuf + ctx->datalen, remain); - if (i == 0) + i = read(data_fd, job->databuf + job->datalen, remain); + if (i == 0) { + mitsu70x_cleanup_job(job); return CUPS_BACKEND_CANCEL; - if (i < 0) + } + if (i < 0) { + mitsu70x_cleanup_job(job); return CUPS_BACKEND_CANCEL; - ctx->datalen += i; + } + job->datalen += i; remain -= i; } - } else { /* RAW MODE OFF */ - int spoolbuflen = 0; - uint8_t *spoolbuf; + goto done; + } - remain = ctx->rows * ctx->cols * 3; - DEBUG("Reading in %d bytes of 8bpp BGR data\n", remain); + /* Non-RAW mode! */ - spoolbuflen = 0; spoolbuf = malloc(remain); - if (!spoolbuf) { - ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_FAILED; - } + remain = job->rows * job->cols * 3; + DEBUG("Reading in %d bytes of 8bpp BGR data\n", remain); - /* Read in the BGR data */ - while (remain) { - i = read(data_fd, spoolbuf + spoolbuflen, remain); - if (i == 0) - return CUPS_BACKEND_CANCEL; - if (i < 0) - return CUPS_BACKEND_CANCEL; - spoolbuflen += i; - remain -= i; - } + job->spoolbuflen = 0; + job->spoolbuf = malloc(remain); + if (!job->spoolbuf) { + ERROR("Memory allocation failure!\n"); + mitsu70x_cleanup_job(job); + return CUPS_BACKEND_RETRY_CURRENT; + } - /* Run through basic LUT, if present and enabled */ - if (ctx->dl_handle && ctx->lutfname && !ctx->lut) { /* printer-specific, it is fixed per-job */ - DEBUG("Running print data through LUT\n"); - uint8_t *buf = malloc(LUT_LEN); - if (!buf) { - ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_FAILED; - } - if (ctx->Get3DColorTable(buf, ctx->lutfname)) { - ERROR("Unable to open LUT file '%s'\n", ctx->lutfname); - return CUPS_BACKEND_CANCEL; - } - ctx->lut = ctx->Load3DColorTable(buf); - free(buf); - if (!ctx->lut) { - ERROR("Unable to parse LUT file '%s'!\n", ctx->lutfname); - return CUPS_BACKEND_CANCEL; - } - ctx->DoColorConv(ctx->lut, spoolbuf, ctx->cols, ctx->rows, ctx->cols * 3, COLORCONV_BGR); + /* Read in the BGR data */ + while (remain) { + i = read(data_fd, job->spoolbuf + job->spoolbuflen, remain); + if (i == 0) { + mitsu70x_cleanup_job(job); + return CUPS_BACKEND_CANCEL; } + if (i < 0) { + mitsu70x_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + job->spoolbuflen += i; + remain -= i; + } - if (ctx->dl_handle) { - struct BandImage input; - - - /* Load in the CPC file, if needed */ - if (ctx->cpcfname && ctx->cpcfname != ctx->last_cpcfname) { - ctx->last_cpcfname = ctx->cpcfname; - if (ctx->cpcdata) - ctx->DestroyCPCData(ctx->cpcdata); - ctx->cpcdata = ctx->GetCPCData(ctx->cpcfname); - if (!ctx->cpcdata) { - ERROR("Unable to load CPC file '%s'\n", ctx->cpcfname); - return CUPS_BACKEND_CANCEL; - } - } - - /* Load in the secondary CPC, if needed */ - if (ctx->ecpcfname != ctx->last_ecpcfname) { - ctx->last_ecpcfname = ctx->ecpcfname; - if (ctx->ecpcdata) - ctx->DestroyCPCData(ctx->ecpcdata); - if (ctx->ecpcfname) { - ctx->ecpcdata = ctx->GetCPCData(ctx->ecpcfname); - if (!ctx->ecpcdata) { - ERROR("Unable to load CPC file '%s'\n", ctx->cpcfname); - return CUPS_BACKEND_CANCEL; - } - } else { - ctx->ecpcdata = NULL; - } - } + if (!ctx->dl_handle) { + // XXXFALLBACK write fallback code? + ERROR("!!! Image Processing Library not found, aborting!\n"); + mitsu70x_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } - /* Convert using image processing library */ - input.origin_rows = input.origin_cols = 0; - input.rows = ctx->rows; - input.cols = ctx->cols; - input.imgbuf = spoolbuf; - input.bytes_per_row = ctx->cols * 3; - - ctx->output.origin_rows = ctx->output.origin_cols = 0; - ctx->output.rows = ctx->rows; - ctx->output.cols = ctx->cols; - ctx->output.imgbuf = ctx->databuf + ctx->datalen; - ctx->output.bytes_per_row = ctx->cols * 3 * 2; - - DEBUG("Running print data through processing library\n"); - if (ctx->DoImageEffect(ctx->cpcdata, ctx->ecpcdata, - &input, &ctx->output, ctx->sharpen, ctx->reverse, ctx->rew)) { - ERROR("Image Processing failed, aborting!\n"); - return CUPS_BACKEND_CANCEL; - } - } else { - // XXXFALLBACK write fallback code? - ERROR("!!! Image Processing Library not found, aborting!\n"); + /* Run through basic LUT, if present and enabled */ + if (job->lutfname && !ctx->lut) { /* printer-specific, it is fixed per-job */ + uint8_t *buf = malloc(LUT_LEN); + if (!buf) { + ERROR("Memory allocation failure!\n"); + mitsu70x_cleanup_job(job); + return CUPS_BACKEND_RETRY_CURRENT; + } + if (ctx->Get3DColorTable(buf, job->lutfname)) { + ERROR("Unable to open LUT file '%s'\n", job->lutfname); + mitsu70x_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + ctx->lut = ctx->Load3DColorTable(buf); + free(buf); + if (!ctx->lut) { + ERROR("Unable to parse LUT file '%s'!\n", job->lutfname); + mitsu70x_cleanup_job(job); return CUPS_BACKEND_CANCEL; } + } - /* Move up the pointer to after the image data */ - ctx->datalen += 3*planelen; + if (job->lutfname && ctx->lut) { + DEBUG("Running print data through LUT\n"); + ctx->DoColorConv(ctx->lut, job->spoolbuf, job->cols, job->rows, job->cols * 3, COLORCONV_BGR); + } - /* Clean up */ - free(spoolbuf); +done: + list = dyesub_joblist_create(&mitsu70x_backend, ctx); + + for (i = 0 ; i < ctx->num_decks ; i++) { + switch (ctx->medias[i]) { + case 0x1: // 5x3.5 + if (job->rows == 1076) + job->decks_ok[i] = 1; + if (job->rows == 1076) + job->decks_exact[i] = 1; + break; + case 0x2: // 4x6 + if (job->rows == 1218 || + job->rows == 1228) + job->decks_ok[i] = 1; + if (job->rows == 1218 || + job->rows == 1228) + job->decks_exact[i] = 1; + break; + case 0x4: // 5x7 + if (job->rows == 1076 || + job->rows == 1524 || + job->rows == 2128) + job->decks_ok[i] = 1; + if (job->rows == 1524 || + job->rows == 2128) + job->decks_exact[i] = 1; + break; + case 0x5: // 6x9 + case 0xf: // 6x8 + /* This is made more complicated: + some 6x8" jobs are 6x9" sized. Let printer + sort these out. It's unlikely we'll have + 6x8" in one deck and 6x9" in the other! + */ + if (job->rows == 1218 || + job->rows == 1228 || + job->rows == 1820 || + job->rows == 2422 || + job->rows == 2564 || + job->rows == 2730) + job->decks_ok[i] = 1; + if (job->rows == 2422 || + job->rows == 2564 || + job->rows == 2730) + job->decks_exact[i] = 1; + break; + default: + job->decks_ok[i] = 0; + job->decks_exact[i] = 0; + break; + } + } - /* Now that we've filled everything in, read matte from file */ - if (ctx->matte) { - int fd; - uint32_t j; - DEBUG("Reading %d bytes of matte data from disk (%d/%d)\n", ctx->matte, ctx->cols, LAMINATE_STRIDE); - fd = open(ctx->laminatefname, O_RDONLY); - if (fd < 0) { - ERROR("Unable to open matte lamination data file '%s'\n", ctx->laminatefname); - return CUPS_BACKEND_CANCEL; - } + /* 6x4 can be combined, only on 6x8/6x9" media. */ + can_combine = 0; + if (job->decks_exact[0] || + job->decks_exact[1]) { + /* Exact media match, don't combine. */ + } else if (job->rows == 1218 || + job->rows == 1228) { + if (ctx->medias[0] == 0xf || + ctx->medias[0] == 0x5 || + ctx->medias[1] == 0xf || /* Two decks possible */ + ctx->medias[1] == 0x5) + can_combine = !job->raw_format; + } else if (job->rows == 1076) { + if (ctx->type == P_KODAK_305 || + ctx->type == P_MITSU_K60) { + if (ctx->medias[0] == 0x4) /* Only one deck */ + can_combine = !job->raw_format; + } + } - for (j = 0 ; j < be16_to_cpu(mhdr.lamrows) ; j++) { - remain = LAMINATE_STRIDE * 2; - - /* Read one row of lamination data at a time */ - while (remain) { - i = read(fd, ctx->databuf + ctx->datalen, remain); - if (i < 0) - return CUPS_BACKEND_CANCEL; - if (i == 0) { - /* We hit EOF, restart from beginning */ - lseek(fd, 0, SEEK_SET); - continue; - } - ctx->datalen += i; - remain -= i; - } - /* Back off the buffer so we "wrap" on the print row. */ - ctx->datalen -= ((LAMINATE_STRIDE - ctx->cols) * 2); + if (copies > 1 && can_combine) { + struct mitsu70x_printjob *combined; + combined = combine_jobs(job, job); + if (combined) { + combined->copies = job->copies / 2; + dyesub_joblist_addjob(list, combined); + + if (job->copies & 1) { + job->copies = 1; + } else { + mitsu70x_cleanup_job(job); + job = NULL; } - - /* Zero out the tail end of the buffer. */ - j = be16_to_cpu(mhdr.lamcols) * be16_to_cpu(mhdr.lamrows) * 2; - memset(ctx->databuf + ctx->datalen, 0, ctx->matte - j); } } + + if (job) { + dyesub_joblist_addjob(list, job); + } + + /* All further work is in main loop */ + if (test_mode >= TEST_MODE_NOPRINT) + dyesub_joblist_print(list); + + *vjob = list; + return CUPS_BACKEND_OK; } @@ -1191,7 +1471,7 @@ static int mitsu70x_get_jobs(struct mitsu70x_ctx *ctx, struct mitsu70x_jobs *res } #endif -static int mitsu70x_get_memorystatus(struct mitsu70x_ctx *ctx, struct mitsu70x_memorystatus_resp *resp) +static int mitsu70x_get_memorystatus(struct mitsu70x_ctx *ctx, const struct mitsu70x_printjob *job, uint8_t mcut, struct mitsu70x_memorystatus_resp *resp) { uint8_t cmdbuf[CMDBUF_LEN]; @@ -1205,11 +1485,21 @@ static int mitsu70x_get_memorystatus(struct mitsu70x_ctx *ctx, struct mitsu70x_m cmdbuf[1] = 0x56; cmdbuf[2] = 0x33; cmdbuf[3] = 0x00; - tmp = cpu_to_be16(ctx->cols); + tmp = cpu_to_be16(job->cols); memcpy(cmdbuf + 4, &tmp, 2); - tmp = cpu_to_be16(ctx->rows); + + /* We have to lie about print sizes in 4x6*2 multicut modes */ + tmp = job->rows; + if (tmp == 2730 && mcut == 1) { + if (ctx->type == P_MITSU_D70X || + ctx->type == P_FUJI_ASK300) { + tmp = 2422; + } + } + + tmp = cpu_to_be16(tmp); memcpy(cmdbuf + 6, &tmp, 2); - cmdbuf[8] = ctx->matte ? 0x80 : 0x00; + cmdbuf[8] = job->matte ? 0x80 : 0x00; cmdbuf[9] = 0x00; if ((ret = send_data(ctx->dev, ctx->endp_down, @@ -1238,7 +1528,6 @@ static int mitsu70x_get_memorystatus(struct mitsu70x_ctx *ctx, struct mitsu70x_m return 0; } - static int mitsu70x_get_printerstatus(struct mitsu70x_ctx *ctx, struct mitsu70x_printerstatus_resp *resp) { uint8_t cmdbuf[CMDBUF_LEN]; @@ -1249,7 +1538,8 @@ static int mitsu70x_get_printerstatus(struct mitsu70x_ctx *ctx, struct mitsu70x_ cmdbuf[0] = 0x1b; cmdbuf[1] = 0x56; cmdbuf[2] = 0x32; - cmdbuf[3] = 0x30; + cmdbuf[3] = 0x30; /* or x31 or x32, for SINGLE DECK query! + Results will only have one deck. */ if ((ret = send_data(ctx->dev, ctx->endp_down, cmdbuf, 4))) return ret; @@ -1361,23 +1651,41 @@ static int mitsu70x_set_printermode(struct mitsu70x_ctx *ctx, uint8_t enabled) return 0; } #endif -static int mitsu70x_wakeup(struct mitsu70x_ctx *ctx) + +static int mitsu70x_wakeup(struct mitsu70x_ctx *ctx, int wait) { int ret; uint8_t buf[512]; + struct mitsu70x_jobstatus jobstatus; - memset(buf, 0, sizeof(buf)); - buf[0] = 0x1b; - buf[1] = 0x45; - buf[2] = 0x57; // XXX also, 0x53, 0x54 seen. - buf[3] = 0x55; - - INFO("Waking up printer...\n"); - if ((ret = send_data(ctx->dev, ctx->endp_down, - buf, sizeof(buf)))) +top: + /* Query job status for jobid 0 (global) */ + ret = mitsu70x_get_jobstatus(ctx, &jobstatus, 0x0000); + if (ret) return CUPS_BACKEND_FAILED; - return 0; + /* Trigger a wakeup if necessary */ + if (jobstatus.power) { + INFO("Waking up printer...\n"); + + memset(buf, 0, sizeof(buf)); + buf[0] = 0x1b; + buf[1] = 0x45; + buf[2] = 0x57; // XXX also, 0x53, 0x54 seen. + buf[3] = 0x55; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + buf, sizeof(buf)))) + return CUPS_BACKEND_FAILED; + + if (wait) { + sleep(1); + goto top; + } + } + + + return CUPS_BACKEND_OK; } static int d70_library_callback(void *context, void *buffer, uint32_t len) @@ -1392,7 +1700,7 @@ static int d70_library_callback(void *context, void *buffer, uint32_t len) if (chunk > CHUNK_LEN) chunk = CHUNK_LEN; - ret = send_data(ctx->dev, ctx->endp_down, buffer + offset, chunk); + ret = send_data(ctx->dev, ctx->endp_down, (uint8_t*)buffer + offset, chunk); if (ret < 0) break; @@ -1403,7 +1711,7 @@ static int d70_library_callback(void *context, void *buffer, uint32_t len) return ret; } -static int mitsu70x_main_loop(void *vctx, int copies) +static int mitsu70x_main_loop(void *vctx, const void *vjob) { struct mitsu70x_ctx *ctx = vctx; struct mitsu70x_jobstatus jobstatus; @@ -1412,99 +1720,258 @@ static int mitsu70x_main_loop(void *vctx, int copies) uint8_t last_status[4] = {0xff, 0xff, 0xff, 0xff}; int ret; + int copies; + int deck; + + struct mitsu70x_printjob *job = (struct mitsu70x_printjob *) vjob; // XXX not clean. +// const struct mitsu70x_printjob *job = vjob; if (!ctx) return CUPS_BACKEND_FAILED; + if (!job) + return CUPS_BACKEND_FAILED; + + copies = job->copies; + hdr = (struct mitsu70x_hdr*) job->databuf; + + if (job->raw_format) + goto bypass; - hdr = (struct mitsu70x_hdr*) ctx->databuf; + struct BandImage input; + uint8_t rew[2] = { 1, 1 }; /* 1 for rewind ok (default!) */ + + /* Load in the CPC file, if needed */ + if (job->cpcfname && job->cpcfname != ctx->last_cpcfname) { + ctx->last_cpcfname = job->cpcfname; + if (ctx->cpcdata) + ctx->DestroyCPCData(ctx->cpcdata); + ctx->cpcdata = ctx->GetCPCData(job->cpcfname); + if (!ctx->cpcdata) { + ERROR("Unable to load CPC file '%s'\n", job->cpcfname); + return CUPS_BACKEND_CANCEL; + } + } + + /* Load in the secondary CPC, if needed */ + if (job->ecpcfname != ctx->last_ecpcfname) { + ctx->last_ecpcfname = job->ecpcfname; + if (ctx->ecpcdata) + ctx->DestroyCPCData(ctx->ecpcdata); + if (job->ecpcfname) { + ctx->ecpcdata = ctx->GetCPCData(job->ecpcfname); + if (!ctx->ecpcdata) { + ERROR("Unable to load CPC file '%s'\n", job->cpcfname); + return CUPS_BACKEND_CANCEL; + } + } else { + ctx->ecpcdata = NULL; + } + } + + /* Convert using image processing library */ + input.origin_rows = input.origin_cols = 0; + input.rows = job->rows; + input.cols = job->cols; + input.imgbuf = job->spoolbuf; + input.bytes_per_row = job->cols * 3; + + ctx->output.origin_rows = ctx->output.origin_cols = 0; + ctx->output.rows = job->rows; + ctx->output.cols = job->cols; + ctx->output.imgbuf = job->databuf + job->datalen; + ctx->output.bytes_per_row = job->cols * 3 * 2; + + DEBUG("Running print data through processing library\n"); + if (ctx->DoImageEffect(ctx->cpcdata, ctx->ecpcdata, + &input, &ctx->output, job->sharpen, job->reverse, rew)) { + ERROR("Image Processing failed, aborting!\n"); + return CUPS_BACKEND_CANCEL; + } + + /* Twiddle rewind stuff if needed */ + if (ctx->type != P_MITSU_D70X) { + hdr->rewind[0] = !rew[0]; + hdr->rewind[1] = !rew[1]; + DEBUG("Rewind Inhibit? %02x %02x\n", hdr->rewind[0], hdr->rewind[1]); + } + + /* Move up the pointer to after the image data */ + job->datalen += 3*job->planelen; + + /* Clean up */ + // XXX not really necessary. + free(job->spoolbuf); + job->spoolbuf = NULL; + job->spoolbuflen = 0; + + /* Now that we've filled everything in, read matte from file */ + if (job->matte) { + int fd; + uint32_t j; + DEBUG("Reading %u bytes of matte data from disk (%d/%d)\n", job->matte, job->cols, LAMINATE_STRIDE); + fd = open(job->laminatefname, O_RDONLY); + if (fd < 0) { + ERROR("Unable to open matte lamination data file '%s'\n", job->laminatefname); + return CUPS_BACKEND_CANCEL; + } + + for (j = 0 ; j < be16_to_cpu(hdr->lamrows) ; j++) { + int remain = LAMINATE_STRIDE * 2; + + /* Read one row of lamination data at a time */ + while (remain) { + int i = read(fd, job->databuf + job->datalen, remain); + if (i < 0) + return CUPS_BACKEND_CANCEL; + if (i == 0) { + /* We hit EOF, restart from beginning */ + lseek(fd, 0, SEEK_SET); + continue; + } + job->datalen += i; + remain -= i; + } + /* Back off the buffer so we "wrap" on the print row. */ + job->datalen -= ((LAMINATE_STRIDE - job->cols) * 2); + } + /* We're done */ + close(fd); + + /* Zero out the tail end of the buffer. */ + j = be16_to_cpu(hdr->lamcols) * be16_to_cpu(hdr->lamrows) * 2; + memset(job->databuf + job->datalen, 0, job->matte - j); + } + +bypass: + /* Bypass */ + if (test_mode >= TEST_MODE_NOPRINT) + return CUPS_BACKEND_OK; INFO("Waiting for printer idle...\n"); + /* Ensure printer is awake */ + ret = mitsu70x_wakeup(ctx, 1); + if (ret) + return CUPS_BACKEND_FAILED; + top: /* Query job status for jobid 0 (global) */ ret = mitsu70x_get_jobstatus(ctx, &jobstatus, 0x0000); if (ret) return CUPS_BACKEND_FAILED; - /* Make sure we're awake! */ - if (jobstatus.power) { - ret = mitsu70x_wakeup(ctx); - if (ret) - return CUPS_BACKEND_FAILED; + /* Figure out which deck(s) can be used. + This should be in the main loop due to copy retries */ - sleep(1); - goto top; + /* First, try to respect requested deck */ + if (ctx->type == P_MITSU_D70X) { + deck = hdr->deck; /* Respect D70 deck choice, 0 is automatic. */ + } else { + deck = 1; /* All others have one deck only */ } - /* Make sure temperature is sane */ - if (jobstatus.temperature == TEMPERATURE_COOLING) { - INFO("Printer cooling down...\n"); - sleep(1); - goto top; + /* If user requested a specific deck, go with it, if it's legal */ + if (deck == 1 && job->decks_ok[0]) { + deck = 1; + } else if (deck == 2 && job->decks_ok[1]) { + deck = 2; + /* If we have an exact match for media, use it exclusively */ + } else if (job->decks_exact[0] && job->decks_exact[1]) { + deck = 1 | 2; + } else if (job->decks_exact[0]) { + deck = 1; + } else if (job->decks_exact[1]) { + deck = 2; + /* Use a non-exact match only if we don't have an exact match */ + } else if (job->decks_ok[0] && job->decks_ok[1]) { + deck = 1 | 2; + } else if (job->decks_ok[0]) { + deck = 1; + } else if (job->decks_ok[1]) { + deck = 2; + } else { + ERROR("Loaded media does not match job!\n"); + return CUPS_BACKEND_CANCEL; } - /* See if we hit a printer error. */ - if (jobstatus.error_status[0]) { - ERROR("%s/%s -> %s: %02x/%02x/%02x\n", - mitsu70x_errorclass(jobstatus.error_status), - mitsu70x_errors(jobstatus.error_status), - mitsu70x_errorrecovery(jobstatus.error_status), - jobstatus.error_status[0], - jobstatus.error_status[1], - jobstatus.error_status[2]); - return CUPS_BACKEND_STOP; + if (ctx->num_decks > 1) + DEBUG("Deck selection mask: %d (%d %d %d/%d %d/%d) \n", + deck, hdr->deck, job->rows, + job->decks_exact[0], job->decks_exact[1], + job->decks_ok[0], job->decks_ok[1]); + + /* Okay, we know which decks are _legal_, pick one to use */ + if (deck & 1) { + if (jobstatus.temperature == TEMPERATURE_COOLING) { + if (ctx->num_decks == 2) + INFO("Lower deck cooling down...\n"); + else + INFO("Printer cooling down...\n"); + deck &= ~1; + } else if (jobstatus.error_status[0]) { + ERROR("%s/%s -> %s: %02x/%02x/%02x\n", + mitsu70x_errorclass(jobstatus.error_status), + mitsu70x_errors(jobstatus.error_status), + mitsu70x_errorrecovery(jobstatus.error_status), + jobstatus.error_status[0], + jobstatus.error_status[1], + jobstatus.error_status[2]); + deck &= ~1; + } else if (jobstatus.mecha_status[0] != MECHA_STATUS_IDLE) { + deck = ~1; + } + } + if (deck & 2) { + if (jobstatus.temperature_up == TEMPERATURE_COOLING) { + INFO("Upper deck cooling down...\n"); + deck &= ~2; + } else if (jobstatus.error_status_up[0]) { + ERROR("UPPER: %s/%s -> %s: %02x/%02x/%02x\n", + mitsu70x_errorclass(jobstatus.error_status_up), + mitsu70x_errors(jobstatus.error_status_up), + mitsu70x_errorrecovery(jobstatus.error_status_up), + jobstatus.error_status_up[0], + jobstatus.error_status_up[1], + jobstatus.error_status_up[2]); + deck &= ~2; + } else if (jobstatus.mecha_status_up[0] != MECHA_STATUS_IDLE) { + deck = ~2; + } } - if (ctx->num_decks) - goto skip_status; - - /* Tell CUPS about the consumables we report */ - ret = mitsu70x_get_printerstatus(ctx, &resp); - if (ret) - return CUPS_BACKEND_FAILED; + if (deck == 3) { + /* Both decks OK to use, pick one at random */ + if (rand() & 1) + deck = 1; + else + deck = 2; + } - if (resp.upper.mecha_status[0] != MECHA_STATUS_INIT) - ctx->num_decks = 2; - else - ctx->num_decks = 1; + if (ctx->num_decks > 1) + DEBUG("Deck selected: %d\n", deck); - if (ctx->type == P_MITSU_D70X && - ctx->num_decks == 2) { - ATTR("marker-colors=#00FFFF#FF00FF#FFFF00,#00FFFF#FF00FF#FFFF00\n"); - ATTR("marker-high-levels=100,100\n"); - ATTR("marker-low-levels=10,10\n"); - ATTR("marker-names='\"%s\"','\"%s\"'\n", - mitsu70x_media_types(resp.lower.media_brand, resp.lower.media_type), - mitsu70x_media_types(resp.upper.media_brand, resp.upper.media_type)); - ATTR("marker-types=ribbonWax,ribbonWax\n"); - } else { - ATTR("marker-colors=#00FFFF#FF00FF#FFFF00\n"); - ATTR("marker-high-levels=100\n"); - ATTR("marker-low-levels=10\n"); - ATTR("marker-names='%s'\n", - mitsu70x_media_types(resp.lower.media_brand, resp.lower.media_type)); - ATTR("marker-types=ribbonWax\n"); - } + if (deck == 0) { + /* Halt queue if printer is entirely offline */ + if (ctx->num_decks == 2) { + if (jobstatus.error_status[0] && jobstatus.error_status_up[0]) + return CUPS_BACKEND_STOP; + // XXX what if we only have one legal deck, and it's unavailable? We don't want to retry indefinitely here.. + } else { + if (jobstatus.error_status[0]) + return CUPS_BACKEND_STOP; + } - /* FW sanity checking */ - if (ctx->type == P_KODAK_305) { - if (be16_to_cpu(resp.vers[0].checksum) != EK305_0104_M_CSUM) - WARNING("Printer FW out of date. Highly recommend upgrading EK305 to v1.04!\n"); - } else if (ctx->type == P_MITSU_K60) { - if (be16_to_cpu(resp.vers[0].checksum) != MK60S_0105_M_CSUM) - WARNING("Printer FW out of date. Highly recommend upgrading K60 to v1.05!\n"); - } else if (ctx->type == P_MITSU_D70X) { - if (be16_to_cpu(resp.vers[0].checksum) != MD70X_0112_M_CSUM) - WARNING("Printer FW out of date. Highly recommend upgrading D70/D707 to v1.12!\n"); + /* No decks available yet, retry */ + sleep(1); + goto top; } -skip_status: /* Perform memory status query */ { struct mitsu70x_memorystatus_resp memory; INFO("Checking Memory availability\n"); - ret = mitsu70x_get_memorystatus(ctx, &memory); + ret = mitsu70x_get_memorystatus(ctx, job, hdr->multicut, &memory); if (ret) return CUPS_BACKEND_FAILED; @@ -1548,25 +2015,12 @@ skip_status: hdr->jobid = cpu_to_be16(ctx->jobid); /* Set deck */ - if (ctx->type == P_MITSU_D70X) { - hdr->deck = 0; /* D70 use automatic deck selection */ - /* XXX alternatively route it based on state and media? */ - } else { - hdr->deck = 1; /* All others only have a "lower" deck. */ - } - - - /* Twiddle rewind stuff if needed */ - if (ctx->type != P_MITSU_D70X) { - hdr->rewind[0] = !ctx->rew[0]; - hdr->rewind[1] = !ctx->rew[1]; - DEBUG("Rewind Inhibit? %02x %02x\n", hdr->rewind[0], hdr->rewind[1]); - } + hdr->deck = deck; - /* Any other fixups? */ + /* K60 and EK305 need the mcut type 1 specified for 4x6 prints! */ if ((ctx->type == P_MITSU_K60 || ctx->type == P_KODAK_305) && - ctx->cols == 0x0748 && - ctx->rows == 0x04c2 && !hdr->multicut) { + job->cols == 0x0748 && + job->rows == 0x04c2 && !hdr->multicut) { hdr->multicut = 1; } @@ -1574,16 +2028,16 @@ skip_status: INFO("Sending Print Job (internal id %u)\n", ctx->jobid); if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->databuf, + job->databuf, sizeof(struct mitsu70x_hdr)))) return CUPS_BACKEND_FAILED; - if (ctx->dl_handle && !ctx->raw_format) { + if (ctx->dl_handle && !job->raw_format) { if (ctx->SendImageData(&ctx->output, ctx, d70_library_callback)) return CUPS_BACKEND_FAILED; - if (ctx->matte) - if (d70_library_callback(ctx, ctx->databuf + ctx->datalen - ctx->matte, ctx->matte)) + if (job->matte) + if (d70_library_callback(ctx, job->databuf + job->datalen - job->matte, job->matte)) return CUPS_BACKEND_FAILED; } else { // Fallback code.. /* K60 and 305 need data sent in 256K chunks, but the first @@ -1593,10 +2047,10 @@ skip_status: int sent = 512; while (chunk > 0) { if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->databuf + sent, chunk))) + job->databuf + sent, chunk))) return CUPS_BACKEND_FAILED; sent += chunk; - chunk = ctx->datalen - sent; + chunk = job->datalen - sent; if (chunk > CHUNK_LEN) chunk = CHUNK_LEN; } @@ -1606,38 +2060,23 @@ skip_status: INFO("Waiting for printer to acknowledge completion\n"); do { - uint16_t donor_u, donor_l; - sleep(1); ret = mitsu70x_get_printerstatus(ctx, &resp); if (ret) return CUPS_BACKEND_FAILED; - donor_l = be16_to_cpu(resp.lower.remain) * 100 / be16_to_cpu(resp.lower.capacity); - - if (ctx->type == P_MITSU_D70X && - ctx->num_decks == 2) { - donor_u = be16_to_cpu(resp.upper.remain) * 100 / be16_to_cpu(resp.upper.capacity); - if (donor_l != ctx->last_donor_l || - donor_u != ctx->last_donor_u) { - ctx->last_donor_l = donor_l; - ctx->last_donor_u = donor_u; - ATTR("marker-levels=%d,%d\n", donor_l, donor_u); - ATTR("marker-message='\"%d native prints remaining on %s media\"','\"%d native prints remaining on %s media\"'\n", - be16_to_cpu(resp.lower.remain), - mitsu70x_media_types(resp.lower.media_brand, resp.lower.media_type), - be16_to_cpu(resp.upper.remain), - mitsu70x_media_types(resp.upper.media_brand, resp.upper.media_type)); - } - } else { - if (donor_l != ctx->last_donor_l) { - ctx->last_donor_l = donor_l; - ATTR("marker-levels=%d\n", donor_l); - ATTR("marker-message=\"%d native prints remaining on %s media\"\n", - be16_to_cpu(resp.lower.remain), - mitsu70x_media_types(resp.lower.media_brand, resp.lower.media_type)); - } + ctx->marker[0].levelmax = be16_to_cpu(resp.lower.capacity); + ctx->marker[0].levelnow = be16_to_cpu(resp.lower.remain); + if (ctx->num_decks == 2) { + ctx->marker[1].levelmax = be16_to_cpu(resp.upper.capacity); + ctx->marker[1].levelnow = be16_to_cpu(resp.upper.remain); + } + if (ctx->marker[0].levelnow != ctx->last_l || + ctx->marker[1].levelnow != ctx->last_u) { + dump_markers(ctx->marker, ctx->num_decks, 0); + ctx->last_l = ctx->marker[0].levelnow; + ctx->last_u = ctx->marker[1].levelnow; } /* Query job status for our used jobid */ @@ -1646,18 +2085,31 @@ skip_status: return CUPS_BACKEND_FAILED; /* See if we hit a printer error. */ - if (jobstatus.error_status[0]) { - ERROR("%s/%s -> %s: %02x/%02x/%02x\n", - mitsu70x_errorclass(jobstatus.error_status), - mitsu70x_errors(jobstatus.error_status), - mitsu70x_errorrecovery(jobstatus.error_status), - jobstatus.error_status[0], - jobstatus.error_status[1], - jobstatus.error_status[2]); - return CUPS_BACKEND_STOP; + if (deck == 0) { + if (jobstatus.error_status[0]) { + ERROR("%s/%s -> %s: %02x/%02x/%02x\n", + mitsu70x_errorclass(jobstatus.error_status), + mitsu70x_errors(jobstatus.error_status), + mitsu70x_errorrecovery(jobstatus.error_status), + jobstatus.error_status[0], + jobstatus.error_status[1], + jobstatus.error_status[2]); + return CUPS_BACKEND_STOP; + } + } else if (deck == 1) { + if (jobstatus.error_status_up[0]) { + ERROR("UPPER: %s/%s -> %s: %02x/%02x/%02x\n", + mitsu70x_errorclass(jobstatus.error_status_up), + mitsu70x_errors(jobstatus.error_status_up), + mitsu70x_errorrecovery(jobstatus.error_status_up), + jobstatus.error_status_up[0], + jobstatus.error_status_up[1], + jobstatus.error_status_up[2]); + return CUPS_BACKEND_STOP; + } } - /* Only print if it's changed */ + /* Only print if job status is changed */ if (jobstatus.job_status[0] != last_status[0] || jobstatus.job_status[1] != last_status[1] || jobstatus.job_status[2] != last_status[2] || @@ -1669,6 +2121,7 @@ skip_status: jobstatus.job_status[2], jobstatus.job_status[3]); + /* Check for job completion */ if (jobstatus.job_status[0] == JOB_STATUS0_END) { if (jobstatus.job_status[1] || jobstatus.job_status[2] || @@ -1683,7 +2136,12 @@ skip_status: break; } - if (fast_return) { + /* On a two deck system, try to use the second deck + for additional copies. If we can't use it, we'll block. */ + if (ctx->num_decks > 1 && copies > 1) + break; + + if (fast_return && copies <= 1) { /* Copies generated by backend! */ INFO("Fast return mode enabled.\n"); break; } @@ -1705,7 +2163,8 @@ skip_status: return CUPS_BACKEND_OK; } -static void mitsu70x_dump_printerstatus(struct mitsu70x_printerstatus_resp *resp) +static void mitsu70x_dump_printerstatus(struct mitsu70x_ctx *ctx, + struct mitsu70x_printerstatus_resp *resp) { uint32_t i; @@ -1738,83 +2197,102 @@ static void mitsu70x_dump_printerstatus(struct mitsu70x_printerstatus_resp *resp } INFO("Standby Timeout: %d minutes\n", resp->sleeptime); INFO("iSerial Reporting: %s\n", resp->iserial ? "No" : "Yes" ); + INFO("Power Status: %s\n", resp->power ? "Sleeping" : "Awake"); - INFO("Lower Mechanical Status: %s\n", - mitsu70x_mechastatus(resp->lower.mecha_status)); if (resp->lower.error_status[0]) { INFO("Lower Error Status: %s/%s -> %s\n", mitsu70x_errorclass(resp->lower.error_status), mitsu70x_errors(resp->lower.error_status), mitsu70x_errorrecovery(resp->lower.error_status)); } - INFO("Lower Media type: %s (%02x/%02x)\n", + INFO("Lower Temperature: %s\n", mitsu70x_temperatures(resp->lower.temperature)); + INFO("Lower Mechanical Status: %s\n", + mitsu70x_mechastatus(resp->lower.mecha_status)); + INFO("Lower Media Type: %s (%02x/%02x)\n", mitsu70x_media_types(resp->lower.media_brand, resp->lower.media_type), resp->lower.media_brand, resp->lower.media_type); - INFO("Lower Prints remaining: %03d/%03d\n", + INFO("Lower Prints Remaining: %03d/%03d\n", be16_to_cpu(resp->lower.remain), be16_to_cpu(resp->lower.capacity)); - i = packed_bcd_to_uint32((char*)resp->lower.lifetime_prints, 4); if (i) i-= 10; - INFO("Lower Lifetime prints: %u\n", i); + INFO("Lower Lifetime Prints: %u\n", i); - if (resp->upper.mecha_status[0] != MECHA_STATUS_INIT) { - INFO("Upper Mechanical Status: %s\n", - mitsu70x_mechastatus(resp->upper.mecha_status)); + if (ctx->num_decks == 2) { if (resp->upper.error_status[0]) { INFO("Upper Error Status: %s/%s -> %s\n", mitsu70x_errorclass(resp->upper.error_status), mitsu70x_errors(resp->upper.error_status), mitsu70x_errorrecovery(resp->upper.error_status)); } - INFO("Upper Media type: %s (%02x/%02x)\n", + INFO("Upper Temperature: %s\n", mitsu70x_temperatures(resp->upper.temperature)); + INFO("Upper Mechanical Status: %s\n", + mitsu70x_mechastatus(resp->upper.mecha_status)); + INFO("Upper Media Type: %s (%02x/%02x)\n", mitsu70x_media_types(resp->upper.media_brand, resp->upper.media_type), resp->upper.media_brand, resp->upper.media_type); - INFO("Upper Prints remaining: %03d/%03d\n", + INFO("Upper Prints Remaining: %03d/%03d\n", be16_to_cpu(resp->upper.remain), be16_to_cpu(resp->upper.capacity)); i = packed_bcd_to_uint32((char*)resp->upper.lifetime_prints, 4); if (i) i-= 10; - INFO("Upper Lifetime prints: %u\n", i); + INFO("Upper Lifetime Prints: %u\n", i); } } -static int mitsu70x_query_status(struct mitsu70x_ctx *ctx) +static int mitsu70x_query_jobs(struct mitsu70x_ctx *ctx) { - struct mitsu70x_printerstatus_resp resp; #if 0 struct mitsu70x_jobs jobs; #endif struct mitsu70x_jobstatus jobstatus; - int ret; -top: ret = mitsu70x_get_jobstatus(ctx, &jobstatus, 0x0000); if (ret) - goto done; - - /* Make sure we're awake! */ - if (jobstatus.power) { - ret = mitsu70x_wakeup(ctx); - if (ret) - return CUPS_BACKEND_FAILED; - - sleep(1); - goto top; - } - - ret = mitsu70x_get_printerstatus(ctx, &resp); - if (!ret) - mitsu70x_dump_printerstatus(&resp); + return CUPS_BACKEND_FAILED; INFO("JOB00 ID : %06u\n", jobstatus.jobid); INFO("JOB00 status : %s\n", mitsu70x_jobstatuses(jobstatus.job_status)); + INFO("Power Status: %s\n", jobstatus.power ? "Sleeping" : "Awake"); + + if (ctx->num_decks == 2) { + INFO("Lower Deck Mechanical Status: %s\n", + mitsu70x_mechastatus(jobstatus.mecha_status)); + if (jobstatus.error_status[0]) { + INFO("%s/%s -> %s\n", + mitsu70x_errorclass(jobstatus.error_status), + mitsu70x_errors(jobstatus.error_status), + mitsu70x_errorrecovery(jobstatus.error_status)); + } + INFO("Lower Deck Temperature: %s\n", mitsu70x_temperatures(jobstatus.temperature)); + + INFO("Upper Deck Mechanical Status: %s\n", + mitsu70x_mechastatus(jobstatus.mecha_status_up)); + if (jobstatus.error_status_up[0]) { + INFO("%s/%s -> %s\n", + mitsu70x_errorclass(jobstatus.error_status_up), + mitsu70x_errors(jobstatus.error_status_up), + mitsu70x_errorrecovery(jobstatus.error_status_up)); + } + INFO("Upper Deck Temperature: %s\n", mitsu70x_temperatures(jobstatus.temperature_up)); + } else { + INFO("Mechanical Status: %s\n", + mitsu70x_mechastatus(jobstatus.mecha_status)); + if (jobstatus.error_status[0]) { + INFO("%s/%s -> %s\n", + mitsu70x_errorclass(jobstatus.error_status), + mitsu70x_errors(jobstatus.error_status), + mitsu70x_errorrecovery(jobstatus.error_status)); + } + INFO("Temperature: %s\n", mitsu70x_temperatures(jobstatus.temperature)); + } + // memory status? #if 0 ret = mitsu70x_get_jobs(ctx, &jobs); @@ -1827,9 +2305,21 @@ top: INFO("JOB%02d status : %s\n", i, mitsu70x_jobstatuses(jobs.jobs[i].status)); } } -#endif done: +#endif + return CUPS_BACKEND_OK; +} + +static int mitsu70x_query_status(struct mitsu70x_ctx *ctx) +{ + struct mitsu70x_printerstatus_resp resp; + int ret; + + ret = mitsu70x_get_printerstatus(ctx, &resp); + if (!ret) + mitsu70x_dump_printerstatus(ctx, &resp); + return ret; } @@ -1860,7 +2350,10 @@ static int mitsu70x_query_serno(struct libusb_device_handle *dev, uint8_t endp_u static void mitsu70x_cmdline(void) { - DEBUG("\t\t[ -s ] # Query status\n"); + DEBUG("\t\t[ -s ] # Query printer status\n"); + DEBUG("\t\t[ -j ] # Query job status\n"); + DEBUG("\t\t[ -w ] # Wake up printer\n"); + DEBUG("\t\t[ -W ] # Wake up printer and wait\n"); DEBUG("\t\t[ -f ] # Use fast return mode\n"); DEBUG("\t\t[ -k num ] # Set standby time (1-60 minutes, 0 disables)\n"); DEBUG("\t\t[ -x num ] # Set USB iSerialNumber Reporting (1 on, 0 off)\n"); @@ -1874,15 +2367,24 @@ static int mitsu70x_cmdline_arg(void *vctx, int argc, char **argv) if (!ctx) return -1; - while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "sk:X:x:")) >= 0) { + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "jk:swWX:x:")) >= 0) { switch(i) { GETOPT_PROCESS_GLOBAL + case 'j': + j = mitsu70x_query_jobs(ctx); + break; case 'k': j = mitsu70x_set_sleeptime(ctx, atoi(optarg)); break; case 's': j = mitsu70x_query_status(ctx); break; + case 'w': + j = mitsu70x_wakeup(ctx, 0); + break; + case 'W': + j = mitsu70x_wakeup(ctx, 1); + break; case 'x': j = mitsu70x_set_iserial(ctx, atoi(optarg)); break; @@ -1899,28 +2401,73 @@ static int mitsu70x_cmdline_arg(void *vctx, int argc, char **argv) return 0; } +static int mitsu70x_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct mitsu70x_ctx *ctx = vctx; + struct mitsu70x_printerstatus_resp resp; + int ret; + + *markers = ctx->marker; + *count = ctx->num_decks; + + /* Tell CUPS about the consumables we report */ + ret = mitsu70x_get_printerstatus(ctx, &resp); + if (ret) + return CUPS_BACKEND_FAILED; + + if (resp.power) { + ret = mitsu70x_wakeup(ctx, 1); + if (ret) + return CUPS_BACKEND_FAILED; + + ret = mitsu70x_get_printerstatus(ctx, &resp); + if (ret) + return CUPS_BACKEND_FAILED; + } + + ctx->marker[0].levelmax = be16_to_cpu(resp.lower.capacity); + ctx->marker[0].levelnow = be16_to_cpu(resp.lower.remain); + if (ctx->num_decks == 2) { + ctx->marker[1].levelmax = be16_to_cpu(resp.upper.capacity); + ctx->marker[1].levelnow = be16_to_cpu(resp.upper.remain); + } + + return CUPS_BACKEND_OK; +} + +static const char *mitsu70x_prefixes[] = { + "mitsu70x", // Family entry, do not nuke. + "mitsubishi-d70dw", "mitsubishi-d80dw", "mitsubishi-k60dw", "kodak-305", "fujifilm-ask-300" + // Extras + "mitsubishi-d707dw", "mitsubishi-k60dws", + // backwards compatibility + "mitsud80", "mitsuk60", "kodak305", "fujiask300", + NULL, +}; /* Exported */ struct dyesub_backend mitsu70x_backend = { - .name = "Mitsubishi CP-D70/D707/K60/D80", - .version = "0.66", - .uri_prefix = "mitsu70x", + .name = "Mitsubishi CP-D70 family", + .version = "0.88", + .uri_prefixes = mitsu70x_prefixes, + .flags = BACKEND_FLAG_JOBLIST, .cmdline_usage = mitsu70x_cmdline, .cmdline_arg = mitsu70x_cmdline_arg, .init = mitsu70x_init, .attach = mitsu70x_attach, .teardown = mitsu70x_teardown, + .cleanup_job = mitsu70x_cleanup_job, .read_parse = mitsu70x_read_parse, .main_loop = mitsu70x_main_loop, .query_serno = mitsu70x_query_serno, + .query_markers = mitsu70x_query_markers, .devices = { - { USB_VID_MITSU, USB_PID_MITSU_D70X, P_MITSU_D70X, ""}, - { USB_VID_MITSU, USB_PID_MITSU_K60, P_MITSU_K60, ""}, - { USB_VID_MITSU, USB_PID_MITSU_D80, P_MITSU_D80, ""}, -// { USB_VID_MITSU, USB_PID_MITSU_D90, P_MITSU_D90, ""}, - { USB_VID_KODAK, USB_PID_KODAK305, P_KODAK_305, ""}, - { USB_VID_FUJIFILM, USB_PID_FUJI_ASK300, P_FUJI_ASK300, ""}, - { 0, 0, 0, ""} + { USB_VID_MITSU, USB_PID_MITSU_D70X, P_MITSU_D70X, NULL, "mitsubishi-d70dw"}, + { USB_VID_MITSU, USB_PID_MITSU_K60, P_MITSU_K60, NULL, "mitsubishi-k60dw"}, + { USB_VID_MITSU, USB_PID_MITSU_D80, P_MITSU_D80, NULL, "mitsubishi-d80dw"}, + { USB_VID_KODAK, USB_PID_KODAK305, P_KODAK_305, NULL, "kodak-305"}, + { USB_VID_FUJIFILM, USB_PID_FUJI_ASK300, P_FUJI_ASK300, NULL, "fujifilm-ask-300"}, + { 0, 0, 0, NULL, NULL} } }; diff --git a/src/cups/backend_mitsu9550.c b/src/cups/backend_mitsu9550.c index 71b38de..ab7530a 100644 --- a/src/cups/backend_mitsu9550.c +++ b/src/cups/backend_mitsu9550.c @@ -1,7 +1,7 @@ /* * Mitsubishi CP-9xxx Photo Printer Family CUPS backend * - * (c) 2014-2016 Solomon Peachy <pizza@shaftnet.org> + * (c) 2014-2018 Solomon Peachy <pizza@shaftnet.org> * * The latest version of this program can be found at: * @@ -18,11 +18,12 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * + * SPDX-License-Identifier: GPL-2.0+ + * */ #include <stdio.h> @@ -35,6 +36,11 @@ #include <fcntl.h> #include <signal.h> +/* For Integration into gutenprint */ +#if defined(HAVE_CONFIG_H) +#include <config.h> +#endif + #define BACKEND mitsu9550_backend #include "backend_common.h" @@ -53,6 +59,20 @@ //#define USB_PID_MITSU_9810D XXXXXX //#define USB_PID_MITSU_9820DS XXXXXX +#ifndef CORRTABLE_PATH +#ifdef PACKAGE_DATA_DIR +#define CORRTABLE_PATH PACKAGE_DATA_DIR "/backend_data" +#else +#error "Must define CORRTABLE_PATH or PACKAGE_DATA_DIR!" +#endif +#endif + +#define MITSU_M98xx_LAMINATE_FILE CORRTABLE_PATH "/M98MATTE.raw" +#define MITSU_M98xx_DATATABLE_FILE CORRTABLE_PATH "/M98TABLE.dat" +#define MITSU_M98xx_LUT_FILE CORRTABLE_PATH "/M98XXL01.lut" +#define LAMINATE_STRIDE 1868 +#define DATATABLE_SIZE 42204 + /* Spool file structures */ /* Print parameters1 */ @@ -61,14 +81,14 @@ struct mitsu9550_hdr1 { uint8_t unk[10]; /* 00 0a 10 00 [...] */ uint16_t cols; /* BE */ uint16_t rows; /* BE */ - uint8_t matte; /* CP9810 only. 01 for matte, 00 glossy */ + uint8_t matte; /* CP9810/9820 only. 01 for matte, 00 glossy */ uint8_t null[31]; } __attribute__((packed)); /* Print parameters2 */ struct mitsu9550_hdr2 { uint8_t cmd[4]; /* 1b 57 21 2e */ - uint8_t unk[24]; /* 00 80 00 22 08 03 00 [...] */ + uint8_t unk[24]; /* 00 80 00 22 08 03 [...] */ uint16_t copies; /* BE, 1-680 */ uint8_t null[2]; uint8_t cut; /* 00 == normal, 83 == 2x6*2 */ @@ -94,34 +114,63 @@ struct mitsu9550_hdr4 { /* Data plane header */ struct mitsu9550_plane { uint8_t cmd[4]; /* 1b 5a 54 XX */ /* XX == 0x10 if 16bpp, 0x00 for 8bpp */ + uint16_t col_offset; /* BE, normally 0, where we start dumping data */ uint16_t row_offset; /* BE, normally 0, where we start dumping data */ - uint16_t null; /* ??? */ uint16_t cols; /* BE */ uint16_t rows; /* BE */ } __attribute__((packed)); +/* CP98xx Tabular Data */ +struct mitsu98xx_data { + uint16_t GNMby[256]; // @0 + uint16_t GNMgm[256]; // @512 + uint16_t GNMrc[256]; // @1024 + double GammaParams[3]; // @1536 + uint8_t KH[2048]; // @1560 + uint32_t unk_b[3]; // @3608 + + struct { + double unka[256]; // @0 + double unkb[256]; // @2048 + uint32_t unkc[10]; // @4096 + double unkd[256]; // @4136 + double unke[256]; // @6184 // *= sharp->coef[X] + uint32_t unkf[10]; // @8232 + double unkg[256]; // @8272 + // @10320 + } WMAM; // @3620 + uint8_t unc_d[4]; // @13940 @10320 (from wmam start) + struct { + uint32_t unk_a; // @13944/10324 (padding?) + double coef[10]; // @13948/10328 (sharpness coefficients, level 0-9) + uint32_t unk_b[5]; // @14028/10408 + } sharp; // total 104, @13944/10324 + uint8_t unk_e[20]; // @14048/10428 + // @14068/10448 +} __attribute__((packed)); + +struct mitsu98xx_tables { + struct mitsu98xx_data superfine; + struct mitsu98xx_data fine_std; + struct mitsu98xx_data fine_hg; +} __attribute__((packed)); + +/* Command header */ struct mitsu9550_cmd { uint8_t cmd[4]; } __attribute__((packed)); /* Private data structure */ -struct mitsu9550_ctx { - struct libusb_device_handle *dev; - uint8_t endp_up; - uint8_t endp_down; - int type; - int is_s; - +struct mitsu9550_printjob { uint8_t *databuf; uint32_t datalen; uint16_t rows; uint16_t cols; uint32_t plane_len; + int is_raw; - uint16_t last_donor; - uint16_t last_remain; - int marker_reported; + int copies; /* Parse headers separately */ struct mitsu9550_hdr1 hdr1; @@ -134,6 +183,21 @@ struct mitsu9550_ctx { int hdr4_present; }; +struct mitsu9550_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + int type; + int is_s; + int is_98xx; + + struct marker marker; + + /* CP98xx stuff */ + struct mitsu98xx_tables *m98xxdata; + struct CColorConv3D *lut; +}; + /* Printer data structures */ struct mitsu9550_media { uint8_t hdr[2]; /* 24 2e */ @@ -164,12 +228,14 @@ struct mitsu9550_status { } __attribute__((packed)); struct mitsu9550_status2 { - uint8_t hdr[2]; /* 21 2e */ - uint8_t unk[39]; + uint8_t hdr[2]; /* 21 2e / 24 2e on 9550/9800 */ + uint8_t unk[40]; uint16_t remain; /* BE, media remaining */ uint8_t unkb[4]; /* 0a 00 00 01 */ } __attribute__((packed)); +static int mitsu9550_main_loop(void *vctx, const void *vjob); + #define CMDBUF_LEN 64 #define READBACK_LEN 128 @@ -178,41 +244,24 @@ struct mitsu9550_status2 { struct mitsu9550_status *sts = (struct mitsu9550_status*) rdbuf;\ /* struct mitsu9550_status2 *sts2 = (struct mitsu9550_status2*) rdbuf; */ \ struct mitsu9550_media *media = (struct mitsu9550_media *) rdbuf; \ - uint16_t donor, remain; \ + uint16_t donor; \ /* media */ \ ret = mitsu9550_get_status(ctx, rdbuf, 0, 0, 1); \ if (ret < 0) \ return CUPS_BACKEND_FAILED; \ \ - /* Tell CUPS about the consumables we report */ \ - if (!ctx->marker_reported) { \ - ctx->marker_reported = 1; \ - ATTR("marker-colors=#00FFFF#FF00FF#FFFF00\n"); \ - ATTR("marker-high-levels=100\n"); \ - ATTR("marker-low-levels=10\n"); \ - ATTR("marker-names='%s'\n", mitsu9550_media_types(media->type, ctx->is_s)); \ - ATTR("marker-types=ribbonWax\n"); \ + donor = be16_to_cpu(media->remain); \ + if (donor != ctx->marker.levelnow) { \ + ctx->marker.levelnow = donor; \ + dump_markers(&ctx->marker, 1, 0); \ } \ - \ /* Sanity-check media response */ \ if (media->remain == 0 || media->max == 0) { \ ERROR("Printer out of media!\n"); \ - ATTR("marker-levels=%d\n", 0); \ return CUPS_BACKEND_HOLD; \ } \ - remain = be16_to_cpu(media->remain); \ - donor = be16_to_cpu(media->max); \ - donor = remain/donor; \ - if (donor != ctx->last_donor) { \ - ctx->last_donor = donor; \ - ATTR("marker-levels=%u\n", donor); \ - } \ - if (remain != ctx->last_remain) { \ - ctx->last_remain = remain; \ - ATTR("marker-message=\"%u prints remaining on '%s' ribbon\"\n", remain, mitsu9550_media_types(media->type, ctx->is_s)); \ - } \ - if (validate_media(ctx->type, media->type, ctx->cols, ctx->rows)) { \ - ERROR("Incorrect media (%u) type for printjob (%ux%u)!\n", media->type, ctx->cols, ctx->rows); \ + if (validate_media(ctx->type, media->type, job->cols, job->rows)) { \ + ERROR("Incorrect media (%u) type for printjob (%ux%u)!\n", media->type, job->cols, job->rows); \ return CUPS_BACKEND_HOLD; \ } \ /* status2 */ \ @@ -236,6 +285,246 @@ struct mitsu9550_status2 { } \ } while (0); +static void mitsu98xx_dogamma(uint8_t *src, uint16_t *dest, uint8_t plane, + uint16_t *table, uint32_t len) +{ + src += plane; + while(len--) { + *dest++ = table[*src]; + src += 3; + } + /* TODO: Eventually, when we do real processing of this data, we will need to + have the gamma table in native endian format and generate BE data at the end. */ +} + +static int mitsu98xx_fillmatte(struct mitsu9550_printjob *job) +{ + int fd, i; + uint32_t j, remain; + + DEBUG("Reading %d bytes of matte data from disk (%d/%d)\n", job->cols * job->rows, job->cols, LAMINATE_STRIDE); + fd = open(MITSU_M98xx_LAMINATE_FILE, O_RDONLY); + if (fd < 0) { + WARNING("Unable to open matte lamination data file '%s'\n", MITSU_M98xx_LAMINATE_FILE); + job->hdr1.matte = 0; + goto done; + } + + /* Fill in the lamination plane header */ + struct mitsu9550_plane *matte = (struct mitsu9550_plane *)(job->databuf + job->datalen); + matte->cmd[0] = 0x1b; + matte->cmd[1] = 0x5a; + matte->cmd[2] = 0x54; + matte->cmd[3] = 0x10; + matte->row_offset = 0; + matte->col_offset = 0; + matte->cols = job->hdr1.cols; + matte->rows = job->hdr1.rows; + job->datalen += sizeof(struct mitsu9550_plane); + + /* Read in the matte data plane */ + for (j = 0 ; j < job->rows ; j++) { + remain = LAMINATE_STRIDE * 2; + + /* Read one row of lamination data at a time */ + while (remain) { + i = read(fd, job->databuf + job->datalen, remain); + if (i < 0) + return CUPS_BACKEND_CANCEL; + if (i == 0) { + /* We hit EOF, restart from beginning */ + lseek(fd, 0, SEEK_SET); + continue; + } + job->datalen += i; + remain -= i; + } + /* Back off the buffer so we "wrap" on the print row. */ + job->datalen -= ((LAMINATE_STRIDE - job->cols) * 2); + } + /* We're done! */ + close(fd); + + /* Fill in the lamination plane footer */ + job->databuf[job->datalen++] = 0x1b; + job->databuf[job->datalen++] = 0x50; + job->databuf[job->datalen++] = 0x56; + job->databuf[job->datalen++] = 0x00; + +done: + return CUPS_BACKEND_OK; +} + +/*** 3D color Lookup table stuff. Taken out of lib70x ****/ +#define LUT_LEN 14739 +#define COLORCONV_RGB 0 +#define COLORCONV_BGR 1 + +struct CColorConv3D { + uint8_t lut[17][17][17][3]; +}; + +/* Load the Lookup table off of disk into *PRE-ALLOCATED* buffer */ +int CColorConv3D_Get3DColorTable(uint8_t *buf, const char *filename) +{ + FILE *stream; + + if (!filename) + return 1; + if (!*filename) + return 2; + if (!buf) + return 3; + + stream = fopen(filename, "rb"); + if (!stream) + return 4; + + fseek(stream, 0, SEEK_END); + if (ftell(stream) < LUT_LEN) { + fclose(stream); + return 5; + } + fseek(stream, 0, SEEK_SET); + fread(buf, 1, LUT_LEN, stream); + fclose(stream); + + return 0; +} + +/* Parse the on-disk LUT data into the structure.... */ +struct CColorConv3D *CColorConv3D_Load3DColorTable(const uint8_t *ptr) +{ + struct CColorConv3D *this; + this = malloc(sizeof(*this)); + if (!this) + return NULL; + + int i, j, k; + + for (i = 0 ; i <= 16 ; i++) { + for (j = 0 ; j <= 16 ; j++) { + for (k = 0; k <= 16; k++) { + this->lut[k][j][i][2] = *ptr++; + this->lut[k][j][i][1] = *ptr++; + this->lut[k][j][i][0] = *ptr++; + } + } + } + return this; +} +void CColorConv3D_Destroy3DColorTable(struct CColorConv3D *this) +{ + free(this); +} + +/* Transform a single pixel. */ +static void CColorConv3D_DoColorConvPixel(struct CColorConv3D *this, uint8_t *redp, uint8_t *grnp, uint8_t *blup) +{ + int red_h; + int grn_h; + int blu_h; + int grn_li; + int red_li; + int blu_li; + int red_l; + int grn_l; + int blu_l; + + uint8_t *tab0; // @ 14743 + uint8_t *tab1; // @ 14746 + uint8_t *tab2; // @ 14749 + uint8_t *tab3; // @ 14752 + uint8_t *tab4; // @ 14755 + uint8_t *tab5; // @ 14758 + uint8_t *tab6; // @ 14761 + uint8_t *tab7; // @ 14764 + + red_h = *redp >> 4; + red_l = *redp & 0xF; + red_li = 16 - red_l; + + grn_h = *grnp >> 4; + grn_l = *grnp & 0xF; + grn_li = 16 - grn_l; + + blu_h = *blup >> 4; + blu_l = *blup & 0xF; + blu_li = 16 - blu_l; + +// printf("%d %d %d =>", *redp, *grnp, *blup); + + tab0 = this->lut[red_h+0][grn_h+0][blu_h+0]; + tab1 = this->lut[red_h+1][grn_h+0][blu_h+0]; + tab2 = this->lut[red_h+0][grn_h+1][blu_h+0]; + tab3 = this->lut[red_h+1][grn_h+1][blu_h+0]; + tab4 = this->lut[red_h+0][grn_h+0][blu_h+1]; + tab5 = this->lut[red_h+1][grn_h+0][blu_h+1]; + tab6 = this->lut[red_h+0][grn_h+1][blu_h+1]; + tab7 = this->lut[red_h+1][grn_h+1][blu_h+1]; + +#if 0 + printf(" %d %d %d ", tab0[0], tab0[1], tab0[2]); + printf(" %d %d %d ", tab1[0], tab1[1], tab1[2]); + printf(" %d %d %d ", tab2[0], tab2[1], tab2[2]); + printf(" %d %d %d ", tab3[0], tab3[1], tab3[2]); + printf(" %d %d %d ", tab4[0], tab4[1], tab4[2]); + printf(" %d %d %d ", tab5[0], tab5[1], tab5[2]); + printf(" %d %d %d ", tab6[0], tab6[1], tab6[2]); + printf(" %d %d %d ", tab7[0], tab7[1], tab7[2]); +#endif + *redp = (blu_li + * (grn_li * (red_li * tab0[0] + red_l * tab1[0]) + + grn_l * (red_li * tab2[0] + red_l * tab3[0])) + + blu_l + * (grn_li * (red_li * tab4[0] + red_l * tab5[0]) + + grn_l * (red_li * tab6[0] + red_l * tab7[0])) + + 2048) >> 12; + *grnp = (blu_li + * (grn_li * (red_li * tab0[1] + red_l * tab1[1]) + + grn_l * (red_li * tab2[1] + red_l * tab3[1])) + + blu_l + * (grn_li * (red_li * tab4[1] + red_l * tab5[1]) + + grn_l * (red_li * tab6[1] + red_l * tab7[1])) + + 2048) >> 12; + *blup = (blu_li + * (grn_li * (red_li * tab0[2] + red_l * tab1[2]) + + grn_l * (red_li * tab2[2] + red_l * tab3[2])) + + blu_l + * (grn_li * (red_li * tab4[2] + red_l * tab5[2]) + + grn_l * (red_li * tab6[2] + red_l * tab7[2])) + + 2048) >> 12; + +// printf("=> %d %d %d\n", *redp, *grnp, *blup); +} + +/* Perform a total conversion on an entire image */ +void CColorConv3D_DoColorConv(struct CColorConv3D *this, uint8_t *data, uint16_t cols, uint16_t rows, uint32_t stride, int rgb_bgr) +{ + uint16_t i, j; + + uint8_t *ptr; + + for ( i = 0; i < rows ; i++ ) + { + ptr = data; + for ( j = 0; cols > j; j++ ) + { + if (rgb_bgr) { + CColorConv3D_DoColorConvPixel(this, ptr + 2, ptr + 1, ptr); + } else { + CColorConv3D_DoColorConvPixel(this, ptr, ptr + 1, ptr + 2); + } + ptr += 3; + } + data += stride; + } +} + +/* ---- end 3D LUT ---- */ +static int mitsu9550_get_status(struct mitsu9550_ctx *ctx, uint8_t *resp, int status, int status2, int media); +static char *mitsu9550_media_types(uint8_t type, uint8_t is_s); + static void *mitsu9550_init(void) { struct mitsu9550_ctx *ctx = malloc(sizeof(struct mitsu9550_ctx)); @@ -248,32 +537,58 @@ static void *mitsu9550_init(void) return ctx; } -static void mitsu9550_attach(void *vctx, struct libusb_device_handle *dev, +static int mitsu9550_attach(void *vctx, struct libusb_device_handle *dev, int type, uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct mitsu9550_ctx *ctx = vctx; - struct libusb_device *device; - struct libusb_device_descriptor desc; + struct mitsu9550_media media; UNUSED(jobid); ctx->dev = dev; ctx->endp_up = endp_up; ctx->endp_down = endp_down; - - device = libusb_get_device(dev); - libusb_get_device_descriptor(device, &desc); - - ctx->type = lookup_printer_type(&mitsu9550_backend, - desc.idVendor, desc.idProduct); + ctx->type = type; if (ctx->type == P_MITSU_9550S || ctx->type == P_MITSU_9800S) ctx->is_s = 1; - ctx->last_donor = ctx->last_remain = 65535; + if (ctx->type == P_MITSU_9800 || + ctx->type == P_MITSU_9800S || + ctx->type == P_MITSU_9810) + ctx->is_98xx = 1; + + if (test_mode < TEST_MODE_NOATTACH) { + if (mitsu9550_get_status(ctx, (uint8_t*) &media, 0, 0, 1)) + return CUPS_BACKEND_FAILED; + } else { + int media_code = 0x2; + if (getenv("MEDIA_CODE")) + media_code = atoi(getenv("MEDIA_CODE")) & 0xf; + + media.max = cpu_to_be16(400); + media.remain = cpu_to_be16(330); + media.type = media_code; + } + + ctx->marker.color = "#00FFFF#FF00FF#FFFF00"; + ctx->marker.name = mitsu9550_media_types(media.type, ctx->is_s); + ctx->marker.levelmax = be16_to_cpu(media.max); + ctx->marker.levelnow = be16_to_cpu(media.remain); + + return CUPS_BACKEND_OK; } +static void mitsu9550_cleanup_job(const void *vjob) +{ + const struct mitsu9550_printjob *job = vjob; + + if (job->databuf) + free(job->databuf); + + free((void*)job); +} static void mitsu9550_teardown(void *vctx) { struct mitsu9550_ctx *ctx = vctx; @@ -281,86 +596,100 @@ static void mitsu9550_teardown(void *vctx) { if (!ctx) return; - if (ctx->databuf) - free(ctx->databuf); + if (ctx->lut) + CColorConv3D_Destroy3DColorTable(ctx->lut); + if (ctx->m98xxdata) + free(ctx->m98xxdata); free(ctx); } -static int mitsu9550_read_parse(void *vctx, int data_fd) { +static int mitsu9550_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { struct mitsu9550_ctx *ctx = vctx; uint8_t buf[sizeof(struct mitsu9550_hdr1)]; int remain, i; uint32_t planelen = 0; + struct mitsu9550_printjob *job = NULL; + if (!ctx) return CUPS_BACKEND_FAILED; - if (ctx->databuf) { - free(ctx->databuf); - ctx->databuf = NULL; + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; } - - ctx->hdr1_present = 0; - ctx->hdr2_present = 0; - ctx->hdr3_present = 0; - ctx->hdr4_present = 0; + memset(job, 0, sizeof(*job)); + job->is_raw = 1; top: /* Read in initial header */ remain = sizeof(buf); while (remain > 0) { i = read(data_fd, buf + sizeof(buf) - remain, remain); - if (i == 0) + if (i == 0) { + mitsu9550_cleanup_job(job); return CUPS_BACKEND_CANCEL; - if (i < 0) + } + if (i < 0) { + mitsu9550_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } remain -= i; } /* Sanity check */ if (buf[0] != 0x1b || buf[1] != 0x57 || buf[3] != 0x2e) { - if (!ctx->hdr1_present || !ctx->hdr2_present) { - ERROR("Unrecognized data format!\n"); + if (!job->hdr1_present || !job->hdr2_present) { + ERROR("Unrecognized data format (%02x%02x%02x%02x)!\n", + buf[0], buf[1], buf[2], buf[3]); + mitsu9550_cleanup_job(job); return CUPS_BACKEND_CANCEL; - } else if (buf[0] == 0x1b && buf[1] == 0x5a && + } else if (buf[0] == 0x1b && + buf[1] == 0x5a && buf[2] == 0x54) { /* We're in the data portion now */ if (buf[3] == 0x10) planelen *= 2; + else if (ctx->is_98xx && buf[3] == 0x80) + job->is_raw = 0; goto hdr_done; } else { - ERROR("Unrecognized data block!\n"); + ERROR("Unrecognized data block (%02x%02x%02x%02x)!\n", + buf[0], buf[1], buf[2], buf[3]); + mitsu9550_cleanup_job(job); return CUPS_BACKEND_CANCEL; } } switch(buf[2]) { case 0x20: /* header 1 */ - memcpy(&ctx->hdr1, buf, sizeof(ctx->hdr1)); - ctx->hdr1_present = 1; + memcpy(&job->hdr1, buf, sizeof(job->hdr1)); + job->hdr1_present = 1; /* Work out printjob size */ - ctx->rows = be16_to_cpu(ctx->hdr1.rows); - ctx->cols = be16_to_cpu(ctx->hdr1.cols); - planelen = ctx->rows * ctx->cols; + job->rows = be16_to_cpu(job->hdr1.rows); + job->cols = be16_to_cpu(job->hdr1.cols); + planelen = job->rows * job->cols; break; case 0x21: /* header 2 */ - memcpy(&ctx->hdr2, buf, sizeof(ctx->hdr2)); - ctx->hdr2_present = 1; + memcpy(&job->hdr2, buf, sizeof(job->hdr2)); + job->hdr2_present = 1; break; case 0x22: /* header 3 */ - memcpy(&ctx->hdr3, buf, sizeof(ctx->hdr3)); - ctx->hdr3_present = 1; + memcpy(&job->hdr3, buf, sizeof(job->hdr3)); + job->hdr3_present = 1; break; case 0x26: /* header 4 */ - memcpy(&ctx->hdr4, buf, sizeof(ctx->hdr4)); - ctx->hdr4_present = 1; + memcpy(&job->hdr4, buf, sizeof(job->hdr4)); + job->hdr4_present = 1; break; default: ERROR("Unrecognized header format (%02x)!\n", buf[2]); + mitsu9550_cleanup_job(job); return CUPS_BACKEND_CANCEL; } @@ -369,34 +698,74 @@ top: hdr_done: - /* We have three planes and the final terminator to read */ - remain = 3 * (planelen + sizeof(struct mitsu9550_plane)) + sizeof(struct mitsu9550_cmd); + /* Read in CP98xx data tables if necessary */ + if (ctx->is_98xx && !job->is_raw && !ctx->m98xxdata) { + int fd; + + DEBUG("Reading in 98xx data from disk\n"); + fd = open(MITSU_M98xx_DATATABLE_FILE, O_RDONLY); + if (fd < 0) { + ERROR("Unable to open 98xx data table file '%s'\n", MITSU_M98xx_DATATABLE_FILE); + mitsu9550_cleanup_job(job); + return CUPS_BACKEND_FAILED; + } + ctx->m98xxdata = malloc(DATATABLE_SIZE); + if (!ctx->m98xxdata) { + ERROR("Memory allocation Failure!\n"); + mitsu9550_cleanup_job(job); + return CUPS_BACKEND_RETRY_CURRENT; + } + remain = DATATABLE_SIZE; + while (remain) { + i = read(fd, ((uint8_t*)ctx->m98xxdata) + (DATATABLE_SIZE - remain), remain); + if (i < 0) { + mitsu9550_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + remain -= i; + } + close(fd); + } + + if (job->is_raw) { + /* We have three planes + headers and the final terminator to read */ + remain = 3 * (planelen + sizeof(struct mitsu9550_plane)) + sizeof(struct mitsu9550_cmd); + } else { + /* We have one plane + header and the final terminator to read */ + remain = planelen * 3 + sizeof(struct mitsu9550_plane) + sizeof(struct mitsu9550_cmd); + } /* Mitsu9600 windows spool uses more, smaller blocks, but plane data is the same */ if (ctx->type == P_MITSU_9600) { remain += 128 * sizeof(struct mitsu9550_plane); /* 39 extra seen on 4x6" */ } - /* Don't forget the matte plane! */ - if (ctx->hdr1.matte) { - remain += planelen + sizeof(struct mitsu9550_plane) + sizeof(struct mitsu9550_cmd); - } - /* 9550S/9800S doesn't typically sent over hdr4! */ if (ctx->type == P_MITSU_9550S || ctx->type == P_MITSU_9800S) { /* XXX Has to do with error policy, but not sure what. Mitsu9550-S/9800-S will set this based on a command, but it's not part of the standard job spool */ - ctx->hdr4_present = 0; + job->hdr4_present = 0; + } + + /* Disable matte if the printer doesn't support it */ + if (job->hdr1.matte) { + if (ctx->type != P_MITSU_9810) { + WARNING("Matte not supported on this printer, disabling\n"); + job->hdr1.matte = 0; + } else if (job->is_raw) { + remain += planelen + sizeof(struct mitsu9550_plane) + sizeof(struct mitsu9550_cmd); + } } /* Allocate buffer for the payload */ - ctx->datalen = 0; - ctx->databuf = malloc(remain); - if (!ctx->databuf) { + job->datalen = 0; + job->databuf = malloc(remain); + if (!job->databuf) { ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_FAILED; + mitsu9550_cleanup_job(job); + return CUPS_BACKEND_RETRY_CURRENT; } /* Load up the data blocks.*/ @@ -408,7 +777,9 @@ hdr_done: if (plane->cmd[0] != 0x1b || plane->cmd[1] != 0x5a || plane->cmd[2] != 0x54) { - ERROR("Unexpected data read, aborting job\n"); + ERROR("Unrecognized data read (%02x%02x%02x%02x)!\n", + plane->cmd[0], plane->cmd[1], plane->cmd[2], plane->cmd[3]); + mitsu9550_cleanup_job(job); return CUPS_BACKEND_CANCEL; } @@ -416,20 +787,26 @@ hdr_done: planelen = be16_to_cpu(plane->rows) * be16_to_cpu(plane->cols); if (plane->cmd[3] == 0x10) planelen *= 2; + if (plane->cmd[3] == 0x80) + planelen *= 3; /* Copy plane header into buffer */ - memcpy(ctx->databuf + ctx->datalen, buf, sizeof(buf)); - ctx->datalen += sizeof(buf); + memcpy(job->databuf + job->datalen, buf, sizeof(buf)); + job->datalen += sizeof(buf); planelen -= sizeof(buf) - sizeof(struct mitsu9550_plane); /* Read in the spool data */ while(planelen > 0) { - i = read(data_fd, ctx->databuf + ctx->datalen, planelen); - if (i == 0) + i = read(data_fd, job->databuf + job->datalen, planelen); + if (i == 0) { + mitsu9550_cleanup_job(job); return CUPS_BACKEND_CANCEL; - if (i < 0) + } + if (i < 0) { + mitsu9550_cleanup_job(job); return CUPS_BACKEND_CANCEL; - ctx->datalen += i; + } + job->datalen += i; planelen -= i; } @@ -438,44 +815,87 @@ hdr_done: - Job footer (4B) */ i = read(data_fd, buf, 4); - if (i == 0) + if (i == 0) { + mitsu9550_cleanup_job(job); return CUPS_BACKEND_CANCEL; - if (i < 0) + } + if (i < 0) { + mitsu9550_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } /* Is this a "job end" marker? */ - if (plane->cmd[0] != 0x1b || - plane->cmd[1] != 0x5a || - plane->cmd[2] != 0x54) { + if (plane->cmd[0] == 0x1b && + plane->cmd[1] == 0x50 && + plane->cmd[3] == 0x00) { /* store it in the buffer */ - memcpy(ctx->databuf + ctx->datalen, buf, 4); - ctx->datalen += 4; + memcpy(job->databuf + job->datalen, buf, 4); + job->datalen += 4; /* Unless we have a matte plane following, we're done */ - if (!ctx->hdr1.matte) + if (job->hdr1.matte != 0x01) break; - planelen = sizeof(buf); + remain = sizeof(buf); } else { /* It's part of a block header, mark what we've read */ - planelen = sizeof(buf) - 4; + remain = sizeof(buf) - 4; } /* Read in the rest of the header */ - while (planelen > 0) { - i = read(data_fd, buf + sizeof(buf) - planelen, planelen); - if (i == 0) + while (remain > 0) { + i = read(data_fd, buf + sizeof(buf) - remain, remain); + if (i == 0) { + mitsu9550_cleanup_job(job); return CUPS_BACKEND_CANCEL; - if (i < 0) + } + if (i < 0) { + mitsu9550_cleanup_job(job); return CUPS_BACKEND_CANCEL; - planelen -= i; + } + remain -= i; } } - /* Disable matte if the printer doesn't support it */ - if (ctx->hdr1.matte && ctx->type != P_MITSU_9810) { - WARNING("Matte not supported on this printer, disabling\n"); - ctx->hdr1.matte = 0; + /* Apply LUT */ + if (ctx->is_98xx && !job->is_raw && job->hdr2.unkc[9]) { + DEBUG("Applying 3D LUT\n"); + if (!ctx->lut) { + uint8_t *buf = malloc(LUT_LEN); + if (!buf) { + ERROR("Memory allocation failure!\n"); + mitsu9550_cleanup_job(job); + return CUPS_BACKEND_RETRY_CURRENT; + } + if (CColorConv3D_Get3DColorTable(buf, MITSU_M98xx_LUT_FILE)) { + ERROR("Unable to open LUT file '%s'\n", MITSU_M98xx_LUT_FILE); + mitsu9550_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + ctx->lut = CColorConv3D_Load3DColorTable(buf); + free(buf); + if (!ctx->lut) { + ERROR("Unable to parse LUT\n"); + mitsu9550_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + } + CColorConv3D_DoColorConv(ctx->lut, job->databuf + sizeof(struct mitsu9550_plane), + job->cols, job->rows, job->cols * 3, COLORCONV_BGR); + job->hdr2.unkc[9] = 0; + } + + /* Update printjob header to reflect number of requested copies */ + if (job->hdr2_present) { + copies = 1; + job->hdr2.copies = cpu_to_be16(copies); } + job->copies = copies; + + /* All further work is in main loop */ + if (test_mode >= TEST_MODE_NOPRINT) + mitsu9550_main_loop(ctx, job); + + *vjob = job; return CUPS_BACKEND_OK; } @@ -740,22 +1160,120 @@ static int validate_media(int type, int media, int cols, int rows) return 0; } -static int mitsu9550_main_loop(void *vctx, int copies) { +static int mitsu9550_main_loop(void *vctx, const void *vjob) { struct mitsu9550_ctx *ctx = vctx; struct mitsu9550_cmd cmd; uint8_t rdbuf[READBACK_LEN]; uint8_t *ptr; int ret; +#if 0 + int copies; +#endif + +// const struct mitsu9550_printjob *job = vjob; + struct mitsu9550_printjob *job = (struct mitsu9550_printjob*) vjob; // XXX not good. if (!ctx) return CUPS_BACKEND_FAILED; - - /* Update printjob header to reflect number of requested copies */ - ctx->hdr2.copies = cpu_to_be16(copies); + if (!job) + return CUPS_BACKEND_FAILED; /* Okay, let's do this thing */ - ptr = ctx->databuf; + ptr = job->databuf; + +#if 0 + /* If hdr2 is not present, we have to generate copies ourselves! */ + if (job->hdr2_present) + copies = job->copies; + // XXX.. +#endif + + /* Do the 98xx processing here */ + if (!ctx->is_98xx || job->is_raw) + goto bypass; + + uint8_t *newbuf; + uint32_t newlen = 0; + struct mitsu98xx_data *table; + int i, remain, planelen; + + planelen = job->rows * job->cols * 2; + remain = (job->hdr1.matte ? 3 : 4) * (planelen + sizeof(struct mitsu9550_plane)) + sizeof(struct mitsu9550_cmd); + newbuf = malloc(remain); + if (!newbuf) { + ERROR("Memory allocation Failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; + } + switch (job->hdr2.mode) { + case 0x80: + table = &ctx->m98xxdata->superfine; + break; + case 0x11: + table = &ctx->m98xxdata->fine_hg; + job->hdr2.mode = 0x10; + break; + case 0x10: + default: + table = &ctx->m98xxdata->fine_std; + break; + } + + DEBUG("Applying 8bpp->12bpp Gamma Correction\n"); + /* For B/Y plane */ + memcpy(newbuf + newlen, job->databuf, sizeof(struct mitsu9550_plane)); + newbuf[newlen + 3] = 0x10; /* ie 16bpp data */ + newlen += sizeof(struct mitsu9550_plane); + mitsu98xx_dogamma(job->databuf + sizeof(struct mitsu9550_plane), + (uint16_t*) (newbuf + newlen), + 0, + table->GNMby, + planelen / 2); + newlen += planelen; + + /* For G/M plane */ + memcpy(newbuf + newlen, job->databuf, sizeof(struct mitsu9550_plane)); + newbuf[newlen + 3] = 0x10; /* ie 16bpp data */ + newlen += sizeof(struct mitsu9550_plane); + mitsu98xx_dogamma(job->databuf + sizeof(struct mitsu9550_plane), + (uint16_t*) (newbuf + newlen), + 1, + table->GNMgm, + planelen / 2); + newlen += planelen; + + /* For R/C plane */ + memcpy(newbuf + newlen, job->databuf, sizeof(struct mitsu9550_plane)); + newbuf[newlen + 3] = 0x10; /* ie 16bpp data */ + newlen += sizeof(struct mitsu9550_plane); + mitsu98xx_dogamma(job->databuf + sizeof(struct mitsu9550_plane), + (uint16_t*) (newbuf + newlen), + 2, + table->GNMrc, + planelen / 2); + newlen += planelen; + + /* And finally, the job footer. */ + memcpy(newbuf + newlen, job->databuf + sizeof(struct mitsu9550_plane) + planelen * 3, sizeof(struct mitsu9550_cmd)); + newlen += sizeof(struct mitsu9550_cmd); + + /* Clean up, and move pointer to new buffer; */ + free(job->databuf); + job->databuf = newbuf; + job->datalen = newlen; + ptr = job->databuf; + + /* Now handle the matte plane generation */ + if (job->hdr1.matte) { + if ((i = mitsu98xx_fillmatte(job))) { + return i; + } + } + +bypass: + /* Bypass */ + if (test_mode >= TEST_MODE_NOPRINT) + return CUPS_BACKEND_OK; top: if (ctx->is_s) { @@ -809,38 +1327,28 @@ top: /* Now it's time for the actual print job! */ - if (ctx->is_s) { - cmd.cmd[0] = 0x1b; - cmd.cmd[1] = 0x44; - cmd.cmd[2] = 0; - cmd.cmd[3] = 0; - if ((ret = send_data(ctx->dev, ctx->endp_down, - (uint8_t*) &cmd, 4))) - return CUPS_BACKEND_FAILED; - } - QUERY_STATUS(); /* Send printjob headers from spool data */ - if (ctx->hdr1_present) + if (job->hdr1_present) if ((ret = send_data(ctx->dev, ctx->endp_down, - (uint8_t*) &ctx->hdr1, sizeof(ctx->hdr1)))) + (uint8_t*) &job->hdr1, sizeof(job->hdr1)))) return CUPS_BACKEND_FAILED; - if (ctx->hdr2_present) + if (job->hdr2_present) if ((ret = send_data(ctx->dev, ctx->endp_down, - (uint8_t*) &ctx->hdr2, sizeof(ctx->hdr2)))) + (uint8_t*) &job->hdr2, sizeof(job->hdr2)))) return CUPS_BACKEND_FAILED; - if (ctx->hdr3_present) + if (job->hdr3_present) if ((ret = send_data(ctx->dev, ctx->endp_down, - (uint8_t*) &ctx->hdr3, sizeof(ctx->hdr3)))) + (uint8_t*) &job->hdr3, sizeof(job->hdr3)))) return CUPS_BACKEND_FAILED; - if (ctx->hdr4_present) + if (job->hdr4_present) if ((ret = send_data(ctx->dev, ctx->endp_down, - (uint8_t*) &ctx->hdr4, sizeof(struct mitsu9550_hdr4)))) + (uint8_t*) &job->hdr4, sizeof(struct mitsu9550_hdr4)))) return CUPS_BACKEND_FAILED; if (ctx->is_s) { - /* Send "start data" command */ + /* I think this a "clear memory' command...? */ cmd.cmd[0] = 0x1b; cmd.cmd[1] = 0x5a; cmd.cmd[2] = 0x43; @@ -852,13 +1360,15 @@ top: } /* Send over plane data */ - while(1) { + while(ptr < (job->databuf + job->datalen)) { struct mitsu9550_plane *plane = (struct mitsu9550_plane *)ptr; - uint32_t planelen = be16_to_cpu(plane->rows) * be16_to_cpu(plane->cols); + uint32_t planelen; if (plane->cmd[0] != 0x1b || plane->cmd[1] != 0x5a || plane->cmd[2] != 0x54) break; + + planelen = be16_to_cpu(plane->rows) * be16_to_cpu(plane->cols); if (plane->cmd[3] == 0x10) planelen *= 2; @@ -877,29 +1387,22 @@ top: struct mitsu9550_status *sts = (struct mitsu9550_status*) rdbuf; // struct mitsu9550_status2 *sts2 = (struct mitsu9550_status2*) rdbuf; struct mitsu9550_media *media = (struct mitsu9550_media *) rdbuf; - uint16_t donor, remain; + uint16_t donor; ret = mitsu9550_get_status(ctx, rdbuf, 0, 0, 1); // media if (ret < 0) return CUPS_BACKEND_FAILED; + donor = be16_to_cpu(media->remain); + if (donor != ctx->marker.levelnow) { + ctx->marker.levelnow = donor; + dump_markers(&ctx->marker, 1, 0); + } /* Sanity-check media response */ if (media->remain == 0 || media->max == 0) { ERROR("Printer out of media!\n"); - ATTR("marker-levels=%d\n", 0); return CUPS_BACKEND_HOLD; } - remain = be16_to_cpu(media->remain); - donor = be16_to_cpu(media->max); - donor = remain/donor; - if (donor != ctx->last_donor) { - ctx->last_donor = donor; - ATTR("marker-levels=%u\n", donor); - } - if (remain != ctx->last_remain) { - ctx->last_remain = remain; - ATTR("marker-message=\"%u prints remaining on '%s' ribbon\"\n", remain, mitsu9550_media_types(media->type, ctx->is_s)); - } ret = mitsu9550_get_status(ctx, rdbuf, 0, 1, 0); // status2 if (ret < 0) return CUPS_BACKEND_FAILED; @@ -952,7 +1455,7 @@ top: } /* Don't forget the 9810's matte plane */ - if (ctx->hdr1.matte) { + if (job->hdr1.matte) { struct mitsu9550_plane *plane = (struct mitsu9550_plane *)ptr; uint32_t planelen = be16_to_cpu(plane->rows) * be16_to_cpu(plane->cols); @@ -973,7 +1476,7 @@ top: if ((ret = send_data(ctx->dev, ctx->endp_down, ptr, sizeof(cmd)))) return CUPS_BACKEND_FAILED; - ptr += sizeof(cmd); +// ptr += sizeof(cmd); } /* Status loop, run until printer reports completion */ @@ -981,29 +1484,22 @@ top: struct mitsu9550_status *sts = (struct mitsu9550_status*) rdbuf; // struct mitsu9550_status2 *sts2 = (struct mitsu9550_status2*) rdbuf; struct mitsu9550_media *media = (struct mitsu9550_media *) rdbuf; - uint16_t donor, remain; + uint16_t donor; ret = mitsu9550_get_status(ctx, rdbuf, 0, 0, 1); // media if (ret < 0) return CUPS_BACKEND_FAILED; + donor = be16_to_cpu(media->remain); + if (donor != ctx->marker.levelnow) { + ctx->marker.levelnow = donor; + dump_markers(&ctx->marker, 1, 0); + } /* Sanity-check media response */ if (media->remain == 0 || media->max == 0) { ERROR("Printer out of media!\n"); - ATTR("marker-levels=%d\n", 0); return CUPS_BACKEND_HOLD; } - remain = be16_to_cpu(media->remain); - donor = be16_to_cpu(media->max); - donor = remain/donor; - if (donor != ctx->last_donor) { - ctx->last_donor = donor; - ATTR("marker-levels=%u\n", donor); - } - if (remain != ctx->last_remain) { - ctx->last_remain = remain; - ATTR("marker-message=\"%u prints remaining on '%s' ribbon\"\n", remain, mitsu9550_media_types(media->type, ctx->is_s)); - } ret = mitsu9550_get_status(ctx, rdbuf, 0, 1, 0); // status2 if (ret < 0) return CUPS_BACKEND_FAILED; @@ -1156,10 +1652,21 @@ static int mitsu9550_query_serno(struct libusb_device_handle *dev, uint8_t endp_ return ret; } +static int mitsu9550_cancel_job(struct mitsu9550_ctx *ctx) +{ + int ret; + + uint8_t buf[2] = { 0x1b, 0x44 }; + ret = send_data(ctx->dev, ctx->endp_down, buf, sizeof(buf)); + + return ret; +} + static void mitsu9550_cmdline(void) { DEBUG("\t\t[ -m ] # Query media\n"); DEBUG("\t\t[ -s ] # Query status\n"); + DEBUG("\t\t[ -X ] # Cancel current job\n"); } static int mitsu9550_cmdline_arg(void *vctx, int argc, char **argv) @@ -1170,7 +1677,7 @@ static int mitsu9550_cmdline_arg(void *vctx, int argc, char **argv) if (!ctx) return -1; - while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "ms")) >= 0) { + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "msX")) >= 0) { switch(i) { GETOPT_PROCESS_GLOBAL case 'm': @@ -1181,6 +1688,9 @@ static int mitsu9550_cmdline_arg(void *vctx, int argc, char **argv) if (!j) j = mitsu9550_query_status2(ctx); break; + case 'X': + j = mitsu9550_cancel_job(ctx); + break; default: break; /* Ignore completely */ } @@ -1191,37 +1701,70 @@ static int mitsu9550_cmdline_arg(void *vctx, int argc, char **argv) return 0; } +static int mitsu9550_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct mitsu9550_ctx *ctx = vctx; + struct mitsu9550_media media; + + /* Query printer status */ + if (mitsu9550_get_status(ctx, (uint8_t*) &media, 0, 0, 1)) + return CUPS_BACKEND_FAILED; + + ctx->marker.levelnow = be16_to_cpu(media.remain); + + *markers = &ctx->marker; + *count = 1; + + return CUPS_BACKEND_OK; +} + +static const char *mitsu9550_prefixes[] = { + "mitsu9xxx", // Family driver, do not nuke. + "mitsubishi-9000dw", "mitsubishi-9500dw", + "mitsubishi-9550dw", "mitsubishi-9550dw-s", + "mitsubishi-9600dw", // "mitsubishi-9600dw-s", + "mitsubishi-9800dw", "mitsubishi-9800dw-s", + "mitsubishi-9810dw", + // extras + "mitsubishi-9550d", "mitsubishi-9550dz", "mitsubishi-9800d", "mitsubishi-9800dz", "mitsubishi-9810d", + // Backwards compatibility + "mitsu9000", "mitsu9500", "mitsu9550", "mitsu9600", "mitsu9800", "mitsu9810", + NULL +}; + /* Exported */ struct dyesub_backend mitsu9550_backend = { - .name = "Mitsubishi CP-9550 family", - .version = "0.29", - .uri_prefix = "mitsu9550", + .name = "Mitsubishi CP9xxx family", + .version = "0.41", + .uri_prefixes = mitsu9550_prefixes, .cmdline_usage = mitsu9550_cmdline, .cmdline_arg = mitsu9550_cmdline_arg, .init = mitsu9550_init, .attach = mitsu9550_attach, .teardown = mitsu9550_teardown, + .cleanup_job = mitsu9550_cleanup_job, .read_parse = mitsu9550_read_parse, .main_loop = mitsu9550_main_loop, .query_serno = mitsu9550_query_serno, + .query_markers = mitsu9550_query_markers, .devices = { - { USB_VID_MITSU, USB_PID_MITSU_9000AM, P_MITSU_9550, ""}, - { USB_VID_MITSU, USB_PID_MITSU_9000D, P_MITSU_9550, ""}, - { USB_VID_MITSU, USB_PID_MITSU_9500D, P_MITSU_9550, ""}, - { USB_VID_MITSU, USB_PID_MITSU_9550D, P_MITSU_9550, ""}, - { USB_VID_MITSU, USB_PID_MITSU_9550DS, P_MITSU_9550S, ""}, - { USB_VID_MITSU, USB_PID_MITSU_9600D, P_MITSU_9600, ""}, -// { USB_VID_MITSU, USB_PID_MITSU_9600D, P_MITSU_9600S, ""}, - { USB_VID_MITSU, USB_PID_MITSU_9800D, P_MITSU_9800, ""}, - { USB_VID_MITSU, USB_PID_MITSU_9800DS, P_MITSU_9800S, ""}, - { USB_VID_MITSU, USB_PID_MITSU_98__D, P_MITSU_9810, ""}, -// { USB_VID_MITSU, USB_PID_MITSU_9810D, P_MITSU_9810, ""}, -// { USB_VID_MITSU, USB_PID_MITSU_9820DS, P_MITSU_9820S, ""}, - { 0, 0, 0, ""} + { USB_VID_MITSU, USB_PID_MITSU_9000AM, P_MITSU_9550, NULL, "mitsubishi-9000dw"}, // XXX -am instead? + { USB_VID_MITSU, USB_PID_MITSU_9000D, P_MITSU_9550, NULL, "mitsubishi-9000dw"}, + { USB_VID_MITSU, USB_PID_MITSU_9500D, P_MITSU_9550, NULL, "mitsubishi-9500dw"}, + { USB_VID_MITSU, USB_PID_MITSU_9550D, P_MITSU_9550, NULL, "mitsubishi-9550dw"}, + { USB_VID_MITSU, USB_PID_MITSU_9550DS, P_MITSU_9550S, NULL, "mitsubishi-9550dw-s"}, + { USB_VID_MITSU, USB_PID_MITSU_9600D, P_MITSU_9600, NULL, "mitsubishi-9600dw"}, +// { USB_VID_MITSU, USB_PID_MITSU_9600D, P_MITSU_9600S, NULL, "mitsubishi-9600dw-s"}, + { USB_VID_MITSU, USB_PID_MITSU_9800D, P_MITSU_9800, NULL, "mitsubishi-9800dw"}, + { USB_VID_MITSU, USB_PID_MITSU_9800DS, P_MITSU_9800S, NULL, "mitsubishi-9800dw-s"}, + { USB_VID_MITSU, USB_PID_MITSU_98__D, P_MITSU_9810, NULL, "mitsubishi-9810dw"}, +// { USB_VID_MITSU, USB_PID_MITSU_9810D, P_MITSU_9810, NULL, "mitsubishi-9810dw"}, +// { USB_VID_MITSU, USB_PID_MITSU_9820DS, P_MITSU_9820S, NULL, "mitsubishi-9820dw-s"}, + { 0, 0, 0, NULL, NULL} } }; -/* Mitsubish CP-9550/9600/9800/9810 spool format: +/* Mitsubish CP-9500/9550/9600/9800/9810/9820 spool format: Spool file consists of 3 (or 4) 50-byte headers, followed by three image planes, each with a 12-byte header, then a 4-byte footer. @@ -1240,12 +1783,13 @@ struct dyesub_backend mitsu9550_backend = { 1b 57 21 2e 00 80 00 22 QQ QQ 00 00 00 00 00 00 :: ZZ ZZ = num copies (>= 0x01) 00 00 00 00 00 00 00 00 00 00 00 00 ZZ ZZ 00 00 :: YY = 00/80 Fine/SuperFine (9550), 10/80 Fine/Superfine (98x0), 00 (9600) XX 00 00 00 00 00 YY 00 00 00 00 00 00 00 00 00 :: XX = 00 normal, 83 Cut 2x6 (9550 only!) - 00 01 :: QQ QQ = 0x0803 on 9550, 0x0801 on 98x0, 0x0003 on 9600 + RR 01 :: QQ QQ = 0x0803 on 9550, 0x0801 on 98x0, 0x0003 on 9600, 0xa803 on 9500 + :: RR = 01 for "use LUT" on 98xx, 0x00 otherwise. Extension to stock. ~~~ Header 3 (9550 and 9800-S only..) - 1b 57 22 2e 00 40 00 00 00 00 00 XX 00 00 00 00 :: XX = 00 normal, 01 FineDeep - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 1b 57 22 2e 00 QQ 00 00 00 00 00 XX 00 00 00 00 :: XX = 00 normal, 01 FineDeep + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :: QQ = 0xf0 on 9500, 0x40 on the rest 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -1253,18 +1797,18 @@ struct dyesub_backend mitsu9550_backend = { 1b 57 26 2e 00 QQ 00 00 00 00 00 SS RR 01 00 00 :: QQ = 0x70 on 9550/98x0, 0x60 on 9600 or 9800S 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :: RR = 0x01 on 9550/98x0, 0x00 on 9600 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :: SS = 0x01 on 9800S + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :: SS = 0x01 on 9800S, 0x00 otherwise. 00 00 ~~~~ Data follows: - Format is: planar YMC16 for 98x0 (only 12 bits used) - planar BGR for 9550DW - planar RGB for 9550DW-S and 9600DW + Format is: planar YMC16 for 98x0 (but only 12 bits used, BIG endian) + planar RGB for all others - 1b 5a 54 ?? RR RR 00 00 07 14 04 d8 :: 0714 == columns, 04d8 == rows - :: RRRR == row offset for data + 1b 5a 54 ?? RR RR CC CC 07 14 04 d8 :: 0714 == columns, 04d8 == rows + :: RRRR == row offset for data, CCCC == col offset for data :: ?? == 0x00 for 8bpp, 0x10 for 16/12bpp. + :: 0x80 for PACKED BGR! Data follows immediately, no padding. @@ -1278,12 +1822,15 @@ struct dyesub_backend mitsu9550_backend = { ~~~~ Footer: + 1b 50 57 00 (9500) 1b 50 46 00 (9550) 1b 50 47 00 (9550-S) 1b 50 48 00 (9600) - 1b 50 4c 00 (98x0) + 1b 50 4c 00 (9800/9810) 1b 50 4e 00 (9800-S) + Unknown: 9600-S, 9820-S + ~~~~ Lamination data follows (on 9810 only, if matte selected) 1b 5a 54 10 00 00 00 00 06 24 04 34 @@ -1306,7 +1853,7 @@ struct dyesub_backend mitsu9550_backend = { -> 1b 53 c5 9d - [[ Unknown ]] + [[ Unknown, query some parameter? ]] -> 1b 4b 7f 00 <- eb 4b 8f 00 02 00 5e [[ '02' seems to be a length ]] @@ -1331,7 +1878,7 @@ struct dyesub_backend mitsu9550_backend = { 00 00 00 00 00 00 00 00 00 00 00 00 MM MM 00 00 :: MM MM = Max prints NN NN 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :: NN NN = Remaining - [[ unknown, 9800-only ]] + [[ unknown query, 9800-only ]] -> 1b 4b 01 00 <- e4 4b 01 00 02 00 78 @@ -1350,7 +1897,7 @@ struct dyesub_backend mitsu9550_backend = { 00 00 00 00 00 00 00 00 00 00 00 QQ 00 00 00 00 :: QQ == Prints in job? 00 00 00 00 00 00 00 00 00 00 NN NN 0A 00 00 01 :: NN NN = Remaining media - [[ Unknown ]] + [[ Job Cancel ]] -> 1b 44 @@ -1388,7 +1935,7 @@ struct dyesub_backend mitsu9550_backend = { Followed by image plane #3 (Red), XXXX * YYYY bytes - [[ Unknown -- End Data aka START print? ]] + [[ Footer -- End Data aka START print? See above for other models ]] -> 1b 50 47 00 [9550S] -> 1b 50 4e 00 [9800S] diff --git a/src/cups/backend_mitsud90.c b/src/cups/backend_mitsud90.c new file mode 100644 index 0000000..9655e55 --- /dev/null +++ b/src/cups/backend_mitsud90.c @@ -0,0 +1,1456 @@ +/* + * Mitsubishi CP-D90DW Photo Printer CUPS backend + * + * (c) 2018 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, see <https://www.gnu.org/licenses/>. + * + * [http://www.gnu.org/licenses/gpl-2.0.html] + * + * SPDX-License-Identifier: GPL-2.0+ + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <signal.h> + +#define BACKEND mitsud90_backend + +#include "backend_common.h" + +#define USB_VID_MITSU 0x06D3 +#define USB_PID_MITSU_D90 0x3B60 + +const char *mitsu70x_media_types(uint8_t brand, uint8_t type); +const char *mitsu70x_temperatures(uint8_t temp); + +/* Printer data structures */ +#define D90_STATUS_TYPE_MODEL 0x01 // 10, null-terminated ASCII. 'CPD90D' +#define D90_STATUS_TYPE_x02 0x02 // 1, 0x5f ? +#define D90_STATUS_TYPE_FW_0b 0x0b // 8, 34 31 34 42 31 31 a7 de (414D11) +#define D90_STATUS_TYPE_FW_MA 0x0c // 8, 34 31 35 41 38 31 86 bf (415A81) // MAIN FW +#define D90_STATUS_TYPE_FW_F 0x0d // 8, 34 31 36 41 35 31 dc 8a (416A51) // FPGA FW +#define D90_STATUS_TYPE_FW_T 0x0e // 8, 34 31 37 45 31 31 e7 e6 (417E11) // TABLE FW +#define D90_STATUS_TYPE_FW_0f 0x0f // 8, 34 31 38 41 31 32 6c 64 (418A12) +#define D90_STATUS_TYPE_FW_11 0x11 // 8, 34 32 31 51 31 31 74 f2 (421Q11) +#define D90_STATUS_TYPE_FW_ME 0x13 // 8, 34 31 39 45 31 31 15 bf (419E11) // MECHA FW + +#define D90_STATUS_TYPE_ERROR 0x16 // 11 (see below) +#define D90_STATUS_TYPE_MECHA 0x17 // 2 (see below) +#define D90_STATUS_TYPE_x1e 0x1e // 1, power state or time? (x00) +#define D90_STATUS_TYPE_TEMP 0x1f // 1 (see below) +#define D90_STATUS_TYPE_x22 0x22 // 2, all 0 +#define D90_STATUS_TYPE_x28 0x28 // 2, all 0, seen some sort of counter? +#define D90_STATUS_TYPE_x29 0x29 // 8, e0 07 00 00 21 e6 b3 22 +#define D90_STATUS_TYPE_MEDIA 0x2a // 10 (see below) +#define D90_STATUS_TYPE_x2b 0x2b // 2, all 0 +#define D90_STATUS_TYPE_x2c 0x2c // 2, 00 56 +#define D90_STATUS_TYPE_x65 0x65 // 50, ac 80 00 01 bb b8 fe 48 05 13 5d 9c 00 33 00 00 00 00 00 00 00 00 00 00 00 00 02 39 00 00 00 00 03 13 00 02 10 40 00 00 00 00 00 00 05 80 00 3a 00 00 +#define D90_STATUS_TYPE_x82 0x82 // 1, 80 (iserial disabled?) +#define D90_STATUS_TYPE_x83 0x83 // 1, 00 +#define D90_STATUS_TYPE_x84 0x84 // 1, 00 + +//#define D90_STATUS_TYPE_x85 0x85 // 2, 00 ?? BE, wait time? + // combined total of 5. + +struct mitsud90_fw_resp_single { + uint8_t version[6]; + uint16_t csum; +} __attribute__((packed)); + +struct mitsud90_media_resp { + uint8_t hdr[4]; /* e4 47 44 30 */ + struct { + uint8_t brand; + uint8_t type; + uint8_t unk_a[2]; + uint16_t capacity; /* BE */ + uint16_t remain; /* BE */ + uint8_t unk_b[2]; + } __attribute__((packed)) media; /* D90_STATUS_TYPE_MEDIA */ +} __attribute__((packed)); + +struct mitsud90_status_resp { + uint8_t hdr[4]; /* e4 47 44 30 */ + /* D90_STATUS_TYPE_ERROR */ + uint8_t code[2]; /* 00 is ok, nonzero is error */ + uint8_t unk[9]; + /* D90_STATUS_TYPE_MECHA */ + uint8_t mecha[2]; + /* D90_STATUS_TYPE_TEMP */ + uint8_t temp; +} __attribute__((packed)); + +struct mitsud90_info_resp { + uint8_t hdr[4]; /* e4 47 44 30 */ + uint8_t model[10]; + uint8_t x02; + struct mitsud90_fw_resp_single fw_vers[7]; + uint8_t x1e; + uint8_t x22[2]; + uint8_t x28[2]; + uint8_t x29[8]; + uint8_t x2b[2]; + uint8_t x2c[2]; + uint8_t x65[50]; + uint8_t x82; + uint8_t x83; + uint8_t x84; +} __attribute__((packed)); + +#define D90_MECHA_STATUS_IDLE 0x00 +#define D90_MECHA_STATUS_PRINTING 0x50 +#define D90_MECHA_STATUS_INIT 0x80 +#define D90_MECHA_STATUS_INIT_FEEDCUT 0x10 + +#define D90_MECHA_STATUS_PRINT_FEEDING 0x10 // feeding ? +#define D90_MECHA_STATUS_PRINT_PRE_Y 0x21 // pre Y ? +#define D90_MECHA_STATUS_PRINT_Y 0x22 // Y ? +#define D90_MECHA_STATUS_PRINT_PRE_M 0x23 // pre M ? +#define D90_MECHA_STATUS_PRINT_M 0x24 // M ? +#define D90_MECHA_STATUS_PRINT_PRE_C 0x25 // pre C ? guess! +#define D90_MECHA_STATUS_PRINT_C 0x26 // C ? +#define D90_MECHA_STATUS_PRINT_PRE_OC 0x27 // pre OC ? guess! +#define D90_MECHA_STATUS_PRINT_OC 0x28 // O C? +#define D90_MECHA_STATUS_PRINTING_x2f 0x2f // ?? +#define D90_MECHA_STATUS_PRINTING_x38 0x38 // eject ? + +#define D90_ERROR_STATUS_OK 0x00 +#define D90_ERROR_STATUS_OK_WARMING 0x40 +#define D90_ERROR_STATUS_OK_COOLING 0x80 +#define D90_ERROR_STATUS_RIBBON 0x21 +#define D90_ERROR_STATUS_PAPER 0x22 +#define D90_ERROR_STATUS_PAP_RIB 0x23 +#define D90_ERROR_STATUS_OPEN 0x29 + +struct mitsud90_job_query { + uint8_t hdr[4]; /* 1b 47 44 31 */ + uint16_t jobid; /* BE */ +}; + +struct mitsud90_job_resp { + uint8_t hdr[4]; /* e4 47 44 31 */ + uint8_t unk1; + uint8_t unk2; + uint16_t unk3; +}; + +struct mitsud90_job_hdr { + uint8_t hdr[6]; /* 1b 53 50 30 00 33 */ + uint16_t cols; /* BE */ + uint16_t rows; /* BE */ + uint8_t unk[5]; /* 64 00 00 01 00 */ + union { +#if 0 + struct { + uint8_t margin; + uint16_t position; + } cuts[3] __attribute__((packed)); +#endif + uint8_t cutzero[9]; + } __attribute__((packed)); + uint8_t zero[24]; + + uint8_t overcoat; + uint8_t quality; + uint8_t colorcorr; + uint8_t sharp_h; + uint8_t sharp_v; + uint8_t zero_b[5]; + union { + struct { + uint16_t pano_on; /* 0x0001 when pano is on, */ + uint8_t pano_tot; /* 2 or 3 */ + uint8_t pano_pg; /* 1, 2, 3 */ + uint16_t pano_rows; /* always 0x097c (BE), ie 2428 ie 8" print */ + uint16_t pano_rows2; /* Always 0x30 less than pano_rows */ + uint16_t pano_zero; /* 0x0000 */ + uint8_t pano_unk[6]; /* 02 58 00 0c 00 06 */ + } pano __attribute__((packed)); + uint8_t zero_c[16]; + }; + uint8_t zero_d[6]; + uint8_t zero_fill[432]; +} __attribute__((packed)); + +struct mitsud90_plane_hdr { + uint8_t hdr[10]; /* 1b 5a 54 01 00 09 00 00 00 00 */ + uint16_t cols; /* BE */ + uint16_t rows; /* BE */ + uint8_t zero_fill[498]; +}; + +struct mitsud90_job_footer { + uint8_t hdr[4]; /* 1b 42 51 31 */ + uint8_t pad; + uint8_t seconds; /* 0x05 by default (windows) */ +}; + +struct mitsud90_memcheck { + uint8_t hdr[4]; /* 1b 47 44 33 */ + uint8_t unk[2]; /* 00 33 */ + uint16_t cols; /* BE */ + uint16_t rows; /* BE */ + uint8_t unk_b[4]; /* 64 00 00 01 */ + uint8_t zero_fill[498]; +}; + +struct mitsud90_memcheck_resp { + uint8_t hdr[4]; /* e4 47 44 43 */ + uint8_t size_bad; /* 0x00 is ok */ + uint8_t mem_bad; /* 0x00 is ok */ +}; + +const char *mitsud90_mecha_statuses(const uint8_t *code) +{ + switch (code[0]) { + case D90_MECHA_STATUS_IDLE: + return "Idle"; + case D90_MECHA_STATUS_PRINTING: + switch (code[1]) { + case D90_MECHA_STATUS_PRINT_FEEDING: + return "Feeding Media"; + case D90_MECHA_STATUS_PRINT_PRE_Y: + case D90_MECHA_STATUS_PRINT_Y: + return "Printing Yellow"; + case D90_MECHA_STATUS_PRINT_PRE_M: + case D90_MECHA_STATUS_PRINT_M: + return "Printing Magenta"; + case D90_MECHA_STATUS_PRINT_PRE_C: + case D90_MECHA_STATUS_PRINT_C: + return "Printing Cyan"; + case D90_MECHA_STATUS_PRINT_PRE_OC: + case D90_MECHA_STATUS_PRINT_OC: + return "Applying Overcoat"; + case D90_MECHA_STATUS_PRINTING_x2f: + case D90_MECHA_STATUS_PRINTING_x38: + return "Ejecting Media?"; + default: + return "Printing (Unknown)"; + } + case D90_MECHA_STATUS_INIT: + if (code[1] == D90_MECHA_STATUS_INIT_FEEDCUT) + return "Feed & Cut paper"; + else + return "Initializing"; + default: + return "Unknown"; + } +} + +const char *mitsud90_error_codes(const uint8_t *code) +{ + switch(code[0]) { + case D90_ERROR_STATUS_OK: + if (code[1] & D90_ERROR_STATUS_OK_WARMING) + return "Heating"; + else if (code[1] & D90_ERROR_STATUS_OK_COOLING) + return "Cooling Down"; + else + return "Idle"; + case D90_ERROR_STATUS_RIBBON: + switch (code[1]) { + case 0x00: + return "Ribbon exhausted"; + case 0x10: + return "Insufficient remaining ribbon"; + case 0x20: + return "Ribbon Cue Timeout"; + case 0x30: + return "Cannot Cue Ribbon"; + case 0x90: + return "No ribbon"; + default: + return "Unknown Ribbon Error"; + } + case D90_ERROR_STATUS_PAPER: + switch (code[1]) { + case 0x00: + return "No paper"; + case 0x02: + return "Paper exhausted"; + default: + return "Unknown Paper Error"; + } + case D90_ERROR_STATUS_PAP_RIB: + switch (code[1]) { + case 0x00: + return "Ribbon/Paper mismatch"; + case 0x90: + return "Ribbon/Job mismatch"; + default: + return "Unknown ribbon match error"; + } + case 0x26: + return "Illegal Ribbon"; + case 0x28: + return "Cut Bin Missing"; + case D90_ERROR_STATUS_OPEN: + switch (code[1]) { + case 0x00: + return "Printer Open during Stop"; + case 0x10: + return "Printer Open during Initialization"; + case 0x90: + return "Printer Open during Printing"; + default: + return "Unknown Door error"; + } + case 0x2f: + return "Printer turned off during printing"; + case 0x31: + return "Ink feed stop"; + case 0x32: + return "Ink Skip 1 timeout"; + case 0x33: + return "Ink Skip 2 timeout"; + case 0x34: + return "Ink Sticking"; + case 0x35: + return "Ink return stop"; + case 0x36: + return "Ink Rewind timeout"; + case 0x37: + return "Winding sensing error"; + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + return "Paper Jam"; + case 0x60: + if (code[1] == 0x20) + return "Preheat error"; + else if (code[1] == 0x04) + return "Humidity sensor error"; + else if (code[1] & 0x1f) + return "Thermistor error"; + else + return "Unknown error"; + case 0x61: + if (code[1] == 0x00) + return "Color Sensor Error"; + else if (code[1] & 0x10) + return "Matte OP Error"; + else + return "Unknown error"; + case 0x62: + return "Data Transfer error"; + case 0x63: + return "EEPROM error"; + case 0x64: + return "Flash access error"; + case 0x65: + return "FPGA configuration error"; + case 0x66: + return "Power voltage Error"; + case 0x67: + return "RFID access error"; + case 0x68: + if (code[1] == 0x00) + return "Fan Lock Error"; + else if (code[1] == 0x90) + return "MDA Error"; + else + return "Unknown error"; + case 0x69: + if (code[1] == 0x10) + return "DDR Error"; + else if (code[1] == 0x00) + return "Firmware Error"; + else + return "Unknown error"; + case 0x70: + case 0x71: + case 0x73: + case 0x75: + return "Mechanical Error (check ribbon and power cycle)"; + case 0x82: + return "USB Timeout"; + case 0x83: + return "Illegal paper size"; + case 0x84: + return "Illegal parameter"; + case 0x85: + return "Job Cancel"; + case 0x89: + return "Last Job Error"; + default: + return "Unknown"; + } +} + +static void mitsud90_dump_status(struct mitsud90_status_resp *resp) +{ + INFO("Error Status: %s (%02x %02x) -- %02x %02x %02x %02x %02x %02x %02x %02x %02x\n", + mitsud90_error_codes(resp->code), + resp->code[0], resp->code[1], + resp->unk[0], resp->unk[1], resp->unk[2], resp->unk[3], + resp->unk[4], resp->unk[5], resp->unk[6], resp->unk[7], + resp->unk[8]); + INFO("Printer Status: %s (%02x %02x)\n", + mitsud90_mecha_statuses(resp->mecha), + resp->mecha[0], resp->mecha[1]); + INFO("Temperature Status: %s\n", + mitsu70x_temperatures(resp->temp)); +} + +/* Private data structure */ +struct mitsud90_printjob { + uint8_t *databuf; + int datalen; + int copies; +}; + +struct mitsud90_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + + int type; + + /* Used in parsing.. */ + struct mitsud90_job_footer holdover; + int holdover_on; + + struct marker marker; +}; + +static int mitsud90_query_media(struct mitsud90_ctx *ctx, struct mitsud90_media_resp *resp) +{ + uint8_t cmdbuf[8]; + int ret, num; + + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x47; + cmdbuf[2] = 0x44; + cmdbuf[3] = 0x30; + cmdbuf[4] = 0; + cmdbuf[5] = 0; + cmdbuf[6] = 0x01; /* Number of commands */ + cmdbuf[7] = D90_STATUS_TYPE_MEDIA; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, sizeof(cmdbuf)))) + 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; + } + + return CUPS_BACKEND_OK; +} + +static int mitsud90_query_status(struct mitsud90_ctx *ctx, struct mitsud90_status_resp *resp) +{ + uint8_t cmdbuf[10]; + int ret, num; + + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x47; + cmdbuf[2] = 0x44; + cmdbuf[3] = 0x30; + cmdbuf[4] = 0; + cmdbuf[5] = 0; + cmdbuf[6] = 0x03; /* Number of commands */ + cmdbuf[7] = D90_STATUS_TYPE_ERROR; + cmdbuf[8] = D90_STATUS_TYPE_MECHA; + cmdbuf[9] = D90_STATUS_TYPE_TEMP; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, sizeof(cmdbuf)))) + 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; + } + + return CUPS_BACKEND_OK; +} + +/* Generic functions */ + +static void *mitsud90_init(void) +{ + struct mitsud90_ctx *ctx = malloc(sizeof(struct mitsud90_ctx)); + if (!ctx) { + ERROR("Memory Allocation Failure!\n"); + return NULL; + } + memset(ctx, 0, sizeof(struct mitsud90_ctx)); + + return ctx; +} + +static int mitsud90_attach(void *vctx, struct libusb_device_handle *dev, int type, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +{ + struct mitsud90_ctx *ctx = vctx; + struct mitsud90_media_resp resp; + + UNUSED(jobid); + + ctx->dev = dev; + ctx->endp_up = endp_up; + ctx->endp_down = endp_down; + ctx->type = type; + + if (test_mode < TEST_MODE_NOATTACH) { + if (mitsud90_query_media(ctx, &resp)) + return CUPS_BACKEND_FAILED; + } else { + resp.media.brand = 0xff; + resp.media.type = 0x0f; + resp.media.capacity = cpu_to_be16(230); + resp.media.remain = cpu_to_be16(200); + } + + ctx->marker.color = "#00FFFF#FF00FF#FFFF00"; + ctx->marker.name = mitsu70x_media_types(resp.media.brand, resp.media.type); + ctx->marker.levelmax = be16_to_cpu(resp.media.capacity); + ctx->marker.levelnow = be16_to_cpu(resp.media.remain); + + return CUPS_BACKEND_OK; +} + +static void mitsud90_cleanup_job(const void *vjob) +{ + const struct mitsud90_printjob *job = vjob; + + if (job->databuf) + free(job->databuf); + + free((void*)job); +} + +static void mitsud90_teardown(void *vctx) { + struct mitsud90_ctx *ctx = vctx; + + if (!ctx) + return; + + free(ctx); +} + +static int mitsud90_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { + struct mitsud90_ctx *ctx = vctx; + int i, remain; + struct mitsud90_job_hdr *hdr; + + struct mitsud90_printjob *job;; + + if (!ctx) + return CUPS_BACKEND_FAILED; + + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; + } + memset(job, 0, sizeof(*job)); + job->copies = copies; + + /* Just allocate a worst-case buffer */ + job->datalen = 0; + job->databuf = malloc(sizeof(struct mitsud90_job_hdr) + + sizeof(struct mitsud90_plane_hdr) + + sizeof(struct mitsud90_job_footer) + + 1852*2729*3); + if (!job->databuf) { + ERROR("Memory allocation failure!\n"); + mitsud90_cleanup_job(job); + return CUPS_BACKEND_RETRY_CURRENT; + } + + /* Make sure there's no holdover */ + if (ctx->holdover_on) { + memcpy(job->databuf, &ctx->holdover, sizeof(ctx->holdover)); + job->datalen += sizeof(ctx->holdover); + ctx->holdover_on = 0; + } + + /* Read in first header. */ + remain = sizeof(struct mitsud90_job_hdr) - job->datalen; + while (remain) { + i = read(data_fd, (job->databuf + job->datalen), remain); + if (i == 0) { + mitsud90_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + if (i < 0) { + mitsud90_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + remain -= i; + job->datalen += i; + } + + /* Sanity check header */ + hdr = (struct mitsud90_job_hdr *) job->databuf; + if (hdr->hdr[0] != 0x1b || + hdr->hdr[1] != 0x53 || + hdr->hdr[2] != 0x50 || + hdr->hdr[3] != 0x30 ) { + ERROR("Unrecognized data format (%02x%02x%02x%02x)!\n", + hdr->hdr[0], hdr->hdr[1], hdr->hdr[2], hdr->hdr[3]); + mitsud90_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + + /* Now read in the rest */ + remain = sizeof(struct mitsud90_plane_hdr) + be16_to_cpu(hdr->cols) * be16_to_cpu(hdr->rows) * 3; + while(remain) { + i = read(data_fd, job->databuf + job->datalen, remain); + if (i == 0) { + mitsud90_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + if (i < 0) { + mitsud90_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + job->datalen += i; + remain -= i; + } + + /* Read in the footer. Hopefully. */ + remain = sizeof(struct mitsud90_job_footer); + i = read(data_fd, job->databuf + job->datalen, remain); + if (i == 0) { + mitsud90_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + if (i < 0) { + mitsud90_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + + /* See if this is a job footer. If it is, keep, else holdover. */ + if (job->databuf[job->datalen + 0] != 0x1b || + job->databuf[job->datalen + 1] != 0x42 || + job->databuf[job->datalen + 2] != 0x51 || + job->databuf[job->datalen + 3] != 0x31) { + memcpy(&ctx->holdover, job->databuf + job->datalen, sizeof(struct mitsud90_job_footer)); + ctx->holdover_on = 1; + } else { + job->datalen += i; + ctx->holdover_on = 0; + } + + /* Sanity check */ + if (hdr->pano.pano_on) { + ERROR("Unable to handle panorama jobs yet\n"); + mitsud90_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + + *vjob = job; + + return CUPS_BACKEND_OK; +} + +static int mitsud90_main_loop(void *vctx, const void *vjob) { + struct mitsud90_ctx *ctx = vctx; + struct mitsud90_job_hdr *hdr; + struct mitsud90_status_resp resp; + uint8_t last_status[2] = {0xff, 0xff}; + + int sent; + int ret; + int copies; + + const struct mitsud90_printjob *job = vjob; + + if (!ctx) + return CUPS_BACKEND_FAILED; + if (!job) + return CUPS_BACKEND_FAILED; + copies = job->copies; + + hdr = (struct mitsud90_job_hdr*) job->databuf; + + INFO("Waiting for printer idle...\n"); + +top: + sent = 0; + + // XXX Figure out if printer is asleep, and wake it up if necessary. + + /* Query status, wait for idle or error out */ + do { + if (mitsud90_query_status(ctx, &resp)) + return CUPS_BACKEND_FAILED; + + if (resp.code[0] != D90_ERROR_STATUS_OK) { + ERROR("Printer reported error condition: %s (%02x %02x)\n", + mitsud90_error_codes(resp.code), resp.code[0], resp.code[1]); + return CUPS_BACKEND_STOP; + } + + if (resp.code[1] & D90_ERROR_STATUS_OK_WARMING || + resp.temp & D90_ERROR_STATUS_OK_WARMING ) { + INFO("Printer warming up\n"); + sleep(1); + continue; + } + if (resp.code[1] & D90_ERROR_STATUS_OK_COOLING || + resp.temp & D90_ERROR_STATUS_OK_COOLING) { + INFO("Printer cooling down\n"); + sleep(1); + continue; + } + + if (resp.mecha[0] != last_status[0] || + resp.mecha[1] != last_status[1]) { + INFO("Printer status: %s\n", + mitsud90_mecha_statuses(resp.mecha)); + last_status[0] = resp.mecha[0]; + last_status[1] = resp.mecha[1]; + } + + if (resp.mecha[0] == D90_MECHA_STATUS_IDLE) { + break; + // we don't have to wait until idle, just + // until we have free buffers. Don't know how + // to check this though.. XXXX + } + } while(1); + + + /* Send memory check */ + { + struct mitsud90_memcheck mem; + struct mitsud90_memcheck_resp mem_resp; + int num; + + memcpy(&mem, hdr, sizeof(mem)); + mem.hdr[0] = 0x1b; + mem.hdr[1] = 0x47; + mem.hdr[2] = 0x44; + mem.hdr[3] = 0x33; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + (uint8_t*) &mem, sizeof(mem)))) + return CUPS_BACKEND_FAILED; + + ret = read_data(ctx->dev, ctx->endp_up, + (uint8_t*)&mem_resp, sizeof(mem_resp), &num); + + if (ret < 0) + return ret; + if (num != sizeof(mem_resp)) { + ERROR("Short Read! (%d/%d)\n", num, (int)sizeof(mem_resp)); + return 4; + } + if (mem_resp.size_bad || mem_resp.mem_bad == 0xff) { + ERROR("Printer reported bad print params (%02x)\n", mem_resp.size_bad); + return CUPS_BACKEND_CANCEL; + } + if (mem_resp.mem_bad) { + ERROR("Printer buffers full, retrying!\n"); + sleep(1); + goto top; + } + } + + /* Send header */ + if ((ret = send_data(ctx->dev, ctx->endp_down, + job->databuf + sent, sizeof(*hdr)))) + return CUPS_BACKEND_FAILED; + sent += sizeof(*hdr); + + /* Send Plane header */ + if ((ret = send_data(ctx->dev, ctx->endp_down, + job->databuf + sent, sizeof(*hdr)))) + return CUPS_BACKEND_FAILED; + sent += sizeof(*hdr); + + /* Send payload + footer */ + if ((ret = send_data(ctx->dev, ctx->endp_down, + job->databuf + sent, job->datalen - sent))) + return CUPS_BACKEND_FAILED; +// sent += (job->datalen - sent); + + /* Wait for completion */ + do { + sleep(1); + + if (mitsud90_query_status(ctx, &resp)) + return CUPS_BACKEND_FAILED; + + if (resp.code[0] != D90_ERROR_STATUS_OK) { + ERROR("Printer reported error condition: %s (%02x %02x)\n", + mitsud90_error_codes(resp.code), resp.code[0], resp.code[1]); + return CUPS_BACKEND_STOP; + } + + if (resp.mecha[0] != last_status[0] || + resp.mecha[1] != last_status[1]) { + INFO("Printer status: %s\n", + mitsud90_mecha_statuses(resp.mecha)); + last_status[0] = resp.mecha[0]; + last_status[1] = resp.mecha[1]; + } + + /* Terminate when printing complete */ + if (resp.mecha[0] == D90_MECHA_STATUS_IDLE) { + break; + } + + if (fast_return && copies <= 1) { /* Copies generated by backend? */ + INFO("Fast return mode enabled.\n"); + break; + } + } while(1); + + /* Clean up */ + if (terminate) + copies = 1; + + INFO("Print complete (%d copies remaining)\n", copies - 1); + + if (copies && --copies) { + goto top; + } + + return CUPS_BACKEND_OK; +} + +static int mitsud90_query_job(struct mitsud90_ctx *ctx, uint16_t jobid, + struct mitsud90_job_resp *resp) +{ + struct mitsud90_job_query req; + int ret, num; + + req.hdr[0] = 0x1b; + req.hdr[1] = 0x47; + req.hdr[2] = 0x44; + req.hdr[3] = 0x31; + req.jobid = cpu_to_be16(jobid); + + if ((ret = send_data(ctx->dev, ctx->endp_down, + (uint8_t*) &req, sizeof(req)))) + 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; + } + + return CUPS_BACKEND_OK; +} + +static int mitsud90_get_jobstatus(struct mitsud90_ctx *ctx, uint16_t jobid) +{ + struct mitsud90_job_resp resp; + + if (mitsud90_query_job(ctx, jobid, &resp)) + return CUPS_BACKEND_FAILED; + + INFO("Job Status: %04x = %02x/%02x/%04x\n", + jobid, resp.unk1, resp.unk2, be16_to_cpu(resp.unk3)); + + return CUPS_BACKEND_OK; +} + +static int mitsud90_get_media(struct mitsud90_ctx *ctx) +{ + struct mitsud90_media_resp resp; + + if (mitsud90_query_media(ctx, &resp)) + return CUPS_BACKEND_FAILED; + + INFO("Media Type: %s (%02x/%02x)\n", + mitsu70x_media_types(resp.media.brand, resp.media.type), + resp.media.brand, + resp.media.type); + INFO("Prints Remaining: %03d/%03d\n", + be16_to_cpu(resp.media.remain), + be16_to_cpu(resp.media.capacity)); + + return CUPS_BACKEND_OK; +} + +static int mitsud90_get_status(struct mitsud90_ctx *ctx) +{ + struct mitsud90_status_resp resp; + + if (mitsud90_query_status(ctx, &resp)) + return CUPS_BACKEND_FAILED; + + mitsud90_dump_status(&resp); + + return CUPS_BACKEND_OK; +} + +int mitsud90_get_info(struct mitsud90_ctx *ctx) +{ + uint8_t cmdbuf[26]; + int ret, num; + struct mitsud90_info_resp resp; + + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x47; + cmdbuf[2] = 0x44; + cmdbuf[3] = 0x30; + cmdbuf[4] = 0; + cmdbuf[5] = 0; + cmdbuf[6] = 19; /* Number of commands */ + + cmdbuf[7] = D90_STATUS_TYPE_MODEL; + cmdbuf[8] = 0x02; + cmdbuf[9] = 0x0b; + cmdbuf[10] = 0x0c; + + cmdbuf[11] = 0x0d; + cmdbuf[12] = 0x0e; + cmdbuf[13] = 0x0f; + cmdbuf[14] = 0x11; + + cmdbuf[15] = 0x13; + cmdbuf[16] = 0x1e; + cmdbuf[17] = 0x22; + cmdbuf[18] = 0x28; + + cmdbuf[19] = 0x29; + cmdbuf[20] = 0x2b; + cmdbuf[21] = 0x2c; + cmdbuf[22] = 0x65; + + cmdbuf[23] = 0x82; + cmdbuf[24] = 0x83; + cmdbuf[25] = 0x84; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, sizeof(cmdbuf)))) + 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; + } + + /* start dumping output */ + memset(cmdbuf, 0, sizeof(cmdbuf)); + memcpy(cmdbuf, resp.model, sizeof(resp.model)); + INFO("Model: %s\n", (char*)cmdbuf); + for (num = 0; num < 7 ; num++) { + memset(cmdbuf, 0, sizeof(cmdbuf)); + memcpy(cmdbuf, resp.fw_vers[num].version, sizeof(resp.fw_vers[num].version)); + INFO("FW Component %02d: %s (%04x)\n", + num, cmdbuf, be16_to_cpu(resp.fw_vers[num].csum)); + } + INFO("TYPE_02: %02x\n", resp.x02); + INFO("TYPE_1e: %02x\n", resp.x1e); + INFO("TYPE_22: %02x %02x\n", resp.x22[0], resp.x22[1]); + INFO("TYPE_28: %02x %02x\n", resp.x28[0], resp.x28[1]); + INFO("TYPE_29: %02x %02x %02x %02x %02x %02x %02x %02x\n", + resp.x29[0], resp.x29[1], resp.x29[2], resp.x29[3], + resp.x29[4], resp.x29[5], resp.x29[6], resp.x29[7]); + INFO("TYPE_2b: %02x %02x\n", resp.x2b[0], resp.x2b[1]); + INFO("TYPE_2c: %02x %02x\n", resp.x2c[0], resp.x2c[1]); + + INFO("TYPE_65:"); + for (num = 0; num < 50 ; num++) { + DEBUG2(" %02x", resp.x65[num]); + } + DEBUG2("\n"); + INFO("TYPE_1e: %82x\n", resp.x82); + INFO("TYPE_1e: %83x\n", resp.x83); + + /* XXX Dump iSerial, sleep time settings */ + // XXX what about resume, wait time, "cut limit" ? + + return CUPS_BACKEND_OK; +} + +static int mitsud90_dumpall(struct mitsud90_ctx *ctx) +{ + int i; + uint8_t cmdbuf[8]; + uint8_t buf[256]; + + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x47; + cmdbuf[2] = 0x44; + cmdbuf[3] = 0x30; + cmdbuf[4] = 0; + cmdbuf[5] = 0; + cmdbuf[6] = 0x01; /* Number of commands */ + + for (i = 0 ; i < 256 ; i++) { + int num, ret; + + cmdbuf[7] = i; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, sizeof(cmdbuf)))) + return ret; + memset(buf, 0, sizeof(buf)); + + ret = read_data(ctx->dev, ctx->endp_up, + buf, sizeof(buf), &num); + + if (ret <= 0) + continue; + + if (num > 4) { + DEBUG("TYPE %02x LEN: %d (%d)\n", i, num, num - 4); + DEBUG("<--"); + for (ret = 0; ret < num ; ret ++) { + DEBUG2(" %x", buf[ret]); + } + DEBUG2("\n"); + } + } + + return CUPS_BACKEND_OK; +} + +static int mitsud90_set_iserial(struct mitsud90_ctx *ctx, uint8_t enabled) +{ + uint8_t cmdbuf[23]; + int ret, num; + + enabled = (enabled) ? 0: 0x80; + + /* Send Parameter.. */ + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x31; + cmdbuf[2] = 0x36; + cmdbuf[3] = 0x30; + cmdbuf[4] = 0x41; + cmdbuf[5] = 0xbe; + cmdbuf[6] = 0x00; + cmdbuf[7] = 0x00; + + cmdbuf[8] = 0x00; + cmdbuf[9] = 0x01; + cmdbuf[10] = 0x00; + cmdbuf[11] = 0x00; + cmdbuf[12] = 0x00; + cmdbuf[13] = 0x11; + cmdbuf[14] = 0xff; + cmdbuf[15] = 0xff; + + cmdbuf[16] = 0xff; + cmdbuf[17] = 0xfe; + cmdbuf[18] = 0xff; + cmdbuf[19] = 0xff; + cmdbuf[20] = 0xff; + cmdbuf[21] = 0xfe; + cmdbuf[22] = enabled; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, sizeof(cmdbuf)))) + return ret; + + ret = read_data(ctx->dev, ctx->endp_up, + cmdbuf, sizeof(cmdbuf), &num); + + /* No response */ + + return ret; +} + +static int mitsud90_set_sleeptime(struct mitsud90_ctx *ctx, uint16_t time) +{ + uint8_t cmdbuf[24]; + int ret; + + /* 255 minutes max, according to RE work */ + if (time > 255) + time = 255; + + /* Send Parameter.. */ + cmdbuf[0] = 0x1b; + cmdbuf[1] = 0x31; + cmdbuf[2] = 0x36; + cmdbuf[3] = 0x30; + cmdbuf[4] = 0x41; + cmdbuf[5] = 0xbe; + cmdbuf[6] = 0x00; + cmdbuf[7] = 0x00; + + cmdbuf[8] = 0x00; + cmdbuf[9] = 0x02; + cmdbuf[10] = 0x00; + cmdbuf[11] = 0x00; + cmdbuf[12] = 0x05; + cmdbuf[13] = 0x02; + cmdbuf[14] = 0xff; + cmdbuf[15] = 0xff; + + cmdbuf[16] = 0xff; + cmdbuf[17] = 0xfd; + cmdbuf[18] = 0xff; + cmdbuf[19] = 0xff; + cmdbuf[20] = 0xfa; + cmdbuf[21] = 0xff; + cmdbuf[22] = (time >> 8) & 0xff; + cmdbuf[23] = time & 0xff; + + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, 4))) + return ret; + + /* No response */ + + return 0; +} + +static void mitsud90_cmdline(void) +{ + DEBUG("\t\t[ -i ] # Query printer info\n"); + DEBUG("\t\t[ -j jobid ] # Query job status\n"); + DEBUG("\t\t[ -k time ] # Set sleep time in minutes\n"); + DEBUG("\t\t[ -m ] # Query printer media\n"); + DEBUG("\t\t[ -s ] # Query printer status\n"); + DEBUG("\t\t[ -x 0|1 ] # Enable/disable iSerial reporting\n"); +// DEBUG("\t\t[ -Z ] # Dump all parameters\n"); +} + +static int mitsud90_cmdline_arg(void *vctx, int argc, char **argv) +{ + struct mitsud90_ctx *ctx = vctx; + int i, j = 0; + + if (!ctx) + return -1; + + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "ij:k:msx:Z")) >= 0) { + switch(i) { + GETOPT_PROCESS_GLOBAL + case 'i': + j = mitsud90_get_info(ctx); + break; + case 'j': + j = mitsud90_get_jobstatus(ctx, atoi(optarg)); + break; + case 'k': + j = mitsud90_set_sleeptime(ctx, atoi(optarg)); + break; + case 'm': + j = mitsud90_get_media(ctx); + break; + case 's': + j = mitsud90_get_status(ctx); + break; + case 'x': + j = mitsud90_set_iserial(ctx, atoi(optarg)); + break; + case 'Z': + j = mitsud90_dumpall(ctx); + break; + default: + break; /* Ignore completely */ + } + + if (j) return j; + } + + return 0; +} + +static int mitsud90_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct mitsud90_ctx *ctx = vctx; + struct mitsud90_media_resp resp; + + *markers = &ctx->marker; + *count = 1; + + if (mitsud90_query_media(ctx, &resp)) + return CUPS_BACKEND_FAILED; + + ctx->marker.levelnow = be16_to_cpu(resp.media.remain); + + return CUPS_BACKEND_OK; +} + +static const char *mitsud90_prefixes[] = { + "mitsubishi-d90dw", + // backwards compatibility + "mitsud90", + NULL +}; + +/* Exported */ +struct dyesub_backend mitsud90_backend = { + .name = "Mitsubishi CP-D90DW", + .version = "0.13", + .uri_prefixes = mitsud90_prefixes, + .cmdline_arg = mitsud90_cmdline_arg, + .cmdline_usage = mitsud90_cmdline, + .init = mitsud90_init, + .attach = mitsud90_attach, + .cleanup_job = mitsud90_cleanup_job, + .teardown = mitsud90_teardown, + .read_parse = mitsud90_read_parse, + .main_loop = mitsud90_main_loop, + .query_markers = mitsud90_query_markers, + .devices = { + { USB_VID_MITSU, USB_PID_MITSU_D90, P_MITSU_D90, NULL, "mitsubishi-d90dw"}, + { 0, 0, 0, NULL, NULL} + } +}; + +/* + Mitsubishi CP-D90DW data format + + All multi-byte values are BIG endian + + [[HEADER 1]] + + 1b 53 50 30 00 33 XX XX YY YY 64 00 00 01 00 ?? XX XX == COLS, YY XX ROWS (BE) + ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 <-- cut position, see below + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + QQ RR SS HH VV 00 00 00 00 00 01 00 03 II 09 7c QQ == 02 matte, 00 glossy, + 09 4c 00 00 02 58 00 0c 00 06 RR == 00 auto, 03 == fine, 02 == superfine. + SS == 00 colorcorr, 01 == none + HH/VV sharpening for Horiz/Vert, 0-8, 0 is off, 4 is normal + [pad to 512b] + + normal == rows 00 00 00 00 00 00 00 00 00 + 4x6div2 == 1226 00 02 65 01 00 00 01 00 00 + 8x6div2 == 2488 01 04 be 00 00 00 00 00 00 + + guesses based on SDK docs: + + 9x6div2 == 2728 01 05 36 00 00 00 00 00 00 + 9x6div3 == 2724 00 03 90 00 07 14 00 00 00 + 9x6div4 == 2628 00 02 97 00 05 22 00 07 ad + + from [01 00 03 03] onwards, only shows in 8x20" PANORAMA prints. Assume 2" overlap. + II == 01 02 03 (which panel # in panorama!) + [02 58] == 600, aka 2" * 300dpi? + [09 4c] == 2380 (48 less than 8 size? (trim length on ends?) + [09 7c] == 2428 (ie 8" print) + + (6x20 == 1852x6036) + (6x14 == 1852x4232) + + 3*8" panels == 2428*3=7284. -6036 = 1248. /2 = 624 (0x270) + + [[DATA PLANE HEADER]] + + 1b 5a 54 01 00 09 00 00 00 00 XX XX YY YY 00 00 + ... + [pad to 512b] + + data, BGR packed, 8bpp. No padding to 512b! + + [[FOOTER]] + + 1b 42 51 31 00 TT ## TT == secs to wait for second print + + + **************************************************** + +Comms Protocol for D90: + + [[ ERROR STATUS ]] + +-> 1b 47 44 30 00 00 01 16 +<- e4 47 44 30 00 00 00 00 00 00 00 00 00 00 00 [Normal/OK] +<- e4 47 44 30 XX 00 00 00 00 00 00 00 00 3f 37 [Error condition] + XX == 29 (printer open) + 28 (cut bin missing) +<- e4 47 44 30 21 90 00 00 01 00 00 00 00 3f 37 No ribbon + + [[ MEDIA STATUS ]] + +-> 1b 47 44 30 00 00 01 2a +<- e4 47 44 30 ff 0f 50 00 01 ae 01 9b 01 00 [Normal/OK] +<- e4 47 44 30 ff ff ff ff ff ff ff ff ff ff [Error] + + [[ MECHA STATUS ]] + +-> 1b 47 44 30 00 00 01 17 +<- e4 47 44 30 SS SS + + [[ TEMPERATURE QUERY ]] + +-> 1b 47 44 30 00 00 01 1f +<- e4 47 44 30 HH + + [[ UNKNOWN QUERY ]] +-> 1b 47 44 30 00 00 01 28 +<- e4 47 44 30 XX XX Unknown, seems to increment. + + [[ JOB STATUS QUERY ?? ]] + +-> 1b 47 44 31 00 00 JJ JJ Jobid? +<- e4 47 44 31 XX YY ZZ ZZ No idea.. sure. + + [[ COMBINED STATUS QUERIES ]] + +-> 1b 47 44 30 00 00 04 16 17 1f 2a +<- e4 47 44 30 + + MM NN 00 00 ZZ 00 00 00 00 QQ QQ [id 16, total 11] + SS SS [id 17, total 2] + HH [id 1f, total 1] + VV TT WW 00 XX XX YY YY 01 00 [id 2a, total 10] + + WW == 0x50 or 0x00 (seen, no idea what it means) + VV == Media vendor (0xff etc) + TT == Media type, 0x02/0x0f etc (see mitsu70x_media_types!) + XX XX == Media capacity, BE + YY YY == Media remain, BE + QQ QQ == 00 00 normal, 3f 37 error + MM NN == MM major err (00 if no error) NN minor error. + ZZ == 01 seen for _some_ errors. + SS SS == Mecha Status (00 == ready, 50 == printing, 80+10 == feedandcut, 80 == initializing? + HH == Temperature state. 00 is OK, 0x40 is low, 0x80 is hot. + II II == ?? + JJ JJ == ?? + + [[ WAKE UP PRINTER ]] +-> 1b 45 57 55 + + [[ GET iSERIAL ]] + +-> 1b 61 36 36 41 be 00 00 + 00 01 00 00 00 11 ff ff + ff fe ff ff ff ee +<- e4 61 36 36 41 be 00 00 + 00 01 00 00 00 11 ff ff + ff fe ff ff ff ee XX <- XX is 0x80 or 0x00. (0x80) ISERIAL OFF + + [[ GET CUT? ]] + +-> 1b 61 36 36 45 ba 00 00 + 00 01 00 00 05 07 ff ff + ff fe ff ff fa f8 +-> e4 61 36 36 45 ba 00 00 + 00 01 00 00 05 07 ff ff + ff fe ff ff fa f8 XX <- XX is 0x80 or 0x00 (0x00) CUT ON? + + [[ GET WAIT TIME ]] + +-> 1b 61 36 36 45 00 00 00 + 00 01 00 00 05 05 ff ff + ff fe ff ff fa fb +-> 1b 61 36 36 45 00 00 00 + 00 01 00 00 05 05 ff ff + ff fe ff ff fa fb XX <- XX is time in seconds. + + [[ GET RESUME? ]] + +-> 1b 61 36 36 45 ba 00 00 + 00 01 00 00 05 06 ff ff + ff fe ff ff fa f9 +-> e4 61 36 36 45 ba 00 00 + 00 01 00 00 05 06 ff ff + ff fe ff ff fa f9 XX <- XX is 0x80 or 0x00 (0x80) (OFF) + + [[ GET SLEEP TIME! ]] + +-> 1b 61 36 36 45 ba 00 00 + 00 02 00 00 05 02 ff ff + ff fd ff ff fa fd +<- e4 61 36 36 45 00 00 00 + 00 02 00 00 05 02 ff ff + ff fd ff ff fa fd XX 00 <- XX, sleep time in minutes. + + [[ SET SLEEP TIME! ]] + +-> 1b 61 36 30 45 ba 00 00 + 00 02 00 00 05 02 ff ff + ff fd ff ff fa fd XX 00 <- XX, sleep time in minutes. + + [[ SET iSERIAL ]] + +-> 1b 61 36 30 41 be 00 00 + 00 01 00 00 00 11 ff ff + ff fe ff ff ff ee XX <- XX 0x80 OFF, 0x00 ON. + + [[ SANITY CHECK PRINT ARGUMENTS / MEMTEST ]] + +-> 1b 47 44 33 00 33 07 3c 04 ca 64 00 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 00 00 00 00 00 00 00 00 + 00 00 00 04 04 00 00 00 00 00 00 00 00 00 00 00 + [[ pad to 512 ]] + + ... 07 3c onwards is the same as main payload header. + +<- e4 47 44 43 XX YY + + ... possibly the same as the D70's "memorystatus" + XX == size ok (non-zero if bad size) + YY == memory ok (non-zero or 0xff if full?) + + [[ SEND OVER HDRs and DATA ]] + + ... Print arguments: + +-> 1b 53 50 30 00 33 07 3c 04 ca 64 00 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 00 00 00 00 00 00 00 00 + 00 00 00 04 04 00 00 00 00 00 00 00 00 00 00 00 + [[ pad to 512 ]] + + ... Data transfer. Plane header: + +-> 1b 5a 54 01 00 09 00 00 00 00 07 3c 04 ca 00 00 + [[ pad to 512 ]] + +-> [[print data]] [[ padded? ]] +-> [[print data]] + +-> 1b 42 51 31 00 ZZ + + ... Footer. + ZZ == Seconds to wait for follow-up print (0x05) + + + */ diff --git a/src/cups/backend_mitsup95d.c b/src/cups/backend_mitsup95d.c index 44fbe0e..c4e0054 100644 --- a/src/cups/backend_mitsup95d.c +++ b/src/cups/backend_mitsup95d.c @@ -1,7 +1,7 @@ /* * Mitsubishi P93D/P95D Monochrome Thermal Photo Printer CUPS backend * - * (c) 2016-2017 Solomon Peachy <pizza@shaftnet.org> + * (c) 2016-2018 Solomon Peachy <pizza@shaftnet.org> * * Development of this backend was sponsored by: * @@ -22,11 +22,12 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * + * SPDX-License-Identifier: GPL-2.0+ + * */ #include <stdio.h> @@ -48,32 +49,54 @@ #define USB_PID_MITSU_P95D 0x3b10 /* Private data structure */ -struct mitsup95d_ctx { - struct libusb_device_handle *dev; - uint8_t endp_up; - uint8_t endp_down; - - int type; - - uint8_t mem_clr[4]; // 1b 5a 43 00 - int mem_clr_present; +struct mitsup95d_printjob { + uint8_t *databuf; + uint32_t datalen; uint8_t hdr[2]; // 1b 51 - uint8_t hdr1[50]; // 1b 57 20 2e ... uint8_t hdr2[50]; // 1b 57 21 2e ... uint8_t hdr3[50]; // 1b 57 22 2e ... - uint8_t hdr4[42]; // 1b 58 ... int hdr4_len; // 36 (P95) or 42 (P93) + uint8_t plane[12]; // 1b 5a 74 00 ... - uint8_t *databuf; - uint32_t datalen; + uint8_t mem_clr[4]; // 1b 5a 43 00 + int mem_clr_present; uint8_t ftr[2]; }; +struct mitsup95d_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + + int type; + + struct marker marker; +}; + +#define QUERYRESP_SIZE_MAX 9 + +static const char *mitsup93d_errors(uint8_t code) +{ + switch (code) { + case 0x6f: return "Door Open"; + case 0x50: return "No Paper"; + default: return "Unknown Error"; + } +} + +static const char *mitsup95d_errors(uint8_t code) +{ + switch (code & 0xf) { + case 3: return "Door Open"; + case 4: return "No Paper"; + default: return "Unknown Error"; + } +} static void *mitsup95d_init(void) { @@ -87,24 +110,63 @@ static void *mitsup95d_init(void) return ctx; } -static void mitsup95d_attach(void *vctx, struct libusb_device_handle *dev, +static int mitsup95d_get_status(struct mitsup95d_ctx *ctx, uint8_t *resp) +{ + uint8_t querycmd[4] = { 0x1b, 0x72, 0x00, 0x00 }; + int ret; + int num; + + /* P93D is ... special. Windows switches to this halfway through + but it seems be okay to use it everywhere */ + if (ctx->type == P_MITSU_P93D) { + querycmd[2] = 0x03; + } + + /* Query Status to sanity-check job */ + if ((ret = send_data(ctx->dev, ctx->endp_down, + querycmd, sizeof(querycmd)))) + return CUPS_BACKEND_FAILED; + ret = read_data(ctx->dev, ctx->endp_up, + resp, QUERYRESP_SIZE_MAX, &num); + + if (ret < 0) + return CUPS_BACKEND_FAILED; + if (ctx->type == P_MITSU_P95D && num != 9) { + return CUPS_BACKEND_FAILED; + } else if (ctx->type == P_MITSU_P93D && num != 8) { + return CUPS_BACKEND_FAILED; + } + return CUPS_BACKEND_OK; +} + +static int mitsup95d_attach(void *vctx, struct libusb_device_handle *dev, int type, uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct mitsup95d_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; + ctx->type = type; - device = libusb_get_device(dev); - libusb_get_device_descriptor(device, &desc); + ctx->marker.color = "#000000"; /* Ie black! */ + ctx->marker.name = "Unknown"; + ctx->marker.levelmax = -1; + ctx->marker.levelnow = -2; - ctx->type = lookup_printer_type(&mitsup95d_backend, - desc.idVendor, desc.idProduct); + return CUPS_BACKEND_OK; +} + +static void mitsup95d_cleanup_job(const void *vjob) +{ + const struct mitsup95d_printjob *job = vjob; + + if (job->databuf) + free(job->databuf); + + free((void*)job); } static void mitsup95d_teardown(void *vctx) { @@ -113,12 +175,10 @@ static void mitsup95d_teardown(void *vctx) { if (!ctx) return; - if (ctx->databuf) - free(ctx->databuf); free(ctx); } -static int mitsup95d_read_parse(void *vctx, int data_fd) { +static int mitsup95d_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { struct mitsup95d_ctx *ctx = vctx; uint8_t buf[2]; /* Enough to read in any header */ uint8_t tmphdr[50]; @@ -127,35 +187,45 @@ static int mitsup95d_read_parse(void *vctx, int data_fd) { int remain; int ptr_offset; + struct mitsup95d_printjob *job = NULL; + if (!ctx) return CUPS_BACKEND_FAILED; - if (ctx->databuf) { - free(ctx->databuf); - ctx->databuf = NULL; + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; } - ctx->mem_clr_present = 0; + memset(job, 0, sizeof(*job)); + + job->mem_clr_present = 0; top: i = read(data_fd, buf, sizeof(buf)); - if (i == 0) + if (i == 0) { + mitsup95d_cleanup_job(job); return CUPS_BACKEND_CANCEL; - if (i < 0) + } + if (i < 0) { + mitsup95d_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } if (buf[0] != 0x1b) { ERROR("malformed data stream\n"); + mitsup95d_cleanup_job(job); return CUPS_BACKEND_CANCEL; } switch (buf[1]) { case 0x50: /* Footer */ remain = 2; - ptr = ctx->ftr; + ptr = job->ftr; break; case 0x51: /* Job Header */ remain = 2; - ptr = ctx->hdr; + ptr = job->hdr; break; case 0x57: /* Geeneral headers */ remain = sizeof(tmphdr); @@ -163,11 +233,11 @@ top: break; case 0x58: /* User Comment */ if (ctx->type == P_MITSU_P93D) - ctx->hdr4_len = 42; + job->hdr4_len = 42; else - ctx->hdr4_len = 36; - remain = ctx->hdr4_len; - ptr = ctx->hdr4; + job->hdr4_len = 36; + remain = job->hdr4_len; + ptr = job->hdr4; break; case 0x5a: /* Plane header OR printer reset */ // reset memory: 1b 5a 43 ... [len 04] @@ -178,6 +248,7 @@ top: break; default: ERROR("Unrecognized command! (%02x %02x)\n", buf[0], buf[1]); + mitsup95d_cleanup_job(job); return CUPS_BACKEND_CANCEL; } @@ -187,21 +258,25 @@ top: while (remain) { i = read(data_fd, ptr + ptr_offset, remain); - if (i == 0) + if (i == 0) { + mitsup95d_cleanup_job(job); return CUPS_BACKEND_CANCEL; - if (i < 0) + } + if (i < 0) { + mitsup95d_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } remain -= i; ptr_offset += i; /* Handle the ambiguous 0x5a block */ if (buf[1] == 0x5a && remain == 0) { if (tmphdr[2] == 0x74) { /* plane header */ - ptr = ctx->plane; + ptr = job->plane; remain = 12 - ptr_offset; /* Finish reading */ } else if (tmphdr[2] == 0x43) { /* reset memory */ - ptr = ctx->mem_clr; - ctx->mem_clr_present = 1; + ptr = job->mem_clr; + job->mem_clr_present = 1; remain = 4 - ptr_offset; } memcpy(ptr, tmphdr, ptr_offset); @@ -213,101 +288,96 @@ top: if (tmphdr[3] != 46) { ERROR("Unexpected header chunk: %02x %02x %02x %02x\n", tmphdr[0], tmphdr[1], tmphdr[2], tmphdr[3]); + mitsup95d_cleanup_job(job); return CUPS_BACKEND_CANCEL; } switch (tmphdr[2]) { case 0x20: - ptr = ctx->hdr1; + ptr = job->hdr1; break; case 0x21: - ptr = ctx->hdr2; + ptr = job->hdr2; break; case 0x22: - ptr = ctx->hdr3; + ptr = job->hdr3; break; default: - ERROR("Unexpected header chunk: %02x %02x %02x %02x\n", + WARNING("Unexpected header chunk: %02x %02x %02x %02x\n", tmphdr[0], tmphdr[1], tmphdr[2], tmphdr[3]); } memcpy(ptr, tmphdr, sizeof(tmphdr)); - } else if (ptr == ctx->plane) { - uint16_t rows = ctx->plane[10] << 8 | ctx->plane[11]; - uint16_t cols = ctx->plane[8] << 8 | ctx->plane[9]; + } else if (ptr == job->plane) { + uint16_t rows = job->plane[10] << 8 | job->plane[11]; + uint16_t cols = job->plane[8] << 8 | job->plane[9]; remain = rows * cols; /* Allocate buffer for the payload */ - ctx->datalen = 0; - ctx->databuf = malloc(remain); - if (!ctx->databuf) { + job->datalen = 0; + job->databuf = malloc(remain); + if (!job->databuf) { ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_FAILED; + mitsup95d_cleanup_job(job); + return CUPS_BACKEND_RETRY_CURRENT; } /* Read it in */ while (remain) { - i = read(data_fd, ctx->databuf + ctx->datalen, remain); - if (i == 0) + i = read(data_fd, job->databuf + job->datalen, remain); + if (i == 0) { + mitsup95d_cleanup_job(job); return CUPS_BACKEND_CANCEL; - if (i < 0) + } + if (i < 0) { + mitsup95d_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } remain -= i; - ctx->datalen += i; + job->datalen += i; } - } else if (ptr == ctx->ftr) { + } else if (ptr == job->ftr) { + + /* XXX Update unknown header field to match sniffs */ + if (ctx->type == P_MITSU_P95D) { + if (job->hdr1[18] == 0x00) + job->hdr1[18] = 0x01; + } + + /* Update printjob header to reflect number of requested copies */ + if (job->hdr2[13] != 0xff) + job->hdr2[13] = copies; + + *vjob = job; return CUPS_BACKEND_OK; } goto top; } -static int mitsup95d_main_loop(void *vctx, int copies) { +static int mitsup95d_main_loop(void *vctx, const void *vjob) { struct mitsup95d_ctx *ctx = vctx; - uint8_t querycmd[4] = { 0x1b, 0x72, 0x00, 0x00 }; - uint8_t queryresp[9]; - + uint8_t queryresp[QUERYRESP_SIZE_MAX]; int ret; - int num; + + const struct mitsup95d_printjob *job = vjob; if (!ctx) return CUPS_BACKEND_FAILED; + if (!job) + return CUPS_BACKEND_FAILED; - /* P93D is ... special. Windows switches to this halfway through - but it seems be okay to use it everywhere */ - if (ctx->type == P_MITSU_P93D) { - querycmd[2] = 0x03; - } - - /* Update printjob header to reflect number of requested copies */ - if (ctx->hdr2[13] != 0xff) - ctx->hdr2[13] = copies; - - if (ctx->type == P_MITSU_P95D) { - /* XXX Update unknown header field to match sniffs */ - if (ctx->hdr1[18] == 0x00) - ctx->hdr1[18] = 0x01; - } INFO("Waiting for printer idle\n"); /* Query Status to make sure printer is idle */ do { - if ((ret = send_data(ctx->dev, ctx->endp_down, - querycmd, sizeof(querycmd)))) - return CUPS_BACKEND_FAILED; - ret = read_data(ctx->dev, ctx->endp_up, - queryresp, sizeof(queryresp), &num); - if (ret < 0) - return CUPS_BACKEND_FAILED; - if (ctx->type == P_MITSU_P95D && num != 9) { - return CUPS_BACKEND_FAILED; - } else if (ctx->type == P_MITSU_P93D && num != 8) { - return CUPS_BACKEND_FAILED; - } + ret = mitsup95d_get_status(ctx, queryresp); + if (ret) + return ret; if (ctx->type == P_MITSU_P95D) { - if (queryresp[5] & 0x40) { - ERROR("Printer error %02x\n", queryresp[5]); // XXX decode + if (queryresp[6] & 0x40) { + INFO("Printer Status: %s (%02x)\n", mitsup95d_errors(queryresp[6]), queryresp[6]); return CUPS_BACKEND_STOP; } if (queryresp[5] == 0x00) @@ -327,62 +397,47 @@ static int mitsup95d_main_loop(void *vctx, int copies) { INFO("Sending print job\n"); /* Send over Memory Clear, if present */ - if (ctx->mem_clr_present) { + if (job->mem_clr_present) { if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->mem_clr, sizeof(ctx->mem_clr)))) + job->mem_clr, sizeof(job->mem_clr)))) return CUPS_BACKEND_FAILED; } /* Send Job Start */ if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->hdr, sizeof(ctx->hdr)))) + job->hdr, sizeof(job->hdr)))) return CUPS_BACKEND_FAILED; /* Send over headers */ if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->hdr1, sizeof(ctx->hdr1)))) + job->hdr1, sizeof(job->hdr1)))) return CUPS_BACKEND_FAILED; if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->hdr2, sizeof(ctx->hdr2)))) + job->hdr2, sizeof(job->hdr2)))) return CUPS_BACKEND_FAILED; if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->hdr3, sizeof(ctx->hdr3)))) + job->hdr3, sizeof(job->hdr3)))) return CUPS_BACKEND_FAILED; if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->hdr4, ctx->hdr4_len))) + job->hdr4, job->hdr4_len))) return CUPS_BACKEND_FAILED; /* Send plane header and image data */ if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->plane, sizeof(ctx->plane)))) + job->plane, sizeof(job->plane)))) return CUPS_BACKEND_FAILED; if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->databuf, ctx->datalen))) + job->databuf, job->datalen))) return CUPS_BACKEND_FAILED; /* Query Status to sanity-check job */ - if ((ret = send_data(ctx->dev, ctx->endp_down, - querycmd, sizeof(querycmd)))) - return CUPS_BACKEND_FAILED; - ret = read_data(ctx->dev, ctx->endp_up, - queryresp, sizeof(queryresp), &num); - - if (ret < 0) - return CUPS_BACKEND_FAILED; - if (ctx->type == P_MITSU_P95D && num != 9) { - return CUPS_BACKEND_FAILED; - } else if (ctx->type == P_MITSU_P93D && num != 8) { - return CUPS_BACKEND_FAILED; - } - - if (queryresp[5] & 0x40) { - ERROR("Printer error %02x\n", queryresp[5]); // XXX decode - return CUPS_BACKEND_STOP; - } + ret = mitsup95d_get_status(ctx, queryresp); + if (ret) + return ret; if (ctx->type == P_MITSU_P95D) { - if (queryresp[5] & 0x40) { - ERROR("Printer error %02x\n", queryresp[5]); // XXX decode + if (queryresp[6] & 0x40) { + INFO("Printer Status: %s (%02x)\n", mitsup95d_errors(queryresp[6]), queryresp[6]); return CUPS_BACKEND_STOP; } if (queryresp[5] != 0x00) { @@ -391,7 +446,7 @@ static int mitsup95d_main_loop(void *vctx, int copies) { } } else { if (queryresp[6] == 0x45) { - ERROR("Printer error %02x\n", queryresp[7]); + INFO("Printer Status: %s (%02x)\n", mitsup93d_errors(queryresp[7]), queryresp[7]); return CUPS_BACKEND_STOP; } if (queryresp[6] != 0x30) { @@ -402,7 +457,7 @@ static int mitsup95d_main_loop(void *vctx, int copies) { /* Send over Footer */ if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->ftr, sizeof(ctx->ftr)))) + job->ftr, sizeof(job->ftr)))) return CUPS_BACKEND_FAILED; INFO("Waiting for completion\n"); @@ -412,23 +467,13 @@ static int mitsup95d_main_loop(void *vctx, int copies) { sleep(1); /* Query Status */ - if ((ret = send_data(ctx->dev, ctx->endp_down, - querycmd, sizeof(querycmd)))) - return CUPS_BACKEND_FAILED; - ret = read_data(ctx->dev, ctx->endp_up, - queryresp, sizeof(queryresp), &num); - - if (ret < 0) - return CUPS_BACKEND_FAILED; - if (ctx->type == P_MITSU_P95D && num != 9) { - return CUPS_BACKEND_FAILED; - } else if (ctx->type == P_MITSU_P93D && num != 8) { - return CUPS_BACKEND_FAILED; - } + ret = mitsup95d_get_status(ctx, queryresp); + if (ret) + return ret; if (ctx->type == P_MITSU_P95D) { - if (queryresp[5] & 0x40) { - ERROR("Printer error %02x\n", queryresp[5]); // XXX decode + if (queryresp[6] & 0x40) { + INFO("Printer Status: %s (%02x)\n", mitsup95d_errors(queryresp[6]), queryresp[6]); return CUPS_BACKEND_STOP; } if (queryresp[5] == 0x00) @@ -442,7 +487,7 @@ static int mitsup95d_main_loop(void *vctx, int copies) { } } else { if (queryresp[6] == 0x45) { - ERROR("Printer error %02x\n", queryresp[7]); + INFO("Printer Status: %s (%02x)\n", mitsup93d_errors(queryresp[7]), queryresp[7]); return CUPS_BACKEND_STOP; } if (queryresp[6] == 0x30) @@ -460,17 +505,57 @@ static int mitsup95d_main_loop(void *vctx, int copies) { return CUPS_BACKEND_OK; } +static int mitsup95d_dump_status(struct mitsup95d_ctx *ctx) +{ + uint8_t queryresp[QUERYRESP_SIZE_MAX]; + int ret; + + ret = mitsup95d_get_status(ctx, queryresp); + if (ret) + return ret; + + if (ctx->type == P_MITSU_P95D) { + if (queryresp[6] & 0x40) { + INFO("Printer Status: %s (%02x)\n", mitsup95d_errors(queryresp[6]), queryresp[6]); + } else if (queryresp[5] == 0x00) { + INFO("Printer Status: Idle\n"); + } else if (queryresp[5] == 0x02 && queryresp[7] > 0) { + INFO("Printer Status: Printing (%d) copies remaining\n", queryresp[7]); + } + } else { + if (queryresp[6] == 0x45) { + INFO("Printer Status: %s (%02x)\n", mitsup93d_errors(queryresp[7]), queryresp[7]); + } else if (queryresp[6] == 0x30) { + INFO("Printer Status: Idle\n"); + } else if (queryresp[6] == 0x43 && queryresp[7] > 0) { + INFO("Printer Status: Printing (%d) copies remaining\n", queryresp[7]); + } + } + + return CUPS_BACKEND_OK; +} + +static void mitsup95d_cmdline(void) +{ + DEBUG("\t\t[ -s ] # Query status\n"); +} + static int mitsup95d_cmdline_arg(void *vctx, int argc, char **argv) { - struct canonselphy_ctx *ctx = vctx; + struct mitsup95d_ctx *ctx = vctx; int i, j = 0; if (!ctx) return -1; - while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL)) >= 0) { + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "s")) >= 0) { switch(i) { GETOPT_PROCESS_GLOBAL + case 's': + j = mitsup95d_dump_status(ctx); + break; + default: + break; /* Ignore completely */ } if (j) return j; @@ -479,21 +564,58 @@ static int mitsup95d_cmdline_arg(void *vctx, int argc, char **argv) return 0; } +static int mitsup95d_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct mitsup95d_ctx *ctx = vctx; + uint8_t queryresp[QUERYRESP_SIZE_MAX]; + + if (mitsup95d_get_status(ctx, queryresp)) + return CUPS_BACKEND_FAILED; + + ctx->marker.levelnow = -3; + + if (ctx->type == P_MITSU_P95D) { + if (queryresp[6] & 0x40) { + ctx->marker.levelnow = 0; + } + } else { + if (queryresp[6] == 0x45) { + ctx->marker.levelnow = 0; + } + } + + *markers = &ctx->marker; + *count = 1; + + return CUPS_BACKEND_OK; +} + +static const char *mitsup95d_prefixes[] = { + "mitsup9x", // Family driver name + "mitsubishi-p95d", "mitsubishi-p93d", + // backwards compatibility + "mitsup95d", "mitsup93d", + NULL +}; + /* Exported */ struct dyesub_backend mitsup95d_backend = { .name = "Mitsubishi P93D/P95D", - .version = "0.05", - .uri_prefix = "mitsup95d", + .version = "0.11", + .uri_prefixes = mitsup95d_prefixes, .cmdline_arg = mitsup95d_cmdline_arg, + .cmdline_usage = mitsup95d_cmdline, .init = mitsup95d_init, .attach = mitsup95d_attach, .teardown = mitsup95d_teardown, + .cleanup_job = mitsup95d_cleanup_job, .read_parse = mitsup95d_read_parse, .main_loop = mitsup95d_main_loop, + .query_markers = mitsup95d_query_markers, .devices = { - { USB_VID_MITSU, USB_PID_MITSU_P93D, P_MITSU_P93D, ""}, - { USB_VID_MITSU, USB_PID_MITSU_P95D, P_MITSU_P95D, ""}, - { 0, 0, 0, ""} + { USB_VID_MITSU, USB_PID_MITSU_P93D, P_MITSU_P93D, NULL, "mitsubishi-p93d"}, + { USB_VID_MITSU, USB_PID_MITSU_P95D, P_MITSU_P95D, NULL, "mitsubishi-p95d"}, + { 0, 0, 0, NULL, NULL} } }; @@ -641,12 +763,14 @@ struct dyesub_backend mitsup95d_backend = { STATUS query -> 1b 72 00 00 - <- e4 72 00 00 04 XX 00 YY 00 + <- e4 72 00 00 04 XX ZZ YY 00 YY == remaining copies XX == Status? 00 == Idle 02 == Printing + ZZ == Error! + 00 == None 43 == Door open 44 == No Paper 4? == "Button" diff --git a/src/cups/backend_shinkos1245.c b/src/cups/backend_shinkos1245.c index 871dc32..cd0d34c 100644 --- a/src/cups/backend_shinkos1245.c +++ b/src/cups/backend_shinkos1245.c @@ -1,7 +1,7 @@ /* * Shinko/Sinfonia CHC-S1245 CUPS backend -- libusb-1.0 version * - * (c) 2015-2017 Solomon Peachy <pizza@shaftnet.org> + * (c) 2015-2018 Solomon Peachy <pizza@shaftnet.org> * * Low-level documentation was provided by Sinfonia, Inc. Thank you! * @@ -20,11 +20,12 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * + * SPDX-License-Identifier: GPL-2.0+ + * */ #include <stdio.h> @@ -395,12 +396,19 @@ struct shinkos1245_resp_matte { uint8_t code; uint8_t mode; int8_t level; - uint8_t reserved[3]; + uint8_t reserved[4]; } __attribute__((packed)); #define MATTE_MODE_MATTE 0x00 /* Private data structure */ +struct shinkos1245_printjob { + uint8_t *databuf; + int datalen; + + int copies; +}; + struct shinkos1245_ctx { struct libusb_device_handle *dev; uint8_t endp_up; @@ -415,8 +423,8 @@ struct shinkos1245_ctx { int num_medias; int media_8x12; - uint8_t *databuf; - int datalen; + struct marker marker; + int tonecurve; }; @@ -497,6 +505,7 @@ static int shinkos1245_get_media(struct shinkos1245_ctx *ctx) shinkos1245_fill_hdr(&cmd.hdr); memset(cmd.pad, 0, sizeof(cmd.pad)); + ctx->media_8x12 = 0; for (i = 1 ; i <= 3 ; i++) { cmd.cmd[0] = 0x0a | (i << 4); @@ -512,20 +521,21 @@ static int shinkos1245_get_media(struct shinkos1245_ctx *ctx) return -99; } - if (resp.count > NUM_MEDIAS) - resp.count = NUM_MEDIAS; - /* Store media info */ - for (j = 0; j < resp.count ; j++) { + for (j = 0; j < NUM_MEDIAS && ctx->num_medias < resp.count ; j++) { ctx->medias[ctx->num_medias].code = resp.data[j].code; ctx->medias[ctx->num_medias].columns = be16_to_cpu(resp.data[j].columns); ctx->medias[ctx->num_medias].rows = be16_to_cpu(resp.data[j].rows); ctx->medias[ctx->num_medias].type = resp.data[j].type; ctx->medias[ctx->num_medias].print_type = resp.data[j].print_type; ctx->num_medias++; + + if (ctx->medias[i].rows >= 3636) + ctx->media_8x12 = 1; } - if (resp.count < 5) + /* Once we've parsed them all.. we're done */ + if (ctx->num_medias == resp.count) break; } return ret; @@ -566,7 +576,7 @@ static int shinkos1245_set_printerid(struct shinkos1245_ctx *ctx, for (i = 0 ; i < (int)sizeof(cmd.data) ; i++) { if (*id) - cmd.data[i] = (uint8_t) *id; + cmd.data[i] = (uint8_t) *id++; else cmd.data[i] = ' '; } @@ -869,7 +879,8 @@ static char* shinkos1245_tonecurves(int type, int table) } } -static void shinkos1245_dump_status(struct shinkos1245_resp_status *sts) +static void shinkos1245_dump_status(struct shinkos1245_ctx *ctx, + struct shinkos1245_resp_status *sts) { char *detail; switch (sts->print_status) { @@ -895,8 +906,8 @@ static void shinkos1245_dump_status(struct shinkos1245_resp_status *sts) INFO("\tLifetime : %u\n", be32_to_cpu(sts->counters.lifetime)); INFO("\tThermal Head : %u\n", be32_to_cpu(sts->counters.maint)); INFO("\tMedia : %u\n", be32_to_cpu(sts->counters.media)); + INFO("\tRemaining : %u\n", ctx->marker.levelmax - be32_to_cpu(sts->counters.media)); INFO("\tCutter : %u\n", be32_to_cpu(sts->counters.cutter)); - INFO("Versions:\n"); INFO("\tUSB Boot : %u\n", sts->counters.ver_boot); INFO("\tUSB Control : %u\n", sts->counters.ver_ctrl); @@ -934,10 +945,12 @@ static void shinkos1245_dump_status(struct shinkos1245_resp_status *sts) } static void shinkos1245_dump_media(struct shinkos1245_mediadesc *medias, + int media_8x12, int count) { int i; + INFO("Loaded media type: %s\n", media_8x12 ? "8x12" : "8x10"); INFO("Supported print sizes: %d\n", count); for (i = 0 ; i < count ; i++) { @@ -945,7 +958,7 @@ static void shinkos1245_dump_media(struct shinkos1245_mediadesc *medias, medias[i].print_type, medias[i].columns, medias[i].rows, - medias[i].code, medias[i].type); + medias[i].type, medias[i].print_type); } } @@ -1020,6 +1033,7 @@ static int get_tonecurve(struct shinkos1245_ctx *ctx, int type, int table, char if (ret < 0) goto done; ptr += num; + remaining -= num; } /* Issue a tone_end */ @@ -1143,6 +1157,7 @@ static int set_tonecurve(struct shinkos1245_ctx *ctx, int type, int table, char if (ret < 0) goto done; ptr += num; + remaining -= num; } /* Issue a tone_end */ @@ -1214,7 +1229,7 @@ int shinkos1245_cmdline_arg(void *vctx, int argc, char **argv) case 'm': j = shinkos1245_get_media(ctx); if (!j) - shinkos1245_dump_media(ctx->medias, ctx->num_medias); + shinkos1245_dump_media(ctx->medias, ctx->media_8x12, ctx->num_medias); break; case 'R': j = shinkos1245_reset(ctx); @@ -1223,7 +1238,7 @@ int shinkos1245_cmdline_arg(void *vctx, int argc, char **argv) struct shinkos1245_resp_status sts; j = shinkos1245_get_status(ctx, &sts); if (!j) - shinkos1245_dump_status(&sts); + shinkos1245_dump_status(ctx, &sts); break; } case 'u': { @@ -1267,29 +1282,54 @@ static void *shinkos1245_init(void) return ctx; } -static void shinkos1245_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int shinkos1245_attach(void *vctx, struct libusb_device_handle *dev, int type, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct shinkos1245_ctx *ctx = vctx; - struct libusb_device *device; - struct libusb_device_descriptor desc; ctx->dev = dev; ctx->endp_up = endp_up; ctx->endp_down = endp_down; - - device = libusb_get_device(dev); - libusb_get_device_descriptor(device, &desc); - - ctx->type = lookup_printer_type(&shinkos1245_backend, - desc.idVendor, desc.idProduct); + ctx->type = type; /* Ensure jobid is sane */ ctx->jobid = jobid & 0x7f; if (!ctx->jobid) ctx->jobid++; + + if (test_mode < TEST_MODE_NOATTACH) { + /* Query Media */ + if (shinkos1245_get_media(ctx)) + return CUPS_BACKEND_FAILED; + if (!ctx->num_medias) { + ERROR("Media Query Error\n"); + return CUPS_BACKEND_FAILED; + } + } else { + int media_code = 1; + if (getenv("MEDIA_CODE")) + media_code = atoi(getenv("MEDIA_CODE")); + + ctx->media_8x12 = media_code; + ctx->num_medias = 0; + } + ctx->marker.color = "#00FFFF#FF00FF#FFFF00"; + ctx->marker.name = ctx->media_8x12 ? "8x12" : "8x10"; + ctx->marker.levelmax = ctx->media_8x12 ? 230 : 280; + ctx->marker.levelnow = -2; + + return CUPS_BACKEND_OK; } +static void shinkos1245_cleanup_job(const void *vjob) +{ + const struct shinkos1245_printjob *job = vjob; + + if (job->databuf) + free(job->databuf); + + free((void*)job); +} static void shinkos1245_teardown(void *vctx) { struct shinkos1245_ctx *ctx = vctx; @@ -1297,31 +1337,43 @@ static void shinkos1245_teardown(void *vctx) { if (!ctx) return; - if (ctx->databuf) - free(ctx->databuf); - free(ctx); } -static int shinkos1245_read_parse(void *vctx, int data_fd) { +static int shinkos1245_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { struct shinkos1245_ctx *ctx = vctx; int ret; uint8_t tmpbuf[4]; + struct shinkos1245_printjob *job = NULL; + if (!ctx) return CUPS_BACKEND_FAILED; + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; + } + memset(job, 0, sizeof(*job)); + job->copies = copies; + /* Read in then validate header */ ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr)); - if (ret < 0) + if (ret < 0) { + shinkos1245_cleanup_job(job); return ret; - if (ret < 0 || ret != sizeof(ctx->hdr)) + } + if (ret != sizeof(ctx->hdr)) { + shinkos1245_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } if (le32_to_cpu(ctx->hdr.len1) != 0x10 || le32_to_cpu(ctx->hdr.len2) != 0x64 || le32_to_cpu(ctx->hdr.dpi) != 300) { ERROR("Unrecognized header data format!\n"); + shinkos1245_cleanup_job(job); return CUPS_BACKEND_CANCEL; } @@ -1329,6 +1381,7 @@ static int shinkos1245_read_parse(void *vctx, int data_fd) { if(ctx->hdr.model != 1245) { ERROR("Unrecognized printer (%u)!\n", ctx->hdr.model); + shinkos1245_cleanup_job(job); return CUPS_BACKEND_CANCEL; } @@ -1343,27 +1396,24 @@ static int shinkos1245_read_parse(void *vctx, int data_fd) { ctx->hdr.copies = le32_to_cpu(ctx->hdr.copies); /* Allocate space */ - if (ctx->databuf) { - free(ctx->databuf); - ctx->databuf = NULL; - } - - ctx->datalen = ctx->hdr.rows * ctx->hdr.columns * 3; - ctx->databuf = malloc(ctx->datalen); - if (!ctx->databuf) { + job->datalen = ctx->hdr.rows * ctx->hdr.columns * 3; + job->databuf = malloc(job->datalen); + if (!job->databuf) { ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_FAILED; + shinkos1245_cleanup_job(job); + return CUPS_BACKEND_RETRY_CURRENT; } { - int remain = ctx->datalen; - uint8_t *ptr = ctx->databuf; + int remain = job->datalen; + uint8_t *ptr = job->databuf; do { ret = read(data_fd, ptr, remain); if (ret < 0) { ERROR("Read failed (%d/%d/%d)\n", - ret, remain, ctx->datalen); + ret, remain, job->datalen); perror("ERROR: Read failed"); + shinkos1245_cleanup_job(job); return ret; } ptr += ret; @@ -1377,6 +1427,7 @@ static int shinkos1245_read_parse(void *vctx, int data_fd) { ERROR("Read failed (%d/%d/%d)\n", ret, 4, 4); perror("ERROR: Read failed"); + shinkos1245_cleanup_job(job); return ret; } if (tmpbuf[0] != 0x04 || @@ -1384,29 +1435,30 @@ static int shinkos1245_read_parse(void *vctx, int data_fd) { tmpbuf[2] != 0x02 || tmpbuf[3] != 0x01) { ERROR("Unrecognized footer data format!\n"); + shinkos1245_cleanup_job(job); return CUPS_BACKEND_FAILED; } + *vjob = job; return CUPS_BACKEND_OK; } -static int shinkos1245_main_loop(void *vctx, int copies) { +static int shinkos1245_main_loop(void *vctx, const void *vjob) { struct shinkos1245_ctx *ctx = vctx; int i, num, last_state = -1, state = S_IDLE; struct shinkos1245_resp_status status1, status2; - /* Query Media information if necessary */ - if (!ctx->num_medias) - shinkos1245_get_media(ctx); - if (!ctx->num_medias) { - ERROR("Media Query Error\n"); + const struct shinkos1245_printjob *job = vjob; + + if (!ctx) return CUPS_BACKEND_FAILED; - } + if (!job) + return CUPS_BACKEND_FAILED; + + copies = job->copies; + /* Make sure print size is supported */ for (i = 0 ; i < ctx->num_medias ; i++) { - if (ctx->medias[i].rows >= 3636) - ctx->media_8x12 = 1; - if (ctx->hdr.media == ctx->medias[i].code && ctx->hdr.method == ctx->medias[i].print_type && ctx->hdr.rows == ctx->medias[i].rows && @@ -1422,13 +1474,6 @@ static int shinkos1245_main_loop(void *vctx, int copies) { if (copies > 9999) // XXX test against remaining media? copies = 9999; - /* Tell CUPS about the consumables we report */ - ATTR("marker-colors=#00FFFF#FF00FF#FFFF00\n"); - ATTR("marker-high-levels=100\n"); - ATTR("marker-low-levels=10\n"); - ATTR("marker-names='%s'\n", ctx->media_8x12? "8x12" : "8x10"); - ATTR("marker-types=ribbonWax\n"); - top: if (state != last_state) { if (dyesub_debug) @@ -1452,14 +1497,6 @@ top: if (status1.state.status1 == STATE_STATUS1_ERROR) goto printer_error; - /* Work out the remaining media percentage */ - { - int remain = ctx->media_8x12 ? 230 : 280; - - remain = (remain - be32_to_cpu(status1.counters.media)) * 100 / remain; - ATTR("marker-levels=%d\n", remain); - } - last_state = state; fflush(stderr); @@ -1515,7 +1552,7 @@ top: if (i < 0) goto printer_error; if (i > 0) { - INFO("Can't set matte intensity when printing in progres...\n"); + INFO("Can't set matte intensity when printing in progress...\n"); state = S_IDLE; sleep(1); break; @@ -1561,7 +1598,7 @@ top: /* Send over data */ INFO("Sending image data to printer\n"); if ((i = send_data(ctx->dev, ctx->endp_down, - ctx->databuf, ctx->datalen))) + job->databuf, job->datalen))) return CUPS_BACKEND_FAILED; INFO("Waiting for printer to acknowledge completion\n"); @@ -1588,11 +1625,6 @@ top: INFO("Print complete\n"); - if (copies && --copies) { - state = S_IDLE; - goto top; - } - return CUPS_BACKEND_OK; printer_error: @@ -1634,25 +1666,53 @@ static int shinkos1245_query_serno(struct libusb_device_handle *dev, uint8_t end return CUPS_BACKEND_OK; } +static int shinkos1245_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct shinkos1245_ctx *ctx = vctx; + struct shinkos1245_resp_status status; + + /* Query status */ + if (shinkos1245_get_status(ctx, &status)) + return CUPS_BACKEND_FAILED; + + ctx->marker.levelnow = ctx->marker.levelmax - be32_to_cpu(status.counters.media); + + *markers = &ctx->marker; + *count = 1; + + return CUPS_BACKEND_OK; +} + /* Exported */ #define USB_VID_SHINKO 0x10CE #define USB_PID_SHINKO_S1245 0x0007 +static const char *shinkos1245_prefixes[] = { + "shinko-chcs1245", + // extra + "sinfonia-chcs1245", + // backwards-compatibility + "shinkos1245", + NULL +}; + struct dyesub_backend shinkos1245_backend = { - .name = "Shinko/Sinfonia CHC-S1245", - .version = "0.13WIP", - .uri_prefix = "shinkos1245", + .name = "Shinko/Sinfonia CHC-S1245/E1", + .version = "0.26", + .uri_prefixes = shinkos1245_prefixes, .cmdline_usage = shinkos1245_cmdline, .cmdline_arg = shinkos1245_cmdline_arg, .init = shinkos1245_init, .attach = shinkos1245_attach, .teardown = shinkos1245_teardown, + .cleanup_job = shinkos1245_cleanup_job, .read_parse = shinkos1245_read_parse, .main_loop = shinkos1245_main_loop, .query_serno = shinkos1245_query_serno, + .query_markers = shinkos1245_query_markers, .devices = { - { USB_VID_SHINKO, USB_PID_SHINKO_S1245, P_SHINKO_S1245, ""}, - { 0, 0, 0, ""} + { USB_VID_SHINKO, USB_PID_SHINKO_S1245, P_SHINKO_S1245, NULL, "shinko-chcs1245"}, + { 0, 0, 0, NULL, NULL} } }; diff --git a/src/cups/backend_shinkos2145.c b/src/cups/backend_shinkos2145.c index c270d3c..749b59a 100644 --- a/src/cups/backend_shinkos2145.c +++ b/src/cups/backend_shinkos2145.c @@ -1,7 +1,7 @@ /* * Shinko/Sinfonia CHC-S2145 CUPS backend -- libusb-1.0 version * - * (c) 2013-2016 Solomon Peachy <pizza@shaftnet.org> + * (c) 2013-2018 Solomon Peachy <pizza@shaftnet.org> * * Development of this backend was sponsored by: * @@ -22,11 +22,12 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * + * SPDX-License-Identifier: GPL-2.0+ + * */ #include <stdio.h> @@ -90,25 +91,6 @@ struct s2145_printjob_hdr { uint32_t unk21; } __attribute__((packed)); -/* Private data structure */ -struct shinkos2145_ctx { - struct libusb_device_handle *dev; - uint8_t endp_up; - uint8_t endp_down; - int type; - - uint8_t jobid; - - struct s2145_printjob_hdr hdr; - - uint8_t *databuf; - int datalen; - - uint16_t last_donor; - uint16_t last_remain; - uint16_t media_prints; -}; - /* Structs for printer */ struct s2145_cmd_hdr { uint16_t cmd; @@ -163,7 +145,7 @@ static char *cmd_names(uint16_t v) { default: return "Unknown Command"; } -}; +} struct s2145_print_cmd { struct s2145_cmd_hdr hdr; @@ -802,6 +784,29 @@ struct s2145_getunique_resp { uint8_t data[24]; /* Not necessarily all used. */ } __attribute__((packed)); +/* Private data structure */ +struct shinkos2145_printjob { + struct s2145_printjob_hdr hdr; + + uint8_t *databuf; + int datalen; + int copies; +}; + +struct shinkos2145_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + + uint8_t jobid; + + int type; + + struct s2145_mediainfo_resp media; + struct marker marker; + int media_code; +}; + #define READBACK_LEN 128 /* Needs to be larger than largest response hdr */ #define CMDBUF_LEN sizeof(struct s2145_print_cmd) @@ -972,27 +977,10 @@ static int get_errorlog(struct shinkos2145_ctx *ctx) return 0; } -static int get_mediainfo(struct shinkos2145_ctx *ctx) +static void dump_mediainfo(struct s2145_mediainfo_resp *resp) { - 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: %u entries:\n", resp->count); for (i = 0 ; i < resp->count ; i++) { INFO(" %02d: C 0x%02x (%s), %04ux%04u, M 0x%02x (%s), P 0x%02x (%s)\n", i, @@ -1002,7 +990,6 @@ static int get_mediainfo(struct shinkos2145_ctx *ctx) 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) @@ -1215,8 +1202,14 @@ static int get_tonecurve(struct shinkos2145_ctx *ctx, int type, char *fname) /* Byteswap appropriately */ curves[i] = cpu_to_be16(le16_to_cpu(curves[i])); } - write(tc_fd, curves, UPDATE_SIZE * sizeof(uint16_t)); + ret = write(tc_fd, curves, UPDATE_SIZE * sizeof(uint16_t)); + if (ret < 0) + ERROR("Can't write curve file\n"); + else + ret = 0; + close(tc_fd); + } done: @@ -1350,7 +1343,7 @@ int shinkos2145_cmdline_arg(void *vctx, int argc, char **argv) j = set_tonecurve(ctx, TONECURVE_CURRENT, optarg); break; case 'm': - j = get_mediainfo(ctx); + dump_mediainfo(&ctx->media); break; case 'r': j = reset_curve(ctx, RESET_USER_CURVE); @@ -1394,30 +1387,73 @@ static void *shinkos2145_init(void) return ctx; } -static void shinkos2145_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int shinkos2145_attach(void *vctx, struct libusb_device_handle *dev, int type, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct shinkos2145_ctx *ctx = vctx; - struct libusb_device *device; - struct libusb_device_descriptor desc; + int i; ctx->dev = dev; ctx->endp_up = endp_up; ctx->endp_down = endp_down; - - device = libusb_get_device(dev); - libusb_get_device_descriptor(device, &desc); - - ctx->type = lookup_printer_type(&shinkos2145_backend, - desc.idVendor, desc.idProduct); + ctx->type = type; /* Ensure jobid is sane */ ctx->jobid = (jobid & 0x7f); if (!ctx->jobid) ctx->jobid++; - /* Initialize donor */ - ctx->last_donor = ctx->last_remain = ctx->media_prints = 65535; + int media_prints = 65536; + if (test_mode < TEST_MODE_NOATTACH) { + /* Query Media */ + struct s2145_cmd_hdr cmd; + struct s2145_mediainfo_resp *resp = (struct s2145_mediainfo_resp *) rdbuf; + int num = 0; + + cmd.cmd = cpu_to_le16(S2145_CMD_MEDIAINFO); + cmd.len = cpu_to_le16(0); + + if (s2145_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*resp), + &num)) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.cmd)); + return CUPS_BACKEND_FAILED; + } + memcpy(&ctx->media, resp, sizeof(ctx->media)); + + /* Figure out the media type... */ + for (i = 0 ; i < ctx->media.count ; i++) { + if (print_counts(ctx->media.items[i].code) < media_prints) { + media_prints = print_counts(ctx->media.items[i].code); + ctx->media_code = ctx->media.items[i].code; + } + } + } else { + int media_code = PRINT_MEDIA_6x9; + if (getenv("MEDIA_CODE")) + media_code = atoi(getenv("MEDIA_CODE")); + + media_prints = 680; + ctx->media_code = media_code; + } + + ctx->marker.color = "#00FFFF#FF00FF#FFFF00"; + ctx->marker.name = print_sizes(ctx->media_code); + ctx->marker.levelmax = media_prints; + ctx->marker.levelnow = -2; + + return CUPS_BACKEND_OK; +} + +static void shinkos2145_cleanup_job(const void *vjob) +{ + const struct shinkos2145_printjob *job = vjob; + + if (job->databuf) + free(job->databuf); + + free((void*)job); } static void shinkos2145_teardown(void *vctx) { @@ -1426,64 +1462,66 @@ static void shinkos2145_teardown(void *vctx) { if (!ctx) return; - if (ctx->databuf) - free(ctx->databuf); - free(ctx); } -static int shinkos2145_read_parse(void *vctx, int data_fd) { +static int shinkos2145_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { struct shinkos2145_ctx *ctx = vctx; int ret; uint8_t tmpbuf[4]; + struct shinkos2145_printjob *job = NULL; + if (!ctx) return CUPS_BACKEND_FAILED; + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; + } + memset(job, 0, sizeof(*job)); + job->copies = copies; // XXX hdr.copies + /* Read in then validate header */ - ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr)); - if (ret < 0 || ret != sizeof(ctx->hdr)) { + ret = read(data_fd, &job->hdr, sizeof(job->hdr)); + if (ret < 0 || ret != sizeof(job->hdr)) { if (ret == 0) return CUPS_BACKEND_CANCEL; ERROR("Read failed (%d/%d/%d)\n", - ret, 0, (int)sizeof(ctx->hdr)); + ret, 0, (int)sizeof(job->hdr)); perror("ERROR: Read failed"); return ret; } - if (le32_to_cpu(ctx->hdr.len1) != 0x10 || - le32_to_cpu(ctx->hdr.len2) != 0x64 || - le32_to_cpu(ctx->hdr.dpi) != 300) { + if (le32_to_cpu(job->hdr.len1) != 0x10 || + le32_to_cpu(job->hdr.len2) != 0x64 || + le32_to_cpu(job->hdr.dpi) != 300) { ERROR("Unrecognized header data format!\n"); return CUPS_BACKEND_CANCEL; } - if (le32_to_cpu(ctx->hdr.model) != 2145) { - ERROR("Unrecognized printer (%u)!\n", le32_to_cpu(ctx->hdr.model)); + if (le32_to_cpu(job->hdr.model) != 2145) { + ERROR("Unrecognized printer (%u)!\n", le32_to_cpu(job->hdr.model)); return CUPS_BACKEND_CANCEL; } - if (ctx->databuf) { - free(ctx->databuf); - ctx->databuf = NULL; - } - - ctx->datalen = le32_to_cpu(ctx->hdr.rows) * le32_to_cpu(ctx->hdr.columns) * 3; - ctx->databuf = malloc(ctx->datalen); - if (!ctx->databuf) { + job->datalen = le32_to_cpu(job->hdr.rows) * le32_to_cpu(job->hdr.columns) * 3; + job->databuf = malloc(job->datalen); + if (!job->databuf) { ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_FAILED; + return CUPS_BACKEND_RETRY_CURRENT; } { - int remain = ctx->datalen; - uint8_t *ptr = ctx->databuf; + int remain = job->datalen; + uint8_t *ptr = job->databuf; do { ret = read(data_fd, ptr, remain); if (ret < 0) { ERROR("Read failed (%d/%d/%d)\n", - ret, remain, ctx->datalen); + ret, remain, job->datalen); perror("ERROR: Read failed"); return ret; } @@ -1508,10 +1546,12 @@ static int shinkos2145_read_parse(void *vctx, int data_fd) { return CUPS_BACKEND_FAILED; } + *vjob = job; + return CUPS_BACKEND_OK; } -static int shinkos2145_main_loop(void *vctx, int copies) { +static int shinkos2145_main_loop(void *vctx, const void *vjob) { struct shinkos2145_ctx *ctx = vctx; int ret, num; @@ -1523,49 +1563,22 @@ static int shinkos2145_main_loop(void *vctx, int copies) { struct s2145_cmd_hdr *cmd = (struct s2145_cmd_hdr *) cmdbuf;; struct s2145_print_cmd *print = (struct s2145_print_cmd *) cmdbuf; struct s2145_status_resp *sts = (struct s2145_status_resp *) rdbuf; - struct s2145_mediainfo_resp *media = (struct s2145_mediainfo_resp *) rdbuf; - /* Send Media Query */ - memset(cmdbuf, 0, CMDBUF_LEN); - cmd->cmd = cpu_to_le16(S2145_CMD_MEDIAINFO); - cmd->len = cpu_to_le16(0); - - if ((ret = s2145_do_cmd(ctx, - cmdbuf, sizeof(*cmd), - sizeof(*media), - &num)) < 0) { - ERROR("Failed to execute %s command\n", cmd_names(cmd->cmd)); - return CUPS_BACKEND_FAILED; - } - - if (le16_to_cpu(media->hdr.payload_len) != (sizeof(struct s2145_mediainfo_resp) - sizeof(struct s2145_status_hdr))) - return CUPS_BACKEND_FAILED; + struct shinkos2145_printjob *job = (struct shinkos2145_printjob*) vjob; /* Validate print sizes */ - for (i = 0; i < media->count ; i++) { - /* Figure out the media type... */ - int media_prints = print_counts(media->items[i].code); - if (media_prints < ctx->media_prints) - ctx->media_prints = media_prints; - + for (i = 0; i < ctx->media.count ; i++) { /* Look for matching media */ - if (le16_to_cpu(media->items[i].columns) == cpu_to_le16(le32_to_cpu(ctx->hdr.columns)) && - le16_to_cpu(media->items[i].rows) == cpu_to_le16(le32_to_cpu(ctx->hdr.rows)) && - media->items[i].print_type == le32_to_cpu(ctx->hdr.method)) + if (le16_to_cpu(ctx->media.items[i].columns) == cpu_to_le16(le32_to_cpu(job->hdr.columns)) && + le16_to_cpu(ctx->media.items[i].rows) == cpu_to_le16(le32_to_cpu(job->hdr.rows)) && + ctx->media.items[i].print_type == le32_to_cpu(job->hdr.method)) break; } - if (i == media->count) { + if (i == ctx->media.count) { ERROR("Incorrect media loaded for print!\n"); return CUPS_BACKEND_HOLD; } - /* Tell CUPS about the consumables we report */ - ATTR("marker-colors=#00FFFF#FF00FF#FFFF00\n"); - ATTR("marker-high-levels=100\n"); - ATTR("marker-low-levels=10\n"); - ATTR("marker-names='Color'\n"); - ATTR("marker-types=ribbonWax\n"); - // XXX check copies against remaining media! top: @@ -1588,23 +1601,14 @@ top: } if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) { - uint16_t donor, remain; - memcpy(rdbuf2, rdbuf, READBACK_LEN); INFO("Printer Status: 0x%02x (%s)\n", sts->hdr.status, status_str(sts->hdr.status)); - /* Guessimate a percentage for the remaining media */ - donor = le32_to_cpu(sts->count_ribbon_left) * 100 / ctx->media_prints; - if (donor != ctx->last_donor) { - ctx->last_donor = donor; - ATTR("marker-levels=%d\n", donor); - } - remain = le32_to_cpu(sts->count_ribbon_left); - if (remain != ctx->last_remain) { - ctx->last_remain = remain; - ATTR("marker-message=\"%d prints remaining on ribbon\"\n", remain); + if (ctx->marker.levelnow != (int)sts->count_ribbon_left) { + ctx->marker.levelnow = sts->count_ribbon_left; + dump_markers(&ctx->marker, 1, 0); } if (sts->hdr.result != RESULT_SUCCESS) @@ -1647,12 +1651,12 @@ top: 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); + print->count = cpu_to_le16(job->copies); + print->columns = cpu_to_le16(le32_to_cpu(job->hdr.columns)); + print->rows = cpu_to_le16(le32_to_cpu(job->hdr.rows)); + print->media = le32_to_cpu(job->hdr.media); + print->mode = le32_to_cpu(job->hdr.mode); + print->method = le32_to_cpu(job->hdr.method); if ((ret = s2145_do_cmd(ctx, cmdbuf, sizeof(*print), @@ -1675,7 +1679,7 @@ top: INFO("Sending image data to printer\n"); if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->databuf, ctx->datalen))) + job->databuf, job->datalen))) return CUPS_BACKEND_FAILED; INFO("Waiting for printer to acknowledge completion\n"); @@ -1687,7 +1691,8 @@ top: INFO("Fast return mode enabled.\n"); state = S_FINISHED; } else if (sts->hdr.status == STATUS_READY || - sts->hdr.status == STATUS_FINISHED) { + sts->hdr.status == STATUS_FINISHED || + sts->hdr.status == ERROR_PRINTER) { state = S_FINISHED; } break; @@ -1698,6 +1703,16 @@ top: if (state != S_FINISHED) goto top; + if (sts->hdr.status == ERROR_PRINTER) { + if(sts->hdr.error == ERROR_NONE) + sts->hdr.error = sts->hdr.status; + INFO(" Error 0x%02x (%s) 0x%02x/0x%02x (%s)\n", + sts->hdr.error, + error_str(sts->hdr.error), + sts->hdr.printer_major, + sts->hdr.printer_minor, error_codes(sts->hdr.printer_major, sts->hdr.printer_minor)); + } + INFO("Print complete\n"); return CUPS_BACKEND_OK; @@ -1747,25 +1762,63 @@ static int shinkos2145_query_serno(struct libusb_device_handle *dev, uint8_t end return CUPS_BACKEND_OK; } +static int shinkos2145_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct shinkos2145_ctx *ctx = vctx; + struct s2145_cmd_hdr cmd; + struct s2145_status_resp *sts = (struct s2145_status_resp *) rdbuf; + int num; + + /* Query Status */ + cmd.cmd = cpu_to_le16(S2145_CMD_STATUS); + cmd.len = cpu_to_le16(0); + + if (s2145_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*sts), + &num)) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.cmd)); + return CUPS_BACKEND_FAILED; + } + + ctx->marker.levelnow = ctx->marker.levelmax - le32_to_cpu(sts->count_ribbon_left); + + *markers = &ctx->marker; + *count = 1; + + return CUPS_BACKEND_OK; +} + /* Exported */ #define USB_VID_SHINKO 0x10CE #define USB_PID_SHINKO_S2145 0x000E +static const char *shinkos2145_prefixes[] = { + "shinko-chcs2145", + // extras + "sinfonia-chcs2145", + // Backwards compatibility + "shinkos2145", + NULL +}; + struct dyesub_backend shinkos2145_backend = { - .name = "Shinko/Sinfonia CHC-S2145", - .version = "0.48", - .uri_prefix = "shinkos2145", + .name = "Shinko/Sinfonia CHC-S2145/S2", + .version = "0.55", + .uri_prefixes = shinkos2145_prefixes, .cmdline_usage = shinkos2145_cmdline, .cmdline_arg = shinkos2145_cmdline_arg, .init = shinkos2145_init, .attach = shinkos2145_attach, .teardown = shinkos2145_teardown, + .cleanup_job = shinkos2145_cleanup_job, .read_parse = shinkos2145_read_parse, .main_loop = shinkos2145_main_loop, .query_serno = shinkos2145_query_serno, + .query_markers = shinkos2145_query_markers, .devices = { - { USB_VID_SHINKO, USB_PID_SHINKO_S2145, P_SHINKO_S2145, ""}, - { 0, 0, 0, ""} + { USB_VID_SHINKO, USB_PID_SHINKO_S2145, P_SHINKO_S2145, NULL, "shinko-chc2145"}, + { 0, 0, 0, NULL, NULL} } }; diff --git a/src/cups/backend_shinkos6145.c b/src/cups/backend_shinkos6145.c index b9d782a..e795831 100644 --- a/src/cups/backend_shinkos6145.c +++ b/src/cups/backend_shinkos6145.c @@ -1,7 +1,7 @@ /* * Shinko/Sinfonia CHC-S6145 CUPS backend -- libusb-1.0 version * - * (c) 2015-2016 Solomon Peachy <pizza@shaftnet.org> + * (c) 2015-2018 Solomon Peachy <pizza@shaftnet.org> * * Low-level documentation was provided by Sinfonia. Thank you! * @@ -20,8 +20,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * @@ -33,6 +32,8 @@ * You must still adhere to all other terms of the license to this program * (ie GPLv2) and the license of the libS6145ImageProcess library. * + * SPDX-License-Identifier: GPL-2.0+ with special exception + * */ #include <stdio.h> @@ -259,43 +260,6 @@ struct shinkos6145_correctionparam { uint8_t pad[3948]; // @12436, null. } __attribute__((packed)); /* 16384 bytes */ -/* Private data structure */ -struct shinkos6145_ctx { - struct libusb_device_handle *dev; - uint8_t endp_up; - uint8_t endp_down; - int type; - - uint8_t jobid; - - struct s6145_printjob_hdr hdr; - - uint8_t image_avg[3]; /* CMY */ - - uint8_t *databuf; - size_t datalen; - - uint8_t ribbon_type; - uint8_t input_ymc; - - uint16_t last_donor; - uint16_t last_remain; - uint16_t last_ribbon; - - uint8_t *eeprom; - size_t eepromlen; - - void *dl_handle; - ImageProcessingFN ImageProcessing; - ImageAvrCalcFN ImageAvrCalc; - - struct shinkos6145_correctionparam *corrdata; - size_t corrdatalen; -}; - -static int shinkos6145_get_imagecorr(struct shinkos6145_ctx *ctx); -static int shinkos6145_get_eeprom(struct shinkos6145_ctx *ctx); - /* Structs for printer */ struct s6145_cmd_hdr { uint16_t cmd; @@ -1115,6 +1079,43 @@ struct s6145_imagecorr_data { uint8_t data[16]; } __attribute__((packed)); +/* Private data structure */ +struct shinkos6145_printjob { + uint8_t *databuf; + size_t datalen; + + struct s6145_printjob_hdr hdr; + + int copies; +}; + +struct shinkos6145_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + int type; + + uint8_t jobid; + + uint8_t image_avg[3]; /* CMY */ + + struct marker marker; + + struct s6145_mediainfo_resp media; + + uint8_t *eeprom; + size_t eepromlen; + + void *dl_handle; + ImageProcessingFN ImageProcessing; + ImageAvrCalcFN ImageAvrCalc; + + struct shinkos6145_correctionparam *corrdata; + size_t corrdatalen; +}; + +static int shinkos6145_get_imagecorr(struct shinkos6145_ctx *ctx); +static int shinkos6145_get_eeprom(struct shinkos6145_ctx *ctx); static int get_param(struct shinkos6145_ctx *ctx, int target, uint32_t *param); #define READBACK_LEN 512 /* Needs to be larger than largest response hdr */ @@ -1234,7 +1235,7 @@ static int get_status(struct shinkos6145_ctx *ctx) INFO("Head Distance: %08u inches\n", le32_to_cpu(resp2->head_distance)); /* Query various params */ - if(ctx->type == P_SHINKO_S6145D) { + if (ctx->type == P_SHINKO_S6145D) { if ((ret = get_param(ctx, PARAM_REGION_CODE, &val))) { ERROR("Failed to execute command\n"); return ret; @@ -1355,27 +1356,10 @@ static int get_errorlog(struct shinkos6145_ctx *ctx) return 0; } -static int get_mediainfo(struct shinkos6145_ctx *ctx) +static void dump_mediainfo(struct s6145_mediainfo_resp *resp) { - struct s6145_cmd_hdr cmd; - struct s6145_mediainfo_resp *resp = (struct s6145_mediainfo_resp *) rdbuf; - int ret, num = 0; int i; - cmd.cmd = cpu_to_le16(S6145_CMD_MEDIAINFO); - cmd.len = cpu_to_le16(0); - - if ((ret = s6145_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 s6145_mediainfo_resp) - sizeof(struct s6145_status_hdr))) - return -2; - INFO("Loaded Media Type: %s\n", print_ribbons(resp->ribbon)); INFO("Supported Print Sizes: %u entries:\n", resp->count); for (i = 0 ; i < resp->count ; i++) { @@ -1385,7 +1369,6 @@ static int get_mediainfo(struct shinkos6145_ctx *ctx) le16_to_cpu(resp->items[i].rows), resp->items[i].print_method, print_methods(resp->items[i].print_method)); } - return 0; } static int cancel_job(struct shinkos6145_ctx *ctx, char *str) @@ -1865,7 +1848,7 @@ int shinkos6145_cmdline_arg(void *vctx, int argc, char **argv) j = set_tonecurve(ctx, TONECURVE_CURRENT, optarg); break; case 'm': - j = get_mediainfo(ctx); + dump_mediainfo(&ctx->media); break; case 'q': j = shinkos6145_dump_eeprom(ctx, optarg); @@ -1909,22 +1892,15 @@ static void *shinkos6145_init(void) return ctx; } -static void shinkos6145_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int shinkos6145_attach(void *vctx, struct libusb_device_handle *dev, int type, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct shinkos6145_ctx *ctx = vctx; - struct libusb_device *device; - struct libusb_device_descriptor desc; ctx->dev = dev; ctx->endp_up = endp_up; ctx->endp_down = endp_down; - - device = libusb_get_device(dev); - libusb_get_device_descriptor(device, &desc); - - ctx->type = lookup_printer_type(&shinkos6145_backend, - desc.idVendor, desc.idProduct); + ctx->type = type; /* Attempt to open the library */ #if defined(WITH_DYNAMIC) @@ -1952,8 +1928,44 @@ static void shinkos6145_attach(void *vctx, struct libusb_device_handle *dev, /* Ensure jobid is sane */ ctx->jobid = (jobid & 0x7f) + 1; - /* Initialize donor */ - ctx->last_donor = ctx->last_remain = 65535; + if (test_mode < TEST_MODE_NOATTACH) { + /* Query Media */ + struct s6145_mediainfo_resp *resp = (struct s6145_mediainfo_resp *) rdbuf; + struct s6145_cmd_hdr cmd; + int num; + + if (s6145_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*resp), + &num)) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.cmd)); + return CUPS_BACKEND_FAILED; + } + memcpy(&ctx->media, resp, sizeof(*resp)); + } else { + int media_code = RIBBON_6x8; + if (getenv("MEDIA_CODE")) + media_code = atoi(getenv("MEDIA_CODE")); + + ctx->media.ribbon = media_code; + } + + ctx->marker.color = "#00FFFF#FF00FF#FFFF00"; + ctx->marker.name = print_ribbons(ctx->media.ribbon); + ctx->marker.levelmax = ribbon_sizes(ctx->media.ribbon); + ctx->marker.levelnow = -2; + + return CUPS_BACKEND_OK; +} + +static void shinkos6145_cleanup_job(const void *vjob) +{ + const struct shinkos6145_printjob *job = vjob; + + if (job->databuf) + free(job->databuf); + + free((void*)job); } static void shinkos6145_teardown(void *vctx) { @@ -1962,8 +1974,6 @@ static void shinkos6145_teardown(void *vctx) { if (!ctx) return; - if (ctx->databuf) - free(ctx->databuf); if (ctx->eeprom) free(ctx->eeprom); if (ctx->corrdata) @@ -1976,7 +1986,9 @@ static void shinkos6145_teardown(void *vctx) { free(ctx); } -static void lib6145_calc_avg(struct shinkos6145_ctx *ctx, uint16_t rows, uint16_t cols) +static void lib6145_calc_avg(struct shinkos6145_ctx *ctx, + const struct shinkos6145_printjob *job, + uint16_t rows, uint16_t cols) { uint32_t plane, i, planelen; planelen = rows * cols; @@ -1985,7 +1997,7 @@ static void lib6145_calc_avg(struct shinkos6145_ctx *ctx, uint16_t rows, uint16_ uint64_t sum = 0; for (i = 0 ; i < planelen ; i++) { - sum += ctx->databuf[(planelen * plane) + i]; + sum += job->databuf[(planelen * plane) + i]; } ctx->image_avg[plane] = (sum / planelen); } @@ -2066,35 +2078,72 @@ static void lib6145_process_image(uint8_t *src, uint16_t *dest, } } -static int shinkos6145_read_parse(void *vctx, int data_fd) { +static int shinkos6145_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { struct shinkos6145_ctx *ctx = vctx; int ret; uint8_t tmpbuf[4]; + uint8_t input_ymc; + + struct shinkos6145_printjob *job = NULL; if (!ctx) return CUPS_BACKEND_FAILED; + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; + } + memset(job, 0, sizeof(*job)); + job->copies = copies; // XXX hdr.copies? + /* Read in then validate header */ - ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr)); - if (ret < 0 || ret != sizeof(ctx->hdr)) { + ret = read(data_fd, &job->hdr, sizeof(job->hdr)); + if (ret < 0 || ret != sizeof(job->hdr)) { + shinkos6145_cleanup_job(job); if (ret == 0) return CUPS_BACKEND_CANCEL; ERROR("Read failed (%d/%d/%d)\n", - ret, 0, (int)sizeof(ctx->hdr)); + ret, 0, (int)sizeof(job->hdr)); perror("ERROR: Read failed"); return ret; } - if (le32_to_cpu(ctx->hdr.len1) != 0x10 || - le32_to_cpu(ctx->hdr.len2) != 0x64 || - le32_to_cpu(ctx->hdr.dpi) != 300) { +#define SWAP_HDR(__x) job->hdr.__x = le32_to_cpu(job->hdr.__x) + + SWAP_HDR(len1); + SWAP_HDR(model); + SWAP_HDR(media_w); + SWAP_HDR(len2); + SWAP_HDR(media); + SWAP_HDR(method); + SWAP_HDR(qual); + SWAP_HDR(oc_mode); + SWAP_HDR(columns); + SWAP_HDR(rows); + SWAP_HDR(copies); + SWAP_HDR(dpi); + SWAP_HDR(ext_flags); + +#undef SWAP_HDR + + if (job->hdr.len1 != 0x10 || + job->hdr.len2 != 0x64 || + job->hdr.dpi != 300) { ERROR("Unrecognized header data format!\n"); + shinkos6145_cleanup_job(job); return CUPS_BACKEND_CANCEL; } - if (le32_to_cpu(ctx->hdr.model) != 6145) { - ERROR("Unrecognized printer (%u)!\n", le32_to_cpu(ctx->hdr.model)); + if (job->hdr.model != 6145) { + ERROR("Unrecognized printer (%u)!\n", job->hdr.model); + shinkos6145_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + if (!job->hdr.rows || !job->hdr.columns) { + ERROR("Bad print job header!\n"); + shinkos6145_cleanup_job(job); return CUPS_BACKEND_CANCEL; } @@ -2102,29 +2151,26 @@ static int shinkos6145_read_parse(void *vctx, int data_fd) { When bit 0 is set, this tells the backend that the data is already in planar YMC format (vs packed RGB) so we don't need to do the conversion ourselves. Saves some processing overhead */ - ctx->input_ymc = le32_to_cpu(ctx->hdr.ext_flags) & 0x01; - - if (ctx->databuf) { - free(ctx->databuf); - ctx->databuf = NULL; - } + input_ymc = job->hdr.ext_flags & 0x01; - ctx->datalen = le32_to_cpu(ctx->hdr.rows) * le32_to_cpu(ctx->hdr.columns) * 3; - ctx->databuf = malloc(ctx->datalen); - if (!ctx->databuf) { + job->datalen = job->hdr.rows * job->hdr.columns * 3; + job->databuf = malloc(job->datalen); + if (!job->databuf) { ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_FAILED; + shinkos6145_cleanup_job(job); + return CUPS_BACKEND_RETRY_CURRENT; } { - int remain = ctx->datalen; - uint8_t *ptr = ctx->databuf; + int remain = job->datalen; + uint8_t *ptr = job->databuf; do { ret = read(data_fd, ptr, remain); if (ret < 0) { ERROR("Read failed (%d/%d/%zu)\n", - ret, remain, ctx->datalen); + ret, remain, job->datalen); perror("ERROR: Read failed"); + shinkos6145_cleanup_job(job); return ret; } ptr += ret; @@ -2138,6 +2184,7 @@ static int shinkos6145_read_parse(void *vctx, int data_fd) { ERROR("Read failed (%d/%d/%d)\n", ret, 4, 4); perror("ERROR: Read failed"); + shinkos6145_cleanup_job(job); return ret; } if (tmpbuf[0] != 0x04 || @@ -2145,13 +2192,45 @@ static int shinkos6145_read_parse(void *vctx, int data_fd) { tmpbuf[2] != 0x02 || tmpbuf[3] != 0x01) { ERROR("Unrecognized footer data format!\n"); + shinkos6145_cleanup_job(job); return CUPS_BACKEND_FAILED; } + /* Convert packed RGB to planar YMC if necessary */ + if (!input_ymc) { + INFO("Converting Packed RGB to Planar YMC\n"); + int planelen = job->hdr.columns * job->hdr.rows; + uint8_t *databuf3 = malloc(job->datalen); + int i; + if (!databuf3) { + ERROR("Memory allocation failure!\n"); + shinkos6145_cleanup_job(job); + return CUPS_BACKEND_RETRY_CURRENT; + } + for (i = 0 ; i < planelen ; i++) { + uint8_t r, g, b; + r = job->databuf[3*i]; + g = job->databuf[3*i+1]; + b = job->databuf[3*i+2]; + databuf3[i] = 255 - b; + databuf3[planelen + i] = 255 - g; + databuf3[planelen + planelen + i] = 255 - r; + } + free(job->databuf); + job->databuf = databuf3; + } + + // if (job->copies > 1 && hdr->media == 0 && hdr->method == 0) + // and if printer_media == 6x8 or 6x9 + // combine 4x6 + 4x6 -> 8x6 + // 1844x2492 = 1844x1240.. delta = 12. + + *vjob = job; + return CUPS_BACKEND_OK; } -static int shinkos6145_main_loop(void *vctx, int copies) { +static int shinkos6145_main_loop(void *vctx, const void *vjob) { struct shinkos6145_ctx *ctx = vctx; int ret, num; @@ -2167,6 +2246,11 @@ static int shinkos6145_main_loop(void *vctx, int copies) { uint32_t cur_mode; + struct shinkos6145_printjob *job = (struct shinkos6145_printjob*) vjob; /* XXX stupid, we can't do this. */ + + if (!job) + return CUPS_BACKEND_FAILED; + /* Send Media Query */ memset(cmdbuf, 0, CMDBUF_LEN); cmd->cmd = cpu_to_le16(S6145_CMD_MEDIAINFO); @@ -2186,10 +2270,10 @@ static int shinkos6145_main_loop(void *vctx, int copies) { /* Validate print sizes */ for (i = 0; i < media->count ; i++) { /* Look for matching media */ - if (le16_to_cpu(media->items[i].columns) == cpu_to_le16(le32_to_cpu(ctx->hdr.columns)) && - le16_to_cpu(media->items[i].rows) == cpu_to_le16(le32_to_cpu(ctx->hdr.rows)) && - media->items[i].print_method == le32_to_cpu(ctx->hdr.method) && - media->items[i].media_code == le32_to_cpu(ctx->hdr.media)) + if (le16_to_cpu(media->items[i].columns) == job->hdr.columns && + le16_to_cpu(media->items[i].rows) == job->hdr.rows && + media->items[i].print_method == job->hdr.method && + media->items[i].media_code == job->hdr.media) break; } if (i == media->count) { @@ -2197,16 +2281,6 @@ static int shinkos6145_main_loop(void *vctx, int copies) { return CUPS_BACKEND_HOLD; } - ctx->last_ribbon = media->ribbon; - - /* Tell CUPS about the consumables we report */ - ATTR("marker-colors=#00FFFF#FF00FF#FFFF00\n"); - ATTR("marker-high-levels=100\n"); - ATTR("marker-low-levels=10\n"); - ATTR("marker-names='%s'\n", print_ribbons(media->ribbon)); - ATTR("marker-types=ribbonWax\n"); - ctx->ribbon_type = media->ribbon; - // XXX check copies against remaining media? /* Query printer mode */ @@ -2236,23 +2310,14 @@ top: } if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) { - uint16_t donor, remain; - memcpy(rdbuf2, rdbuf, READBACK_LEN); INFO("Printer Status: 0x%02x (%s)\n", sts->hdr.status, status_str(sts->hdr.status)); - /* Guessimate a percentage for the remaining media */ - donor = le32_to_cpu(sts->count_ribbon_left) * 100 / ribbon_sizes(ctx->ribbon_type); - if (donor != ctx->last_donor) { - ctx->last_donor = donor; - ATTR("marker-levels=%d\n", donor); - } - remain = le32_to_cpu(sts->count_ribbon_left); - if (remain != ctx->last_remain) { - ctx->last_remain = remain; - ATTR("marker-message=\"%d prints remaining on '%s' ribbon\"\n", remain, print_ribbons(media->ribbon)); + if (ctx->marker.levelnow != (int)sts->count_ribbon_left) { + ctx->marker.levelnow = sts->count_ribbon_left; + dump_markers(&ctx->marker, 1, 0); } if (sts->hdr.result != RESULT_SUCCESS) @@ -2279,7 +2344,7 @@ top: case S_PRINTER_READY_CMD: { /* Set matte/etc */ - uint32_t oc_mode = le32_to_cpu(ctx->hdr.oc_mode); + uint32_t oc_mode = job->hdr.oc_mode; uint32_t updated = 0; if (!oc_mode) /* if nothing set, default to glossy */ @@ -2320,51 +2385,35 @@ top: /* Set up library transform... */ uint32_t newlen = le16_to_cpu(ctx->corrdata->headDots) * - le32_to_cpu(ctx->hdr.rows) * sizeof(uint16_t) * 4; + job->hdr.rows * sizeof(uint16_t) * 4; uint16_t *databuf2 = malloc(newlen); /* Set the size in the correctiondata */ - ctx->corrdata->width = cpu_to_le16(le32_to_cpu(ctx->hdr.columns)); - ctx->corrdata->height = cpu_to_le16(le32_to_cpu(ctx->hdr.rows)); - - /* Convert packed RGB to planar YMC if necessary */ - if (!ctx->input_ymc) { - int planelen = le16_to_cpu(ctx->corrdata->width) * le16_to_cpu(ctx->corrdata->height); - uint8_t *databuf3 = malloc(ctx->datalen); - - for (i = 0 ; i < planelen ; i++) { - uint8_t r, g, b; - r = ctx->databuf[3*i]; - g = ctx->databuf[3*i+1]; - b = ctx->databuf[3*i+2]; - databuf3[i] = 255 - b; - databuf3[planelen + i] = 255 - g; - databuf3[planelen + planelen + i] = 255 - r; - } - free(ctx->databuf); - ctx->databuf = databuf3; - } + ctx->corrdata->width = cpu_to_le16(job->hdr.columns); + ctx->corrdata->height = cpu_to_le16(job->hdr.rows); + /* Perform the actual library transform */ if (ctx->dl_handle) { INFO("Calling image processing library...\n"); - if (ctx->ImageAvrCalc(ctx->databuf, le32_to_cpu(ctx->hdr.columns), le32_to_cpu(ctx->hdr.rows), ctx->image_avg)) { + if (ctx->ImageAvrCalc(job->databuf, job->hdr.columns, job->hdr.rows, ctx->image_avg)) { + free(databuf2); ERROR("Library returned error!\n"); return CUPS_BACKEND_FAILED; } - ctx->ImageProcessing(ctx->databuf, databuf2, ctx->corrdata); + ctx->ImageProcessing(job->databuf, databuf2, ctx->corrdata); } else { WARNING("Utilizing fallback internal image processing code\n"); WARNING(" *** Output quality will be poor! *** \n"); - lib6145_calc_avg(ctx, le32_to_cpu(ctx->hdr.columns), le32_to_cpu(ctx->hdr.rows)); - lib6145_process_image(ctx->databuf, databuf2, ctx->corrdata, oc_mode); + lib6145_calc_avg(ctx, job, job->hdr.columns, job->hdr.rows); + lib6145_process_image(job->databuf, databuf2, ctx->corrdata, oc_mode); } - free(ctx->databuf); - ctx->databuf = (uint8_t*) databuf2; - ctx->datalen = newlen; + free(job->databuf); + job->databuf = (uint8_t*) databuf2; + job->datalen = newlen; INFO("Sending print job (internal id %u)\n", ctx->jobid); @@ -2373,16 +2422,16 @@ top: 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->count = cpu_to_le16(job->copies); + print->columns = cpu_to_le16(job->hdr.columns); + print->rows = cpu_to_le16(job->hdr.rows); print->image_avg = ctx->image_avg[2]; /* Cyan level */ - print->method = cpu_to_le32(ctx->hdr.method); + print->method = cpu_to_le32(job->hdr.method); print->combo_wait = 0; /* Brava21 header has a few quirks */ if(ctx->type == P_SHINKO_S6145D) { - print->media = ctx->hdr.media; + print->media = job->hdr.media; print->unk_1 = 0x01; } @@ -2409,7 +2458,7 @@ top: // XXX we shouldn't send the lamination layer over if // it's not needed. hdr->oc_mode == PRINT_MODE_NO_OC if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->databuf, ctx->datalen))) + job->databuf, job->datalen))) return CUPS_BACKEND_FAILED; INFO("Waiting for printer to acknowledge completion\n"); @@ -2481,27 +2530,65 @@ static int shinkos6145_query_serno(struct libusb_device_handle *dev, uint8_t end return CUPS_BACKEND_OK; } +static int shinkos6145_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct shinkos6145_ctx *ctx = vctx; + struct s6145_cmd_hdr cmd; + struct s6145_status_resp *sts = (struct s6145_status_resp *) rdbuf; + int num; + + /* Query Status */ + cmd.cmd = cpu_to_le16(S6145_CMD_GETSTATUS); + cmd.len = cpu_to_le16(0); + + if (s6145_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*sts), + &num)) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.cmd)); + return CUPS_BACKEND_FAILED; + } + + ctx->marker.levelnow = le32_to_cpu(sts->count_ribbon_left); + + *markers = &ctx->marker; + *count = 1; + + return CUPS_BACKEND_OK; +} + /* Exported */ #define USB_VID_SHINKO 0x10CE #define USB_PID_SHINKO_S6145 0x0019 #define USB_PID_SHINKO_S6145D 0x001E /* Aka CIAAT Brava 21 */ +static const char *shinkos6145_prefixes[] = { + "sinfonia-chcs6145", "ciaat-brava-21", + // extras + "shinko-chcs6145", + // backwards-compatiblity + "shinkos6145", "brava21", + NULL +}; + struct dyesub_backend shinkos6145_backend = { - .name = "Shinko/Sinfonia CHC-S6145", - .version = "0.22", - .uri_prefix = "shinkos6145", + .name = "Shinko/Sinfonia CHC-S6145/CS2", + .version = "0.30", + .uri_prefixes = shinkos6145_prefixes, .cmdline_usage = shinkos6145_cmdline, .cmdline_arg = shinkos6145_cmdline_arg, .init = shinkos6145_init, .attach = shinkos6145_attach, .teardown = shinkos6145_teardown, + .cleanup_job = shinkos6145_cleanup_job, .read_parse = shinkos6145_read_parse, .main_loop = shinkos6145_main_loop, .query_serno = shinkos6145_query_serno, + .query_markers = shinkos6145_query_markers, .devices = { - { USB_VID_SHINKO, USB_PID_SHINKO_S6145, P_SHINKO_S6145, ""}, - { USB_VID_SHINKO, USB_PID_SHINKO_S6145D, P_SHINKO_S6145D, ""}, - { 0, 0, 0, ""} + { USB_VID_SHINKO, USB_PID_SHINKO_S6145, P_SHINKO_S6145, NULL, "sinfonia-chcs6145"}, + { USB_VID_SHINKO, USB_PID_SHINKO_S6145D, P_SHINKO_S6145D, NULL, "ciaat-brava-21"}, + { 0, 0, 0, NULL, NULL} } }; diff --git a/src/cups/backend_shinkos6245.c b/src/cups/backend_shinkos6245.c index 44a2f7e..5d75e0d 100644 --- a/src/cups/backend_shinkos6245.c +++ b/src/cups/backend_shinkos6245.c @@ -1,7 +1,7 @@ /* * Shinko/Sinfonia CHC-S6245 CUPS backend -- libusb-1.0 version * - * (c) 2015-2016 Solomon Peachy <pizza@shaftnet.org> + * (c) 2015-2018 Solomon Peachy <pizza@shaftnet.org> * * Low-level documentation was provided by Sinfonia, Inc. Thank you! * @@ -20,11 +20,12 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * + * SPDX-License-Identifier: GPL-2.0+ + * */ #include <stdio.h> @@ -90,25 +91,6 @@ struct s6245_printjob_hdr { uint32_t unk21; } __attribute__((packed)); -/* Private data structure */ -struct shinkos6245_ctx { - struct libusb_device_handle *dev; - uint8_t endp_up; - uint8_t endp_down; - int type; - - uint8_t jobid; - - struct s6245_printjob_hdr hdr; - - uint8_t *databuf; - int datalen; - - uint16_t last_donor; - uint16_t last_remain; - uint8_t ribbon_code; -}; - /* Structs for printer */ struct s6245_cmd_hdr { uint16_t cmd; @@ -178,7 +160,7 @@ static char *cmd_names(uint16_t v) { default: return "Unknown Command"; } -}; +} struct s6245_print_cmd { struct s6245_cmd_hdr hdr; @@ -924,37 +906,50 @@ struct s6245_fwinfo_resp { uint16_t checksum; } __attribute__((packed)); +/* Private data structure */ +struct shinkos6245_printjob { + uint8_t *databuf; + int datalen; + int copies; + struct s6245_printjob_hdr hdr; +}; + +struct shinkos6245_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + int type; + + uint8_t jobid; + + struct marker marker; + + struct s6245_mediainfo_resp media; +}; #define READBACK_LEN 512 /* Needs to be larger than largest response hdr */ #define CMDBUF_LEN sizeof(struct s6245_print_cmd) -static uint8_t rdbuf[READBACK_LEN]; - static int s6245_do_cmd(struct shinkos6245_ctx *ctx, uint8_t *cmd, int cmdlen, - int minlen, int *num) + int buflen, + int *num, struct s6245_status_hdr *resp) { - int ret; - struct s6245_status_hdr *resp = (struct s6245_status_hdr *) rdbuf; - libusb_device_handle *dev = ctx->dev; uint8_t endp_up = ctx->endp_up; uint8_t endp_down = ctx->endp_down; + int ret; if ((ret = send_data(dev, endp_down, cmd, cmdlen))) return (ret < 0) ? ret : -99; ret = read_data(dev, endp_up, - rdbuf, READBACK_LEN, num); + (uint8_t *)resp, buflen, 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, @@ -971,8 +966,8 @@ static int s6245_do_cmd(struct shinkos6245_ctx *ctx, static int get_status(struct shinkos6245_ctx *ctx) { struct s6245_cmd_hdr cmd; - struct s6245_status_resp *resp = (struct s6245_status_resp *) rdbuf; - struct s6245_getextcounter_resp *resp2 = (struct s6245_getextcounter_resp *) rdbuf; + struct s6245_status_resp resp; + struct s6245_getextcounter_resp resp2; int ret, num = 0; cmd.cmd = cpu_to_le16(S6245_CMD_GETSTATUS); @@ -980,48 +975,48 @@ static int get_status(struct shinkos6245_ctx *ctx) if ((ret = s6245_do_cmd(ctx, (uint8_t*)&cmd, sizeof(cmd), - sizeof(*resp), - &num)) < 0) { + sizeof(resp), + &num, (void*)&resp)) < 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("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)); + resp.hdr.error, + error_str(resp.hdr.error), + resp.hdr.printer_major, + resp.hdr.printer_minor, error_codes(resp.hdr.printer_major, resp.hdr.printer_minor)); } - if (le16_to_cpu(resp->hdr.payload_len) != (sizeof(struct s6245_status_resp) - sizeof(struct s6245_status_hdr))) + if (le16_to_cpu(resp.hdr.payload_len) != (sizeof(struct s6245_status_resp) - sizeof(struct s6245_status_hdr))) return 0; INFO(" Print Counts:\n"); - INFO("\tSince Paper Changed:\t%08u\n", le32_to_cpu(resp->count_paper)); - INFO("\tLifetime:\t\t%08u\n", le32_to_cpu(resp->count_lifetime)); - INFO("\tMaintenance:\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("\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("\tMaintenance:\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)); + 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 %03u @ %03u/%03u (%03u 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)); + 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)); + INFO("Tonecurve Status: 0x%02x (%s)\n", resp.tonecurve_status, tonecurve_statuses(resp.tonecurve_status)); /* Query Extended counters */ cmd.cmd = cpu_to_le16(S6245_CMD_EXTCOUNTER); @@ -1029,17 +1024,17 @@ static int get_status(struct shinkos6245_ctx *ctx) if ((ret = s6245_do_cmd(ctx, (uint8_t*)&cmd, sizeof(cmd), - sizeof(*resp2), - &num)) < 0) { + sizeof(resp2), + &num, (void*)&resp2)) < 0) { ERROR("Failed to execute %s command\n", cmd_names(cmd.cmd)); return ret; } - if (le16_to_cpu(resp2->hdr.payload_len) != (sizeof(struct s6245_getextcounter_resp) - sizeof(struct s6245_status_hdr))) + if (le16_to_cpu(resp2.hdr.payload_len) != (sizeof(struct s6245_getextcounter_resp) - sizeof(struct s6245_status_hdr))) return 0; - INFO("Lifetime Distance: %08u inches\n", le32_to_cpu(resp2->lifetime_distance)); - INFO("Maintenance Distance: %08u inches\n", le32_to_cpu(resp2->maint_distance)); - INFO("Head Distance: %08u inches\n", le32_to_cpu(resp2->head_distance)); + INFO("Lifetime Distance: %08u inches\n", le32_to_cpu(resp2.lifetime_distance)); + INFO("Maintenance Distance: %08u inches\n", le32_to_cpu(resp2.maint_distance)); + INFO("Head Distance: %08u inches\n", le32_to_cpu(resp2.head_distance)); return 0; } @@ -1047,7 +1042,7 @@ static int get_status(struct shinkos6245_ctx *ctx) static int get_fwinfo(struct shinkos6245_ctx *ctx) { struct s6245_fwinfo_cmd cmd; - struct s6245_fwinfo_resp *resp = (struct s6245_fwinfo_resp *)rdbuf; + struct s6245_fwinfo_resp resp; int num = 0; int i; @@ -1062,23 +1057,23 @@ static int get_fwinfo(struct shinkos6245_ctx *ctx) if ((ret = s6245_do_cmd(ctx, (uint8_t*)&cmd, sizeof(cmd), - sizeof(*resp), - &num)) < 0) { + sizeof(resp), + &num, (void*)&resp)) < 0) { ERROR("Failed to execute %s command (%d)\n", cmd_names(cmd.hdr.cmd), ret); continue; } - if (le16_to_cpu(resp->hdr.payload_len) != (sizeof(struct s6245_fwinfo_resp) - sizeof(struct s6245_status_hdr))) + if (le16_to_cpu(resp.hdr.payload_len) != (sizeof(struct s6245_fwinfo_resp) - sizeof(struct s6245_status_hdr))) continue; INFO(" %s\t ver %02x.%02x\n", fwinfo_targets(i), - resp->major, resp->minor); + 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)); + 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; @@ -1087,7 +1082,7 @@ static int get_fwinfo(struct shinkos6245_ctx *ctx) static int get_errorlog(struct shinkos6245_ctx *ctx) { struct s6245_errorlog_cmd cmd; - struct s6245_errorlog_resp *resp = (struct s6245_errorlog_resp *) rdbuf; + struct s6245_errorlog_resp resp; int num = 0; int i = 0; @@ -1100,50 +1095,33 @@ static int get_errorlog(struct shinkos6245_ctx *ctx) if ((ret = s6245_do_cmd(ctx, (uint8_t*)&cmd, sizeof(cmd), - sizeof(*resp), - &num)) < 0) { + sizeof(resp), + &num, (void*)&resp)) < 0) { ERROR("Failed to execute %s command (%d)\n", cmd_names(cmd.hdr.cmd), ret); return ret; } - if (le16_to_cpu(resp->hdr.payload_len) != (sizeof(struct s6245_errorlog_resp) - sizeof(struct s6245_status_hdr))) + if (le16_to_cpu(resp.hdr.payload_len) != (sizeof(struct s6245_errorlog_resp) - sizeof(struct s6245_status_hdr))) return -2; INFO("Stored Error ID %d:\n", i); INFO(" %04d-%02u-%02u %02u:%02u:%02u @ %08u prints : 0x%02x/0x%02x (%s)\n", - resp->time_year + 2000, resp->time_month, resp->time_day, - resp->time_hour, resp->time_min, resp->time_sec, - le32_to_cpu(resp->print_counter), - resp->error_major, resp->error_minor, - error_codes(resp->error_major, resp->error_minor)); + resp.time_year + 2000, resp.time_month, resp.time_day, + resp.time_hour, resp.time_min, resp.time_sec, + le32_to_cpu(resp.print_counter), + resp.error_major, resp.error_minor, + error_codes(resp.error_major, resp.error_minor)); INFO(" Temp: %02u/%02u Hum: %02u\n", - resp->printer_thermistor, resp->head_thermistor, resp->printer_humidity); - } while (++i < le16_to_cpu(resp->error_count)); + resp.printer_thermistor, resp.head_thermistor, resp.printer_humidity); + } while (++i < le16_to_cpu(resp.error_count)); return 0; } -static int get_mediainfo(struct shinkos6245_ctx *ctx) +static void dump_mediainfo(struct s6245_mediainfo_resp *resp) { - struct s6245_cmd_hdr cmd; - struct s6245_mediainfo_resp *resp = (struct s6245_mediainfo_resp *) rdbuf; - int ret, num = 0; int i; - cmd.cmd = cpu_to_le16(S6245_CMD_MEDIAINFO); - cmd.len = cpu_to_le16(0); - - if ((ret = s6245_do_cmd(ctx, - (uint8_t*)&cmd, sizeof(cmd), - sizeof(*resp), - &num)) < 0) { - ERROR("Failed to execute %s command\n", cmd_names(cmd.cmd)); - return ret; - } - - if (le16_to_cpu(resp->hdr.payload_len) != (sizeof(struct s6245_mediainfo_resp) - sizeof(struct s6245_status_hdr))) - return -2; - INFO("Loaded Media Type: %s\n", ribbon_sizes(resp->ribbon_code)); INFO("Supported Media Information: %u entries:\n", resp->count); for (i = 0 ; i < resp->count ; i++) { @@ -1153,13 +1131,12 @@ static int get_mediainfo(struct shinkos6245_ctx *ctx) le16_to_cpu(resp->items[i].rows), resp->items[i].print_method, print_methods(resp->items[i].print_method)); } - return 0; } static int cancel_job(struct shinkos6245_ctx *ctx, char *str) { struct s6245_cancel_cmd cmd; - struct s6245_status_hdr *resp = (struct s6245_status_hdr *) rdbuf; + struct s6245_status_hdr resp; int ret, num = 0; if (!str) @@ -1172,8 +1149,8 @@ static int cancel_job(struct shinkos6245_ctx *ctx, char *str) if ((ret = s6245_do_cmd(ctx, (uint8_t*)&cmd, sizeof(cmd), - sizeof(*resp), - &num)) < 0) { + sizeof(resp), + &num, (void*)&resp)) < 0) { ERROR("Failed to execute %s command\n", cmd_names(cmd.hdr.cmd)); return ret; } @@ -1184,7 +1161,7 @@ static int cancel_job(struct shinkos6245_ctx *ctx, char *str) static int flash_led(struct shinkos6245_ctx *ctx) { struct s6245_cmd_hdr cmd; - struct s6245_status_hdr *resp = (struct s6245_status_hdr *) rdbuf; + struct s6245_status_hdr resp; int ret, num = 0; cmd.cmd = cpu_to_le16(S6245_CMD_FLASHLED); @@ -1192,8 +1169,8 @@ static int flash_led(struct shinkos6245_ctx *ctx) if ((ret = s6245_do_cmd(ctx, (uint8_t*)&cmd, sizeof(cmd), - sizeof(*resp), - &num)) < 0) { + sizeof(resp), + &num, (void*)&resp)) < 0) { ERROR("Failed to execute %s command\n", cmd_names(cmd.cmd)); return ret; } @@ -1205,7 +1182,7 @@ static int flash_led(struct shinkos6245_ctx *ctx) static int set_param(struct shinkos6245_ctx *ctx, int target, uint32_t param) { struct s6245_setparam_cmd cmd; - struct s6245_status_hdr *resp = (struct s6245_status_hdr *) rdbuf; + struct s6245_status_hdr resp; int ret, num = 0; /* Set up command */ @@ -1217,8 +1194,8 @@ static int set_param(struct shinkos6245_ctx *ctx, int target, uint32_t param) if ((ret = s6245_do_cmd(ctx, (uint8_t*)&cmd, sizeof(cmd), - sizeof(*resp), - &num)) < 0) { + sizeof(resp), + &num, (void*)&resp)) < 0) { ERROR("Failed to execute %s command (%d)\n", cmd_names(cmd.hdr.cmd), ret); } @@ -1228,7 +1205,7 @@ static int set_param(struct shinkos6245_ctx *ctx, int target, uint32_t param) static int reset_curve(struct shinkos6245_ctx *ctx, int target) { struct s6245_reset_cmd cmd; - struct s6245_status_hdr *resp = (struct s6245_status_hdr *) rdbuf; + struct s6245_status_hdr resp; int ret, num = 0; cmd.target = target; @@ -1238,8 +1215,8 @@ static int reset_curve(struct shinkos6245_ctx *ctx, int target) if ((ret = s6245_do_cmd(ctx, (uint8_t*)&cmd, sizeof(cmd), - sizeof(*resp), - &num)) < 0) { + sizeof(resp), + &num, (void*)&resp)) < 0) { ERROR("Failed to execute %s command\n", cmd_names(cmd.hdr.cmd)); return ret; } @@ -1249,8 +1226,8 @@ static int reset_curve(struct shinkos6245_ctx *ctx, int target) static int get_tonecurve(struct shinkos6245_ctx *ctx, int type, char *fname) { - struct s6245_readtone_cmd cmd; - struct s6245_readtone_resp *resp = (struct s6245_readtone_resp *) rdbuf; + struct s6245_readtone_cmd cmd; + struct s6245_readtone_resp resp; int ret, num = 0; uint8_t *data; @@ -1268,25 +1245,25 @@ static int get_tonecurve(struct shinkos6245_ctx *ctx, int type, char *fname) if ((ret = s6245_do_cmd(ctx, (uint8_t*)&cmd, sizeof(cmd), - sizeof(*resp), - &num)) < 0) { + sizeof(resp), + &num, (void*)&resp)) < 0) { ERROR("Failed to execute %s command\n", cmd_names(cmd.hdr.cmd)); return ret; } - resp->total_size = le16_to_cpu(resp->total_size); + resp.total_size = le16_to_cpu(resp.total_size); - data = malloc(resp->total_size * 2); + data = malloc(resp.total_size * 2); if (!data) { ERROR("Memory Allocation Failure!\n"); return -1; } i = 0; - while (i < resp->total_size) { + while (i < resp.total_size) { ret = read_data(ctx->dev, ctx->endp_up, data + i, - resp->total_size * 2 - i, + resp.total_size * 2 - i, &num); if (ret < 0) goto done; @@ -1294,7 +1271,7 @@ static int get_tonecurve(struct shinkos6245_ctx *ctx, int type, char *fname) } i = j = 0; - while (i < resp->total_size) { + while (i < resp.total_size) { memcpy(curves + j, data + i+2, data[i+1]); j += data[i+1] / 2; i += data[i+1] + 2; @@ -1324,7 +1301,7 @@ done: static int set_tonecurve(struct shinkos6245_ctx *ctx, int target, char *fname) { struct s6245_update_cmd cmd; - struct s6245_status_hdr *resp = (struct s6245_status_hdr *) rdbuf; + struct s6245_status_hdr resp; int ret, num = 0; INFO("Set %s Tone Curve from '%s'\n", update_targets(target), fname); @@ -1367,8 +1344,8 @@ static int set_tonecurve(struct shinkos6245_ctx *ctx, int target, char *fname) if ((ret = s6245_do_cmd(ctx, (uint8_t*)&cmd, sizeof(cmd), - sizeof(*resp), - &num)) < 0) { + sizeof(resp), + &num, (void*)&resp)) < 0) { ERROR("Failed to execute %s command\n", cmd_names(cmd.hdr.cmd)); goto done; } @@ -1455,7 +1432,7 @@ int shinkos6245_cmdline_arg(void *vctx, int argc, char **argv) j = set_tonecurve(ctx, TONECURVE_CURRENT, optarg); break; case 'm': - j = get_mediainfo(ctx); + dump_mediainfo(&ctx->media); break; case 'r': j = reset_curve(ctx, RESET_TONE_CURVE); @@ -1491,30 +1468,61 @@ static void *shinkos6245_init(void) return ctx; } -static void shinkos6245_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int shinkos6245_attach(void *vctx, struct libusb_device_handle *dev, int type, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct shinkos6245_ctx *ctx = vctx; - struct libusb_device *device; - struct libusb_device_descriptor desc; + + int num; ctx->dev = dev; ctx->endp_up = endp_up; ctx->endp_down = endp_down; - - device = libusb_get_device(dev); - libusb_get_device_descriptor(device, &desc); - - ctx->type = lookup_printer_type(&shinkos6245_backend, - desc.idVendor, desc.idProduct); + ctx->type = type; /* Ensure jobid is sane */ ctx->jobid = jobid & 0x7f; if (!ctx->jobid) ctx->jobid++; - /* Initialize donor */ - ctx->last_donor = ctx->last_remain = 65535; + /* Query Media */ + if (test_mode < TEST_MODE_NOATTACH) { + struct s6245_cmd_hdr cmd; + cmd.cmd = cpu_to_le16(S6245_CMD_MEDIAINFO); + cmd.len = cpu_to_le16(0); + + if (s6245_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(ctx->media), + &num, (void*)&ctx->media)) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.cmd)); + return CUPS_BACKEND_FAILED; + } + } else { + int media_code = 0x12; + if (getenv("MEDIA_CODE")) + media_code = atoi(getenv("MEDIA_CODE")); + + + ctx->media.ribbon_code = media_code; + } + + ctx->marker.color = "#00FFFF#FF00FF#FFFF00"; + ctx->marker.name = ribbon_sizes(ctx->media.ribbon_code); + ctx->marker.levelmax = ribbon_counts(ctx->media.ribbon_code); + ctx->marker.levelnow = -2; + + return CUPS_BACKEND_OK; +} + +static void shinkos6245_cleanup_job(const void *vjob) +{ + const struct shinkos6245_printjob *job = vjob; + + if (job->databuf) + free(job->databuf); + + free((void*)job); } static void shinkos6245_teardown(void *vctx) { @@ -1523,64 +1531,71 @@ static void shinkos6245_teardown(void *vctx) { if (!ctx) return; - if (ctx->databuf) - free(ctx->databuf); - free(ctx); } -static int shinkos6245_read_parse(void *vctx, int data_fd) { +static int shinkos6245_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { struct shinkos6245_ctx *ctx = vctx; int ret; uint8_t tmpbuf[4]; + struct shinkos6245_printjob *job = NULL; + if (!ctx) return CUPS_BACKEND_FAILED; + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; + } + memset(job, 0, sizeof(*job)); + job->copies = copies; // XXX hdr.copies + /* Read in then validate header */ - ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr)); - if (ret < 0 || ret != sizeof(ctx->hdr)) { + ret = read(data_fd, &job->hdr, sizeof(job->hdr)); + if (ret < 0 || ret != sizeof(job->hdr)) { if (ret == 0) return CUPS_BACKEND_CANCEL; ERROR("Read failed (%d/%d/%d)\n", - ret, 0, (int)sizeof(ctx->hdr)); + ret, 0, (int)sizeof(job->hdr)); perror("ERROR: Read failed"); return ret; } - if (le32_to_cpu(ctx->hdr.len1) != 0x10 || - le32_to_cpu(ctx->hdr.len2) != 0x64 || - le32_to_cpu(ctx->hdr.dpi) != 300) { + if (le32_to_cpu(job->hdr.len1) != 0x10 || + le32_to_cpu(job->hdr.len2) != 0x64 || + le32_to_cpu(job->hdr.dpi) != 300) { ERROR("Unrecognized header data format!\n"); return CUPS_BACKEND_CANCEL; } - if (le32_to_cpu(ctx->hdr.model) != 6245) { - ERROR("Unrecognized printer (%u)!\n", le32_to_cpu(ctx->hdr.model)); + if (le32_to_cpu(job->hdr.model) != 6245) { + ERROR("Unrecognized printer (%u)!\n", le32_to_cpu(job->hdr.model)); return CUPS_BACKEND_CANCEL; } - if (ctx->databuf) { - free(ctx->databuf); - ctx->databuf = NULL; + if (job->databuf) { + free(job->databuf); + job->databuf = NULL; } - ctx->datalen = le32_to_cpu(ctx->hdr.rows) * le32_to_cpu(ctx->hdr.columns) * 3; - ctx->databuf = malloc(ctx->datalen); - if (!ctx->databuf) { + job->datalen = le32_to_cpu(job->hdr.rows) * le32_to_cpu(job->hdr.columns) * 3; + job->databuf = malloc(job->datalen); + if (!job->databuf) { ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_FAILED; + return CUPS_BACKEND_RETRY_CURRENT; } { - int remain = ctx->datalen; - uint8_t *ptr = ctx->databuf; + int remain = job->datalen; + uint8_t *ptr = job->databuf; do { ret = read(data_fd, ptr, remain); if (ret < 0) { ERROR("Read failed (%d/%d/%d)\n", - ret, remain, ctx->datalen); + ret, remain, job->datalen); perror("ERROR: Read failed"); return ret; } @@ -1605,23 +1620,29 @@ static int shinkos6245_read_parse(void *vctx, int data_fd) { return CUPS_BACKEND_FAILED; } + *vjob = job; + return CUPS_BACKEND_OK; } -static int shinkos6245_main_loop(void *vctx, int copies) { +static int shinkos6245_main_loop(void *vctx, const void *vjob) { struct shinkos6245_ctx *ctx = vctx; int ret, num; uint8_t cmdbuf[CMDBUF_LEN]; - uint8_t rdbuf2[READBACK_LEN]; int i, last_state = -1, state = S_IDLE; uint8_t mcut; + int copies; struct s6245_cmd_hdr *cmd = (struct s6245_cmd_hdr *) cmdbuf;; struct s6245_print_cmd *print = (struct s6245_print_cmd *) cmdbuf; - struct s6245_status_resp *sts = (struct s6245_status_resp *) rdbuf; - struct s6245_mediainfo_resp *media = (struct s6245_mediainfo_resp *) rdbuf; + struct s6245_status_resp sts, sts2; + struct s6245_status_hdr resp; + + struct shinkos6245_printjob *job = (struct shinkos6245_printjob*) vjob; + + copies = job->copies; /* Cap copies */ // XXX 120 for 8x10 media, 100 for 8x12 media (S6245) @@ -1630,7 +1651,7 @@ static int shinkos6245_main_loop(void *vctx, int copies) { copies = 120; /* Set up mcut */ - switch (le32_to_cpu(ctx->hdr.media)) { + switch (le32_to_cpu(job->hdr.media)) { case MEDIA_8x4_2: case MEDIA_8x5_2: case MEDIA_8x6_2: @@ -1644,34 +1665,17 @@ static int shinkos6245_main_loop(void *vctx, int copies) { } // XXX what about mcut |= PRINT_METHOD_DISABLE_ERR; - /* Send Media Query */ - memset(cmdbuf, 0, CMDBUF_LEN); - cmd->cmd = cpu_to_le16(S6245_CMD_MEDIAINFO); - cmd->len = cpu_to_le16(0); - - if ((ret = s6245_do_cmd(ctx, - cmdbuf, sizeof(*cmd), - sizeof(*media), - &num)) < 0) { - ERROR("Failed to execute %s command\n", cmd_names(cmd->cmd)); - return CUPS_BACKEND_FAILED; - } - - if (le16_to_cpu(media->hdr.payload_len) != (sizeof(struct s6245_mediainfo_resp) - sizeof(struct s6245_status_hdr))) - return CUPS_BACKEND_FAILED; - /* Validate print sizes */ - for (i = 0; i < media->count ; i++) { + for (i = 0; i < ctx->media.count ; i++) { /* Look for matching media */ - if (le16_to_cpu(media->items[i].columns) == cpu_to_le16(le32_to_cpu(ctx->hdr.columns)) && - le16_to_cpu(media->items[i].rows) == cpu_to_le16(le32_to_cpu(ctx->hdr.rows))) + if (le16_to_cpu(ctx->media.items[i].columns) == cpu_to_le16(le32_to_cpu(job->hdr.columns)) && + le16_to_cpu(ctx->media.items[i].rows) == cpu_to_le16(le32_to_cpu(job->hdr.rows))) break; } - if (i == media->count) { + if (i == ctx->media.count) { ERROR("Incorrect media loaded for print!\n"); return CUPS_BACKEND_HOLD; } - ctx->ribbon_code = media->ribbon_code; /* Send Set Time */ { @@ -1693,21 +1697,14 @@ static int shinkos6245_main_loop(void *vctx, int copies) { if ((ret = s6245_do_cmd(ctx, cmdbuf, sizeof(*stime), sizeof(struct s6245_status_hdr), - &num)) < 0) { + &num, (void*)&resp)) < 0) { ERROR("Failed to execute %s command\n", cmd_names(stime->hdr.cmd)); return CUPS_BACKEND_FAILED; } - if (sts->hdr.result != RESULT_SUCCESS) + if (resp.result != RESULT_SUCCESS) goto printer_error; } - /* Tell CUPS about the consumables we report */ - ATTR("marker-colors=#00FFFF#FF00FF#FFFF00\n"); - ATTR("marker-high-levels=100\n"); - ATTR("marker-low-levels=10\n"); - ATTR("marker-names='%s'\n", ribbon_sizes(ctx->ribbon_code)); - ATTR("marker-types=ribbonWax\n"); - // XXX check copies against remaining media! top: @@ -1723,35 +1720,26 @@ top: if ((ret = s6245_do_cmd(ctx, cmdbuf, sizeof(*cmd), - sizeof(struct s6245_status_hdr), - &num)) < 0) { + sizeof(sts), + &num, (void*)&sts)) < 0) { ERROR("Failed to execute %s command\n", cmd_names(cmd->cmd)); return CUPS_BACKEND_FAILED; } - if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) { - uint16_t donor, remain; - - memcpy(rdbuf2, rdbuf, READBACK_LEN); + if (memcmp(&sts2, &sts, sizeof(sts))) { + memcpy(&sts2, &sts, sizeof(sts)); INFO("Printer Status: 0x%02x (%s)\n", - sts->hdr.status, status_str(sts->hdr.status)); + sts.hdr.status, status_str(sts.hdr.status)); - /* Guessimate a percentage for the remaining media */ - donor = le32_to_cpu(sts->count_ribbon_left) * 100 / ribbon_counts(ctx->ribbon_code); - if (donor != ctx->last_donor) { - ctx->last_donor = donor; - ATTR("marker-levels=%d\n", donor); - } - remain = le32_to_cpu(sts->count_ribbon_left); - if (remain != ctx->last_remain) { - ctx->last_remain = remain; - ATTR("marker-message=\"%d prints remaining on '%s' ribbon\"\n", remain, ribbon_sizes(ctx->ribbon_code)); + if (ctx->marker.levelnow != (int)sts.count_ribbon_left) { + ctx->marker.levelnow = sts.count_ribbon_left; + dump_markers(&ctx->marker, 1, 0); } - if (sts->hdr.result != RESULT_SUCCESS) + if (sts.hdr.result != RESULT_SUCCESS) goto printer_error; - if (sts->hdr.error == ERROR_PRINTER) + if (sts.hdr.error == ERROR_PRINTER) goto printer_error; } else if (state == last_state) { sleep(1); @@ -1767,8 +1755,8 @@ top: /* make sure we're not colliding with an existing jobid */ - while (ctx->jobid == sts->bank1_printid || - ctx->jobid == sts->bank2_printid) { + while (ctx->jobid == sts.bank1_printid || + ctx->jobid == sts.bank2_printid) { ctx->jobid++; ctx->jobid &= 0x7f; if (!ctx->jobid) @@ -1776,8 +1764,8 @@ top: } /* If either bank is free, continue */ - if (sts->bank1_status == BANK_STATUS_FREE || - sts->bank2_status == BANK_STATUS_FREE) + if (sts.bank1_status == BANK_STATUS_FREE || + sts.bank2_status == BANK_STATUS_FREE) state = S_PRINTER_READY_CMD; break; @@ -1792,33 +1780,33 @@ top: print->id = ctx->jobid; print->count = cpu_to_le16(copies); - print->columns = cpu_to_le16(le32_to_cpu(ctx->hdr.columns)); - print->rows = cpu_to_le16(le32_to_cpu(ctx->hdr.rows)); - print->mode = le32_to_cpu(ctx->hdr.oc_mode); + print->columns = cpu_to_le16(le32_to_cpu(job->hdr.columns)); + print->rows = cpu_to_le16(le32_to_cpu(job->hdr.rows)); + print->mode = le32_to_cpu(job->hdr.oc_mode); print->method = mcut; if ((ret = s6245_do_cmd(ctx, cmdbuf, sizeof(*print), - sizeof(struct s6245_status_hdr), - &num)) < 0) { + sizeof(resp), + &num, (void*)&resp)) < 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) { + if (resp.result != RESULT_SUCCESS) { + if (resp.error == ERROR_BUFFER_FULL) { INFO("Printer Buffers full, retrying\n"); break; - } else if ((sts->hdr.status & 0xf0) == 0x30 || sts->hdr.status == 0x21) { - INFO("Printer busy (%s), retrying\n", status_str(sts->hdr.status)); + } else if ((resp.status & 0xf0) == 0x30 || sts.hdr.status == 0x21) { + INFO("Printer busy (%s), retrying\n", status_str(sts.hdr.status)); break; - } else if (sts->hdr.status != ERROR_NONE) + } else if (resp.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))) + job->databuf, job->datalen))) return CUPS_BACKEND_FAILED; INFO("Waiting for printer to acknowledge completion\n"); @@ -1829,7 +1817,7 @@ top: if (fast_return) { INFO("Fast return mode enabled.\n"); state = S_FINISHED; - } else if (sts->hdr.status == STATUS_READY) { + } else if (sts.hdr.status == STATUS_READY) { state = S_FINISHED; } break; @@ -1846,19 +1834,19 @@ top: 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)); + sts.hdr.error, + error_str(sts.hdr.error), + sts.hdr.status, + status_str(sts.hdr.status), + sts.hdr.printer_major, sts.hdr.printer_minor, + error_codes(sts.hdr.printer_major, sts.hdr.printer_minor)); return CUPS_BACKEND_FAILED; } static int shinkos6245_query_serno(struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, char *buf, int buf_len) { struct s6245_cmd_hdr cmd; - struct s6245_getserial_resp *resp = (struct s6245_getserial_resp*) rdbuf; + struct s6245_getserial_resp resp; int ret, num = 0; struct shinkos6245_ctx ctx = { @@ -1872,42 +1860,83 @@ static int shinkos6245_query_serno(struct libusb_device_handle *dev, uint8_t end if ((ret = s6245_do_cmd(&ctx, (uint8_t*)&cmd, sizeof(cmd), - sizeof(*resp) - 1, - &num)) < 0) { + sizeof(resp) - 1, + &num, (void*)&resp)) < 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); + resp.hdr.payload_len = le16_to_cpu(resp.hdr.payload_len); + if (resp.hdr.payload_len > 23) + resp.hdr.payload_len = 23; + resp.data[resp.hdr.payload_len] = 0; + strncpy(buf, (char*)resp.data, buf_len); buf[buf_len-1] = 0; /* ensure it's null terminated */ return CUPS_BACKEND_OK; } +static int shinkos6245_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct shinkos6245_ctx *ctx = vctx; + struct s6245_cmd_hdr cmd; + struct s6245_status_resp status; + int num; + + /* Query Status */ + cmd.cmd = cpu_to_le16(S6245_CMD_GETSTATUS); + cmd.len = cpu_to_le16(0); + + if (s6245_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(status), + &num, (void*)&status)) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.cmd)); + return CUPS_BACKEND_FAILED; + } + + ctx->marker.levelnow = le32_to_cpu(status.count_ribbon_left); + + *markers = &ctx->marker; + *count = 1; + + return CUPS_BACKEND_OK; +} + /* Exported */ #define USB_VID_SHINKO 0x10CE #define USB_PID_SHINKO_S6245 0x001D +#define USB_VID_HITI 0x0D16 +#define USB_PID_HITI_P910L 0x000E + +static const char *shinkos6245_prefixes[] = { + "sinfonia-chcs6245", "hiti-p910l", + // extras + "shinko-chcs6245", + // backwards compatibility + "shinkos6245", "hitip910", + NULL +}; struct dyesub_backend shinkos6245_backend = { .name = "Shinko/Sinfonia CHC-S6245", - .version = "0.07WIP", - .uri_prefix = "shinkos6245", + .version = "0.14WIP", + .uri_prefixes = shinkos6245_prefixes, .cmdline_usage = shinkos6245_cmdline, .cmdline_arg = shinkos6245_cmdline_arg, .init = shinkos6245_init, .attach = shinkos6245_attach, .teardown = shinkos6245_teardown, + .cleanup_job = shinkos6245_cleanup_job, .read_parse = shinkos6245_read_parse, .main_loop = shinkos6245_main_loop, .query_serno = shinkos6245_query_serno, + .query_markers = shinkos6245_query_markers, .devices = { - { USB_VID_SHINKO, USB_PID_SHINKO_S6245, P_SHINKO_S6245, ""}, - { 0, 0, 0, ""} + { USB_VID_SHINKO, USB_PID_SHINKO_S6245, P_SHINKO_S6245, NULL, "shinfonia-chcs6245"}, + { USB_VID_HITI, USB_PID_HITI_P910L, P_SHINKO_S6245, NULL, "hiti-p910l"}, + { 0, 0, 0, NULL, NULL} } }; diff --git a/src/cups/backend_sonyupdr150.c b/src/cups/backend_sonyupdr150.c index dae8bf1..5e8ae2e 100644 --- a/src/cups/backend_sonyupdr150.c +++ b/src/cups/backend_sonyupdr150.c @@ -1,7 +1,7 @@ /* * Sony UP-DR150 Photo Printer CUPS backend -- libusb-1.0 version * - * (c) 2013-2016 Solomon Peachy <pizza@shaftnet.org> + * (c) 2013-2018 Solomon Peachy <pizza@shaftnet.org> * * The latest version of this program can be found at: * @@ -18,11 +18,12 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * [http://www.gnu.org/licenses/gpl-2.0.html] * + * SPDX-License-Identifier: GPL-2.0+ + * */ #include <stdio.h> @@ -39,23 +40,20 @@ #include "backend_common.h" -/* Exported */ -#define USB_VID_SONY 0x054C -#define USB_PID_SONY_UPDR150 0x01E8 -#define USB_PID_SONY_UPDR200 0x035F -#define USB_PID_SONY_UPCR10 0x0226 - /* Private data structure */ +struct updr150_printjob { + uint8_t *databuf; + int datalen; + int copies; +}; + struct updr150_ctx { struct libusb_device_handle *dev; uint8_t endp_up; uint8_t endp_down; int type; - uint8_t *databuf; - int datalen; - - uint32_t copies_offset; + struct marker marker; }; static void* updr150_init(void) @@ -69,26 +67,34 @@ static void* updr150_init(void) return ctx; } -static void updr150_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int updr150_attach(void *vctx, struct libusb_device_handle *dev, int type, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct updr150_ctx *ctx = vctx; - struct libusb_device *device; - struct libusb_device_descriptor desc; UNUSED(jobid); ctx->dev = dev; ctx->endp_up = endp_up; ctx->endp_down = endp_down; + ctx->type = type; + + ctx->marker.color = "#00FFFF#FF00FF#FFFF00"; + ctx->marker.name = "Unknown"; + ctx->marker.levelmax = -1; + ctx->marker.levelnow = -2; + + return CUPS_BACKEND_OK; +} - device = libusb_get_device(dev); - libusb_get_device_descriptor(device, &desc); +static void updr150_cleanup_job(const void *vjob) +{ + const struct updr150_printjob *job = vjob; - ctx->type = lookup_printer_type(&updr150_backend, - desc.idVendor, desc.idProduct); + if (job->databuf) + free(job->databuf); - ctx->copies_offset = 0; + free((void*)job); } static void updr150_teardown(void *vctx) { @@ -97,147 +103,164 @@ static void updr150_teardown(void *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) { +static int updr150_read_parse(void *vctx, const void **vjob, int data_fd, int copies) { struct updr150_ctx *ctx = vctx; int len, run = 1; + uint32_t copies_offset = 0; + + struct updr150_printjob *job = NULL; if (!ctx) return CUPS_BACKEND_FAILED; - if (ctx->databuf) { - free(ctx->databuf); - ctx->databuf = NULL; + job = malloc(sizeof(*job)); + if (!job) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_RETRY_CURRENT; } + memset(job, 0, sizeof(*job)); + job->copies = copies; - ctx->datalen = 0; - ctx->databuf = malloc(MAX_PRINTJOB_LEN); - if (!ctx->databuf) { + job->datalen = 0; + job->databuf = malloc(MAX_PRINTJOB_LEN); + if (!job->databuf) { ERROR("Memory allocation failure!\n"); - return CUPS_BACKEND_FAILED; + updr150_cleanup_job(job); + return CUPS_BACKEND_RETRY_CURRENT; } while(run) { int i; int keep = 0; - i = read(data_fd, ctx->databuf + ctx->datalen, 4); - if (i < 0) + i = read(data_fd, job->databuf + job->datalen, 4); + if (i < 0) { + updr150_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } if (i == 0) break; - memcpy(&len, ctx->databuf + ctx->datalen, sizeof(len)); + memcpy(&len, job->databuf + job->datalen, sizeof(len)); len = le32_to_cpu(len); /* Filter out chunks we don't send to the printer */ - switch (len) { - case 0xffffff60: - case 0xffffff6a: - case 0xffffffeb: - case 0xffffffec: - case 0xffffffed: - case 0xfffffff4: - case 0xfffffff8: - case 0xfffffff9: - case 0xfffffffa: - case 0xfffffffb: - case 0xfffffffc: - case 0xffffffff: - 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; - if (ctx->type == P_SONY_UPDR150) - run = 0; - break; - case 0xfffffff7: - if(dyesub_debug) - DEBUG("Block ID '%08x' (len %d)\n", len, 0); - len = 0; - if (ctx->type == P_SONY_UPCR10) - run = 0; - break; - case 0xffffffef: - case 0xfffffff5: - 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 CUPS_BACKEND_CANCEL; - } else { - /* Only keep these chunks */ + if (len & 0xf0000000) { + switch (len) { + case 0xfffffff3: + if(dyesub_debug) + DEBUG("Block ID '%08x' (len %d)\n", len, 0); + len = 0; + if (ctx->type == P_SONY_UPDR150) + run = 0; + break; + case 0xfffffff7: + if(dyesub_debug) + DEBUG("Block ID '%08x' (len %d)\n", len, 0); + len = 0; + if (ctx->type == P_SONY_UPCR10) + run = 0; + break; + case 0xfffffff8: // 895 + case 0xfffffff4: // 897 + if(dyesub_debug) + DEBUG("Block ID '%08x' (len %d)\n", len, 0); + len = 0; + if (ctx->type == P_SONY_UPD89x) + run = 0; + break; + case 0xffffffeb: + case 0xffffffec: + case 0xffffffed: + case 0xffffffee: + case 0xffffffef: + case 0xfffffff5: if(dyesub_debug) - DEBUG("Data block (len %d)\n", len); - keep = 1; + DEBUG("Block ID '%08x' (len %d)\n", len, 4); + len = 4; + break; + default: + if(dyesub_debug) + DEBUG("Block ID '%08x' (len %d)\n", len, 0); + len = 0; + break; } - break; + } else { + /* Only keep these chunks */ + if(dyesub_debug) + DEBUG("Data block (len %d)\n", len); + keep = 1; } if (keep) - ctx->datalen += sizeof(uint32_t); + job->datalen += sizeof(uint32_t); /* Read in the data chunk */ while(len > 0) { - i = read(data_fd, ctx->databuf + ctx->datalen, len); - if (i < 0) + i = read(data_fd, job->databuf + job->datalen, len); + if (i < 0) { + updr150_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } if (i == 0) break; - if (ctx->databuf[ctx->datalen] == 0x1b && - ctx->databuf[ctx->datalen + 1] == 0xee) { + if (job->databuf[job->datalen] == 0x1b && + job->databuf[job->datalen + 1] == 0xee) { if (ctx->type == P_SONY_UPCR10) - ctx->copies_offset = ctx->datalen + 8; + copies_offset = job->datalen + 8; else - ctx->copies_offset = ctx->datalen + 12; + copies_offset = job->datalen + 12; } if (keep) - ctx->datalen += i; + job->datalen += i; len -= i; } } - if (!ctx->datalen) + if (!job->datalen) { + updr150_cleanup_job(job); return CUPS_BACKEND_CANCEL; + } + + /* Some models specify copies in the print job */ + if (copies_offset) { + job->databuf[copies_offset] = job->copies; + job->copies = 1; + } + + *vjob = job; return CUPS_BACKEND_OK; } -static int updr150_main_loop(void *vctx, int copies) { +static int updr150_main_loop(void *vctx, const void *vjob) { struct updr150_ctx *ctx = vctx; int i, ret; + int copies; + + const struct updr150_printjob *job = vjob; if (!ctx) return CUPS_BACKEND_FAILED; + if (!job) + return CUPS_BACKEND_FAILED; - /* Some models specify copies in the print job */ - if (ctx->copies_offset) { - ctx->databuf[ctx->copies_offset] = copies; - copies = 1; - } + copies = job->copies; top: i = 0; - while (i < ctx->datalen) { + while (i < job->datalen) { uint32_t len; - memcpy(&len, ctx->databuf + i, sizeof(len)); + memcpy(&len, job->databuf + i, sizeof(len)); len = le32_to_cpu(len); i += sizeof(uint32_t); if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->databuf + i, len))) + job->databuf + i, len))) return CUPS_BACKEND_FAILED; i += len; @@ -275,21 +298,54 @@ static int updr150_cmdline_arg(void *vctx, int argc, char **argv) return 0; } +static int updr150_query_markers(void *vctx, struct marker **markers, int *count) +{ + struct updr150_ctx *ctx = vctx; + + *markers = &ctx->marker; + *count = 1; + + return CUPS_BACKEND_OK; +} + +static const char *sonyupdr150_prefixes[] = { + "sonyupdr150", // Family name. + "sony-updr150", "sony-updr200", "sony-upcr10", + // Backwards compatibility + "sonyupdr200", "sonyupcr10", +// "sonyupd895", "sonyupd897", "sonyupd898", + NULL +}; + +/* Exported */ +#define USB_VID_SONY 0x054C +#define USB_PID_SONY_UPDR150 0x01E8 +#define USB_PID_SONY_UPDR200 0x035F +#define USB_PID_SONY_UPCR10 0x0226 +//#define USB_PID_SONY_UPD895 XXXXX // 0x7ea6? +//#define USB_PID_SONY_UPD897 XXXXX // 0xbce7? +//#define USB_PID_SONY_UPD898 XXXXX // 0x589a? + struct dyesub_backend updr150_backend = { .name = "Sony UP-DR150/UP-DR200/UP-CR10", - .version = "0.19", - .uri_prefix = "sonyupdr150", + .version = "0.26", + .uri_prefixes = sonyupdr150_prefixes, .cmdline_arg = updr150_cmdline_arg, .init = updr150_init, .attach = updr150_attach, .teardown = updr150_teardown, + .cleanup_job = updr150_cleanup_job, .read_parse = updr150_read_parse, .main_loop = updr150_main_loop, + .query_markers = updr150_query_markers, .devices = { - { USB_VID_SONY, USB_PID_SONY_UPDR150, P_SONY_UPDR150, ""}, - { USB_VID_SONY, USB_PID_SONY_UPDR200, P_SONY_UPDR150, ""}, - { USB_VID_SONY, USB_PID_SONY_UPCR10, P_SONY_UPCR10, ""}, - { 0, 0, 0, ""} + { USB_VID_SONY, USB_PID_SONY_UPDR150, P_SONY_UPDR150, NULL, "sony-updr150"}, + { USB_VID_SONY, USB_PID_SONY_UPDR200, P_SONY_UPDR150, NULL, "sony-updr200"}, + { USB_VID_SONY, USB_PID_SONY_UPCR10, P_SONY_UPCR10, NULL, "sony-upcr10"}, +// { USB_VID_SONY, USB_PID_SONY_UPD895MD, P_SONY_UPD89x, NULL, "sonyupd895"}, +// { USB_VID_SONY, USB_PID_SONY_UPD897MD, P_SONY_UPD89x, NULL, "sonyupd897"}, +// { USB_VID_SONY, USB_PID_SONY_UPD898MD, P_SONY_UPD89x, NULL, "sonyupd898"}, + { 0, 0, 0, NULL, NULL} } }; @@ -299,25 +355,18 @@ struct dyesub_backend updr150_backend = { arguments. The purpose of the commands is unknown, but they presumably instruct the driver to perform certain things. - If you treat these 4 bytes as a 32-bit little-endian number, if the - most significant four bits are bits are non-zero, the value is is to + If you treat these 4 bytes as a 32-bit little-endian number, if any of the + most significant 4 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 + eb ff ff ff ?? 00 00 00 + ec ff ff ff ?? 00 00 00 + ed ff ff ff ?? 00 00 00 + ee ff ff ff ?? 00 00 00 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) @@ -403,6 +452,117 @@ f7 ff ff ff SH SH SH SH == Plane size, Big Endian (Rows * Cols * 3) NN == Copies + ************** + + Sony UP-D895 spool format: + + XX XX == cols, BE (fixed at 1280/0x500) + YY YY == rows, BE (798/0x031e,1038/0x040e,1475/0x05c3, 2484/09b4) @ 960/1280/1920/3840+4096 + SS SS SS SS == data len (rows * cols, LE) + S' S' S' S' == data len (rows * cols, BE) + NN == copies (1 -> ??) + GG GG == ??? 0000/0050/011b/04aa/05aa at each resolution. + G' == Gamma 01 (soft), 03 (hard), 02 (normal) + + 9c ff ff ff 97 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff + + 14 00 00 00 + 1b 15 00 00 00 0d 00 00 00 00 00 01 GG GG 00 00 YY YY XX XX + 0b 00 00 00 + 1b ea 00 00 00 00 S' S' S' S' 00 + SS SS SS SS + ...DATA... (rows * cols) + ff ff ff ff + 09 00 00 00 + 1b ee 00 00 00 02 00 00 NN + 0f 00 00 00 + 1b e5 00 00 00 08 00 00 00 00 00 00 00 00 00 + 0c 00 00 00 + 1b c0 00 00 00 05 00 02 00 00 01 G' + 11 00 00 00 + 1b c0 00 01 00 0a 00 02 01 00 06 00 00 00 00 00 00 + 12 00 00 00 + 1b e1 00 00 00 0b 00 00 08 00 GG GG 00 00 YY YY XX XX + 07 00 00 00 + 1b 0a 00 00 00 00 00 + fd ff ff ff f7 ff ff ff f8 ff ff ff + + ************** + + Sony UP-D897 spool format: + + NN NN == copies (00 for printer selected) + XX XX == cols (fixed @ 1280) + YY YY == rows + GG == gamma -- Table 2 == 2, Table 1 == 3, Table 3 == 1, Table 4 == 4 + DD == "dark" +- 64. + LL == "light" +- 64. + AA == "advanced" +- 32. + SS == Sharpness 0-14 + ZZ ZZ ZZ ZZ == Data length (BE) + Z` Z` Z` Z` == Data length (LE) + + + 83 ff ff ff fc ff ff ff fb ff ff ff f5 ff ff ff f1 ff ff ff f0 ff ff ff ef ff ff ff + + 07 00 00 00 + 1b 15 00 00 00 0d 00 + 0d 00 00 00 + 00 00 00 00 01 00 a2 00 00 YY YY XX XX + + 0b 00 00 00 + 1b ea 00 00 00 00 ZZ ZZ ZZ ZZ 00 + + Z` Z` Z` Z` + ...DATA... + + ea ff ff ff + + 07 00 00 00 + 1b ee 00 00 00 02 00 + 02 00 00 00 + 00 NN + + ee ff ff ff 01 00 00 00 + + 07 00 00 00 + 1b e5 00 00 00 08 00 + 08 00 00 00 + 00 00 00 00 DD LL SS AA + + eb ff ff ff ?? 00 00 00 <--- 02/05 5 at #3, 2 otherwise. Sharpness? + + 07 00 00 00 + 1b c0 00 00 00 05 00 + 05 00 00 00 + 02 00 00 01 GG + + ec ff ff ff ?? 00 00 00 <--- 01/00/02/01/01 Seen. Unknown. + + 07 00 00 00 + 1b c0 00 01 00 0a 00 + 0a 00 00 00 + 02 01 00 06 00 00 00 00 00 00 + + ed ff ff ff 00 00 00 00 + + 07 00 00 00 + 1b e1 00 00 00 0b 00 + 0b 00 00 00 + 00 08 00 00 a2 00 00 YY YY XX XX + + fa ff ff ff + + 07 00 00 00 + 1b 0a 00 00 00 00 00 + + fc ff ff ff + fd ff ff ff + ff ff ff ff + + 07 00 00 00 + 1b 17 00 00 00 00 00 + f4 ff ff ff */ diff --git a/src/cups/blacklist b/src/cups/blacklist index 0ca284c..157fd47 100644 --- a/src/cups/blacklist +++ b/src/cups/blacklist @@ -90,6 +90,9 @@ # Canon SELPHY CP1200 0x04a9 0x32b1 blacklist +# Canon SELPHY CP1300 +0x04a9 0x32db blacklist + # Canon SELPHY ES1 0x04a9 0x3141 blacklist @@ -153,6 +156,9 @@ # Mitsubishi CP-D80DW 0x06d3 0x3b36 blacklist +# Mitsubishi CP-D90DW +0x06d3 0x3b60 blacklist + # Mitsubishi CP-K60DW-S 0x06d3 0x3b31 blacklist @@ -196,17 +202,19 @@ # DNP DS80 + Citizen CX-W + Mitsubishi CP3800 0x1343 0x0004 blacklist -# DNP DS-RX1 + Citizen CY +# DNP DS-RX1 + Citizen CY (Plus RX1HS and CY-02) 0x1343 0x0005 blacklist -# Citizen CW-02 +# Citizen CW-02 / OP900II 0x1343 0x0006 blacklist +# Citizen CX-02 +0x1343 0x000A blacklist + # DNP DS80D -0x1343 0x0007 blacklist +0x1343 0x0008 blacklist # DNP DS620 -0x1343 0x0008 blacklist 0x1452 0x8b01 blacklist # DNP DS820 @@ -218,3 +226,14 @@ # Fujifilm ASK-300 0x04cb 0x5006 blacklist +# HiTi P910L +0x0d16 0x000e blacklist + +# Magicard Tango 2E +0x0c1f 0x1800 blacklist + +# Magicard Enduro +0x0c1f 0x4800 blacklist + +# Magicard Enduro+ +0x0c1f 0x880a blacklist diff --git a/src/cups/command.types b/src/cups/command.types index e03f094..f8eb8b2 100644 --- a/src/cups/command.types +++ b/src/cups/command.types @@ -13,8 +13,7 @@ # 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. +# along with this program. If not, see <https://www.gnu.org/licenses/>. # # Define the new application/vnd.cups-command filetype... diff --git a/src/cups/commandtoepson.c b/src/cups/commandtoepson.c index 0582df2..7bac83c 100644 --- a/src/cups/commandtoepson.c +++ b/src/cups/commandtoepson.c @@ -14,8 +14,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Contents: * diff --git a/src/cups/cups-calibrate.c b/src/cups/cups-calibrate.c index 205157b..de0a9e1 100644 --- a/src/cups/cups-calibrate.c +++ b/src/cups/cups-calibrate.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Contents: * diff --git a/src/cups/cups-genppd.c b/src/cups/cups-genppd.c new file mode 100644 index 0000000..fde7c46 --- /dev/null +++ b/src/cups/cups-genppd.c @@ -0,0 +1,607 @@ +/* + * PPD file generation program for the CUPS drivers. + * + * Copyright 1993-2008 by Mike Sweet and Robert Krawitz. + * + * 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, see <https://www.gnu.org/licenses/>. + * + * Contents: + * + * main() - Process files on the command-line... + * cat_ppd() - Copy the named PPD to stdout. + * generate_ppd() - Generate a PPD file. + * getlangs() - Get a list of available translations. + * help() - Show detailed help. + * is_special_option() - Determine if an option should be grouped. + * list_ppds() - List the available drivers. + * print_group_close() - Close a UI group. + * print_group_open() - Open a new UI group. + * printlangs() - Print list of available translations. + * printmodels() - Print a list of available models. + * usage() - Show program usage. + * write_ppd() - Write a PPD file. + */ + +#include "genppd.h" + +static int generate_ppd(const char *prefix, int verbose, + const stp_printer_t *p, const char *language, + ppd_type_t ppd_type, int use_compression); +static int generate_model_ppds(const char *prefix, int verbose, + const stp_printer_t *printer, + const char *language, int which_ppds, + int use_compression); +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, int use_compression); +static int gpclose(gpFile f, int use_compression); + +/* + * 'main()' - Process files on the command-line... + */ + +int /* O - Exit status */ +main(int argc, /* I - Number of command-line arguments */ + char *argv[]) /* I - Command-line arguments */ +{ + int i; /* Looping var */ + const char *prefix; /* Directory prefix for output */ + const char *language = NULL; /* Language */ + const stp_printer_t *printer; /* Pointer to printer driver */ + int verbose = 0; /* Verbose messages */ + char **langs = NULL; /* Available translations */ + char **models = NULL; /* Models to output, all if NULL */ + int opt_printlangs = 0; /* Print available translations */ + int opt_printmodels = 0;/* Print available models */ + int which_ppds = 2; /* Simplified PPD's = 1, full = 2, + no color opts = 4 */ + unsigned parallel = 1; /* Generate PPD files in parallel */ + unsigned rotor = 0; /* Rotor for generating PPD files in parallel */ + pid_t *subprocesses = NULL; + int parent = 1; +#ifdef HAVE_LIBZ + int use_compression = 1; +#else + int use_compression = 0; +#endif + int skip_duplicate_ppds = 0; + + + /* + * Parse command-line args... + */ + + prefix = CUPS_MODELDIR; + + for (;;) + { + if ((i = getopt(argc, argv, "23hvqc:p:l:LMVd:saNCbZzS")) == -1) + break; + + switch (i) + { + case '2': + cups_ppd_ps_level = 2; + break; + case '3': + cups_ppd_ps_level = 3; + break; + case 'h': + help(); + exit(EXIT_SUCCESS); + break; + case 'v': + verbose = 1; + break; + case 'q': + verbose = 0; + break; + case 'c': + fputs("ERROR: -c option no longer supported!\n", stderr); + break; + case 'p': + prefix = optarg; +# ifdef DEBUG + fprintf(stderr, "DEBUG: prefix: %s\n", prefix); +# endif + break; + case 'l': + language = optarg; + break; + case 'L': + opt_printlangs = 1; + break; + case 'M': + opt_printmodels = 1; + break; + case 'd': + cups_modeldir = optarg; + break; + case 's': + which_ppds = 1; + break; + case 'a': + which_ppds = 3; + break; + case 'C': + which_ppds |= 4; + break; + case 'N': + localize_numbers = !localize_numbers; + break; + case 'V': + printf("cups-genppd version %s, " + "Copyright 1993-2008 by Michael R Sweet and Robert Krawitz.\n\n", + VERSION); + printf("Default CUPS PPD PostScript Level: %d\n", cups_ppd_ps_level); + printf("Default PPD location (prefix): %s\n", CUPS_MODELDIR); + printf("Default base locale directory: %s\n\n", PACKAGE_LOCALE_DIR); + puts("This program is free software; you can redistribute it and/or\n" + "modify it under the terms of the GNU General Public License,\n" + "version 2, as published by the Free Software Foundation.\n" + "\n" + "This program is distributed in the hope that it will be useful,\n" + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" + "GNU General Public License for more details.\n"); + exit(EXIT_SUCCESS); + break; + 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; + case 'S': + skip_duplicate_ppds = 1; + break; + default: + usage(); + exit(EXIT_FAILURE); + break; + } + } +#ifdef HAVE_LIBZ + if (use_compression) + gpext = ".gz"; + else +#endif + gpext = ""; + if (optind < argc) { + int n, numargs; + numargs = argc-optind; + models = stp_malloc((numargs+1) * sizeof(char*)); + for (n=0; n<numargs; n++) + { + models[n] = argv[optind+n]; + } + models[numargs] = (char*)NULL; + } + +/* + * Initialise libgutenprint + */ + + stp_init(); + + langs = getlangs(); + + /* + * Print lists + */ + + if (opt_printlangs) + { + printlangs(langs); + exit(EXIT_SUCCESS); + } + + if (opt_printmodels) + { + printmodels(verbose); + exit(EXIT_SUCCESS); + } + + /* + * Write PPD files... + */ + + if (getenv("STP_PARALLEL")) + { + parallel = atoi(getenv("STP_PARALLEL")); + if (parallel < 1 || parallel > 256) + parallel = 1; + } + if (parallel > 1) + { + subprocesses = stp_malloc(sizeof(pid_t) * parallel); + for (rotor = 0; rotor < parallel; rotor++) + { + pid_t pid = fork(); + if (pid == 0) /* Child */ + { + parent = 0; + break; + } + else if (pid > 0) + subprocesses[rotor] = pid; + else + { + fprintf(stderr, "Cannot fork: %s\n", strerror(errno)); + return 1; + } + } + } + if (models) + { + int n; + for (n=0; models[n]; n++) + { + printer = stp_get_printer_by_driver(models[n]); + if (!printer) + printer = stp_get_printer_by_long_name(models[n]); + + if (n % parallel == rotor && printer) + { + if (printer) + { + if (generate_model_ppds(prefix, verbose, printer, language, + which_ppds, use_compression)) + return 1; + } + else + { + printf("Driver not found: %s\n", models[n]); + return (1); + } + } + } + stp_free(models); + } + else + { + stp_string_list_t *seen_models = NULL; + if (skip_duplicate_ppds) + seen_models = stp_string_list_create(); + + for (i = 0; i < stp_printer_model_count(); i++) + { + printer = stp_get_printer_by_index(i); + if (skip_duplicate_ppds) + { + char model_family[128]; + (void) snprintf(model_family, 127, "%d_%s", + stp_printer_get_model(printer), + stp_printer_get_family(printer)); + if (stp_string_list_is_present(seen_models, model_family)) + continue; + else + stp_string_list_add_string_unsafe(seen_models, model_family, + model_family); + } + + if (i % parallel == rotor && printer) + { + if (! verbose && (i % 100) == 0) + fputc('.',stderr); + if (generate_model_ppds(prefix, verbose, printer, language, + which_ppds, use_compression)) + return 1; + } + } + if (seen_models) + stp_string_list_destroy(seen_models); + } + if (subprocesses) + { + pid_t pid; + do + { + int status; + pid = waitpid(-1, &status, 0); + if (pid > 0 && (!WIFEXITED(status) || WEXITSTATUS(status) != 0)) + { + fprintf(stderr, "failed!\n"); + return 1; + } + } while (pid > 0); + stp_free(subprocesses); + } + if (parent && !verbose) + fprintf(stderr, " done.\n"); + + return (0); +} + +static int +generate_model_ppds(const char *prefix, int verbose, + const stp_printer_t *printer, const char *language, + int which_ppds, int use_compression) +{ + if ((which_ppds & 1) && + generate_ppd(prefix, verbose, printer, language, PPD_SIMPLIFIED, + use_compression)) + return (1); + if ((which_ppds & 2) && + generate_ppd(prefix, verbose, printer, language, PPD_STANDARD, + use_compression)) + return (1); + if ((which_ppds & 4) && + generate_ppd(prefix, verbose, printer, language, PPD_NO_COLOR_OPTS, + use_compression)) + return (1); + return 0; +} + +/* + * 'generate_ppd()' - Generate a PPD file. + */ + +static int /* O - Exit status */ +generate_ppd( + const char *prefix, /* I - PPD directory prefix */ + int verbose, /* I - Verbosity level */ + const stp_printer_t *p, /* I - Driver */ + const char *language, /* I - Primary language */ + ppd_type_t ppd_type, /* I - full, simplified, no color */ + int use_compression) /* I - compress output */ +{ + int status; /* Exit status */ + 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; + + /* + * Skip the PostScript drivers... + */ + + if (!strcmp(stp_printer_get_family(p), "ps") || + !strcmp(stp_printer_get_family(p), "raw")) + return (0); + + /* + * Make sure the destination directory exists... + */ + + if (stat(prefix, &dir) && !S_ISDIR(dir.st_mode)) + { + if (mkdir(prefix, 0777)) + { + printf("cups-genppd: Cannot create directory %s: %s\n", + prefix, strerror(errno)); + exit(EXIT_FAILURE); + } + } + + /* + * The files will be named stp-<driver>.<major>.<minor>.ppd, for + * example: + * + * stp-escp2-ex.5.0.ppd + * + * or + * + * stp-escp2-ex.5.0.ppd.gz + */ + + switch (ppd_type) + { + case PPD_SIMPLIFIED: + ppd_infix = ".sim"; + break; + case PPD_NO_COLOR_OPTS: + ppd_infix = ".nc"; + break; + default: + ppd_infix = ""; + } + + snprintf(filename, sizeof(filename) - 1, "%s/stp-%s.%s%s%s%s", + prefix, stp_printer_get_driver(p), GUTENPRINT_RELEASE_VERSION, + ppd_infix, ppdext, gpext); + + /* + * Open the PPD file... + */ + + if ((fp = gpopen(filename, "wb", use_compression)) == NULL) + { + fprintf(stderr, "cups-genppd: Unable to create file \"%s\" - %s.\n", + filename, strerror(errno)); + return (2); + } + + if (verbose) + fprintf(stderr, "Writing %s...\n", filename); + + snprintf(ppd_location, sizeof(ppd_location), "%s%s%s/%s", + cups_modeldir, + cups_modeldir[strlen(cups_modeldir) - 1] == '/' ? "" : "/", + language ? language : "C", + basename(filename)); + + snprintf(filename, sizeof(filename) - 1, "stp-%s.%s%s%s", + stp_printer_get_driver(p), GUTENPRINT_RELEASE_VERSION, + ppd_infix, ppdext); + + status = write_ppd(fp, p, language, ppd_location, ppd_type, + basename(filename), use_compression); + + gpclose(fp, use_compression); + + return (status); +} + + +/* + * 'help()' - Show detailed help. + */ + +void +help(void) +{ + puts("Generate Gutenprint PPD files for use with CUPS\n\n"); + usage(); + puts("\nExamples: LANG=de_DE cups-genppd -p ppd -c /usr/share/locale\n" + " cups-genppd -L -c /usr/share/locale\n" + " cups-genppd -M -v\n\n" + "Commands:\n" + " -h Show this help message.\n" + " -L List available translations (message catalogs).\n" + " -M List available printer models.\n" + " -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"); + puts( +#ifdef HAVE_LIBZ + " -z Compress PPD files.\n" + " -Z Don't compress PPD files.\n" +#endif + " -S Skip PPD files with duplicate model identifiers.\n" + "models:\n" + " A list of printer models, either the driver or quoted full name.\n"); +} + +/* + * 'usage()' - Show program usage. + */ + +void +usage(void) +{ + puts("Usage: cups-genppd " + "[-l locale] [-p prefix] [-s | -a] [-q] [-v] models...\n" + " cups-genppd -L\n" + " cups-genppd -M [-v]\n" + " cups-genppd -h\n" + " cups-genppd -V\n"); +} + +/* + * 'printlangs()' - Print list of available translations. + */ + +void +printlangs(char **langs) /* I - Languages */ +{ + if (langs) + { + int n = 0; + while (langs && langs[n]) + { + puts(langs[n]); + n++; + } + } + exit(EXIT_SUCCESS); +} + + +/* + * 'printmodels()' - Print a list of available models. + */ + +void +printmodels(int verbose) /* I - Verbosity level */ +{ + const stp_printer_t *p; + int i; + + for (i = 0; i < stp_printer_model_count(); i++) + { + p = stp_get_printer_by_index(i); + if (p && + strcmp(stp_printer_get_family(p), "ps") != 0 && + strcmp(stp_printer_get_family(p), "raw") != 0) + { + if(verbose) + printf("%-20s%s\n", stp_printer_get_driver(p), + stp_printer_get_long_name(p)); + else + printf("%s\n", stp_printer_get_driver(p)); + } + } + exit(EXIT_SUCCESS); +} + +static gpFile +gpopen(const char *path, const char *mode, int use_compression) +{ +#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 use_compression) +{ + 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; +} diff --git a/src/cups/cups-genppdupdate.in b/src/cups/cups-genppdupdate.in index 8f0137b..1376884 100644 --- a/src/cups/cups-genppdupdate.in +++ b/src/cups/cups-genppdupdate.in @@ -13,8 +13,7 @@ # 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. +# along with this program. If not, see <https://www.gnu.org/licenses/>. use strict; use Getopt::Long; @@ -44,6 +43,7 @@ our $opt_r; # Gutenprint version our $opt_i; # Interactive our $opt_f; # Force upgrade our $opt_l; # Language +our $opt_x; # Allow update across major.minor version my $debug = 0; my $verbose = 0; # Verbose output @@ -213,6 +213,7 @@ sub HELP_MESSAGE($;$$$) { print $fh " -r version Use PPD files for Gutenprint major.minor version.\n"; print $fh " -f Ignore new PPD file safety checks.\n"; print $fh " -i Prompt (interactively) for each PPD file.\n"; + print $fh " -x Allow update across major Gutenprint releases.\n"; print $fh " -l language Language choice (Gutenprint 5.1 or below).\n"; print $fh " Choices: " . join(" ", @languages) . "\n"; print $fh " Or -loriginal to preserve original language\n"; @@ -262,6 +263,7 @@ sub parse_options () { "p=s" => \$opt_p, "P=s" => \$opt_P, "v" => \$opt_v, + "x" => \$opt_x, "N" => \$opt_N, "o=s" => \$opt_o, "r=s" => \$opt_r, @@ -541,14 +543,28 @@ sub update_ppd ($) { return 0; } - my ($ndt, $nopt, $nres, $ndef, $source_data) = get_ppd_data($source_fd, 1, 1, 1, 1, 1); + my ($ndt, $nopt, $nres, $ndef, $source_data, $new_fileversion) = get_ppd_data($source_fd, 1, 1, 1, 1, 1); + my $new_majversion = $new_fileversion; + $new_majversion =~ s/^([[:digit:]]+\.[[:digit:]]).*/$1/; if (! defined $ndt) { print "Unable to retrieve PPD file for $ppd_source_filename!\n"; close ORIG; return 0; } + # Extract the default values from the original PPD... + + seek(ORIG, 0, 0); + + my ($odt, $oopt, $ores, $odef, $ignore, $old_fileversion) = get_ppd_data(ORIG, 1, 0, 1, 1, 0); + my $old_majversion = $old_fileversion; + $old_majversion =~ s/^([[:digit:]]+\.[[:digit:]]).*/$1/; + if ($interactive) { + if ($old_majversion ne $new_majversion) { + print "WARNING: Current PPD file $ppd_source_filename has different version ($old_majversion)\n"; + print " from new PPD file $new_ppd_filename ($new_majversion).\n"; + } print "Update PPD $ppd_source_filename from $new_ppd_filename [nyq]? "; my $input = readline(*STDIN); if ($input =~ /^q/i) { @@ -562,17 +578,16 @@ sub update_ppd ($) { } } - # Extract the default values from the original PPD... - - seek(ORIG, 0, 0); - - my ($odt, $oopt, $ores, $odef) = get_ppd_data(ORIG, 1, 0, 1, 1, 0); - # Close original and temporary files... close ORIG; if (! $server_multicat && ! close $source_fd) { - print "Unable to retrieve new PPD file: $!\n"; + print STDERR "Unable to retrieve new PPD file: $!\n"; + return -1; + } + + if (! $opt_x && !$opt_i && $old_majversion ne $new_majversion) { + print STDERR "Skipping $ppd_source_filename: mismatched file versions (old $old_majversion, new $new_majversion); will not update without -x!\n"; return -1; } @@ -668,7 +683,7 @@ sub update_ppd ($) { print STDOUT "Would update $ppd_source_filename to $ppd_dest_filename using $new_ppd_filename\n"; } } - return 0; + return -1; } if (! $reset_defaults) { @@ -877,6 +892,7 @@ sub get_ppd_data(*$$$$$) { my ($fh, $types, $opts, $resolutions, $defaults, $data) = @_; my (%options, %defaults, %resolution_map, %default_types); my ($fileversion_found) = 0; + my ($fileversion) = ""; my $cur_opt = ""; my (@optionlist); my ($source_data) = ""; @@ -890,7 +906,10 @@ sub get_ppd_data(*$$$$$) { if ($resolutions || $types || $opts || $defaults || $data) { while (<$fh>) { last if $_ eq "*%*%EOFEOF\n"; - $fileversion_found = 1 if (/^\*FileVersion:/); + if (/^\*FileVersion:/) { + $fileversion_found = 1; + ($fileversion) = /^\*FileVersion:\s*"(.*)"$/; + } $source_data .= $_ if ($data); chomp; if (($types || $opts) && m/^\*OpenUI/) { @@ -921,6 +940,6 @@ sub get_ppd_data(*$$$$$) { } } } - return (undef, undef, undef, undef, undef) if (! $fileversion_found); - return (\%default_types, \%options, \%resolution_map, \%defaults, $source_data); + return (undef, undef, undef, undef, undef, undef) if (! $fileversion_found); + return (\%default_types, \%options, \%resolution_map, \%defaults, $source_data, $fileversion); } diff --git a/src/cups/genppd.c b/src/cups/genppd.c index 2ae4124..aa47aad 100644 --- a/src/cups/genppd.c +++ b/src/cups/genppd.c @@ -14,8 +14,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Contents: * @@ -38,51 +37,22 @@ * Include necessary headers... */ +#include "genppd.h" #pragma GCC diagnostic ignored "-Wformat-nonliteral" -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <dirent.h> -#include <unistd.h> -#include <fcntl.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <string.h> -#include <ctype.h> -#include <errno.h> -#include <libgen.h> -#include <strings.h> -#include <sys/types.h> -#include <sys/wait.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 */ -#ifdef HAVE_LIBZ -#include <zlib.h> -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> +const char *ppdext = ".ppd"; +const char *cups_modeldir = CUPS_MODELDIR; +const char *gpext = ""; -#include "i18n.h" +static int use_compression; -static int use_base_version = 0; +int use_base_version = 0; /* * Some applications use the XxYdpi tags rather than the actual @@ -96,13 +66,6 @@ static int use_base_version = 0; #define MAXIMUM_SAFE_PPD_Y_RESOLUTION (720) #define MAXIMUM_SAFE_PPD_X_RESOLUTION (1500) -typedef enum -{ - PPD_STANDARD = 0, - PPD_SIMPLIFIED = 1, - PPD_NO_COLOR_OPTS = 2 -} ppd_type_t; - /* * Note: * @@ -117,8 +80,6 @@ int localize_numbers = 0; * File handling stuff... */ -static const char *ppdext = ".ppd"; - typedef struct /**** Media size values ****/ { const char *name, /* Media size name */ @@ -166,43 +127,13 @@ 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... */ -#ifdef CUPS_DRIVER_INTERFACE -static int cat_ppd(const char *uri); -static int list_ppds(const char *argv0); -#else /* !CUPS_DRIVER_INTERFACE */ -static int generate_ppd(const char *prefix, int verbose, - const stp_printer_t *p, const char *language, - ppd_type_t ppd_type); -static int generate_model_ppds(const char *prefix, int verbose, - const stp_printer_t *printer, - const char *language, int which_ppds); -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, ...) __attribute__((format(__printf__, 2, 3))); -static char **getlangs(void); static int is_special_option(const char *name); static void print_group_close(gpFile fp, stp_parameter_class_t p_class, stp_parameter_level_t p_level, @@ -212,9 +143,6 @@ 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(gpFile fp, const stp_printer_t *p, - const char *language, const char *ppd_location, - ppd_type_t ppd_type, const char *filename); /* @@ -222,747 +150,6 @@ static int write_ppd(gpFile fp, const stp_printer_t *p, */ -#ifdef CUPS_DRIVER_INTERFACE - -/* - * 'main()' - Process files on the command-line... - */ - -int /* O - Exit status */ -main(int argc, /* I - Number of command-line arguments */ - char *argv[]) /* I - Command-line arguments */ -{ - /* - * Force POSIX locale, since stp_init incorrectly calls setlocale... - */ - - (void) setenv("LANG", "C", 1); - (void) setenv("LC_ALL", "C", 1); - (void) setenv("LC_NUMERIC", "C", 1); - - /* - * Initialise libgutenprint - */ - - stp_init(); - - /* - * Process command-line... - */ - - if (argc == 2 && !strcmp(argv[1], "list")) - return (list_ppds(argv[0])); - else if (argc == 3 && !strcmp(argv[1], "cat")) - return (cat_ppd(argv[2])); - else if (argc == 2 && !strcmp(argv[1], "org.gutenprint.multicat")) - { - char buf[1024]; - int status = 0; - while (fgets(buf, sizeof(buf) - 1, stdin)) - { - size_t len = strlen(buf); - if (len == 0) - continue; - if (buf[len - 1] == '\n') - buf[len - 1] = '\0'; - status |= cat_ppd(buf); - fputs("*%*%EOFEOF\n", stdout); - (void) fflush(stdout); - } - } - else if (argc == 2 && !strcmp(argv[1], "VERSION")) - { - printf("%s\n", VERSION); - return (0); - } - else if (argc == 2 && !strcasecmp(argv[1], "org.gutenprint.extensions")) - { - printf("org.gutenprint.multicat"); - return (0); - } - else - { - fprintf(stderr, "Usage: %s list\n", argv[0]); - fprintf(stderr, " %s cat URI\n", argv[0]); - return (1); - } - return (0); -} - - -/* - * 'cat_ppd()' - Copy the named PPD to stdout. - */ - -static int /* O - Exit status */ -cat_ppd(const char *uri) /* I - Driver URI */ -{ - char scheme[64], /* URI scheme */ - userpass[32], /* URI user/pass (unused) */ - hostname[32], /* URI hostname */ - resource[1024]; /* URI resource */ - int port; /* URI port (unused) */ - http_uri_status_t status; /* URI decode status */ - const stp_printer_t *p; /* Printer driver */ - const char *lang = NULL; - char *s; - char filename[1024], /* Filename */ - ppd_location[1024]; /* Installed location */ - const char *infix = ""; - ppd_type_t ppd_type = PPD_STANDARD; - - if ((status = httpSeparateURI(HTTP_URI_CODING_ALL, uri, - scheme, sizeof(scheme), - userpass, sizeof(userpass), - hostname, sizeof(hostname), - &port, resource, sizeof(resource))) - < HTTP_URI_OK) - { - fprintf(stderr, "ERROR: Bad ppd-name \"%s\" (%d)!\n", uri, status); - return (1); - } - - if (strcmp(scheme, "gutenprint." GUTENPRINT_RELEASE_VERSION) != 0) - { - fprintf(stderr, "ERROR: Gutenprint version mismatch!\n"); - return(1); - } - - s = strchr(resource + 1, '/'); - if (s) - { - lang = s + 1; - *s = '\0'; - } - - if ((p = stp_get_printer_by_driver(hostname)) == NULL) - { - fprintf(stderr, "ERROR: Unable to find driver \"%s\"!\n", hostname); - return (1); - } - - if (strcmp(resource + 1, "simple") == 0) - { - infix = ".sim"; - ppd_type = PPD_SIMPLIFIED; - } - else if (strcmp(resource + 1, "nocolor") == 0) - { - infix = ".nc"; - ppd_type = PPD_NO_COLOR_OPTS; - } - - /* - * This isn't really the right thing to do. We really shouldn't - * be embedding filenames in automatically generated PPD files, but - * if the user ever decides to go back from generated PPD files to - * static PPD files we'll need to have this for genppdupdate to work. - */ - snprintf(filename, sizeof(filename) - 1, "stp-%s.%s%s%s", - hostname, GUTENPRINT_RELEASE_VERSION, infix, ppdext); - snprintf(ppd_location, sizeof(ppd_location) - 1, "%s%s%s/ppd/%s%s", - cups_modeldir, - cups_modeldir[strlen(cups_modeldir) - 1] == '/' ? "" : "/", - lang ? lang : "C", - filename, gpext); - - return (write_ppd(stdout, p, lang, ppd_location, ppd_type, filename)); -} - -/* - * 'list_ppds()' - List the available drivers. - */ - -static int /* O - Exit status */ -list_ppds(const char *argv0) /* I - Name of program */ -{ - const char *scheme; /* URI scheme */ - int i; /* Looping var */ - const stp_printer_t *printer; /* Pointer to printer driver */ - - if ((scheme = strrchr(argv0, '/')) != NULL) - scheme ++; - else - scheme = argv0; - - for (i = 0; i < stp_printer_model_count(); i++) - if ((printer = stp_get_printer_by_index(i)) != NULL) - { - const char *device_id; - if (!strcmp(stp_printer_get_family(printer), "ps") || - !strcmp(stp_printer_get_family(printer), "raw")) - continue; - - device_id = stp_printer_get_device_id(printer); - printf("\"%s://%s/expert\" " - "%s " - "\"%s\" " - "\"%s" CUPS_PPD_NICKNAME_STRING VERSION "\" " - "\"%s\"\n", - scheme, stp_printer_get_driver(printer), - "en", - stp_printer_get_manufacturer(printer), - stp_printer_get_long_name(printer), - device_id ? device_id : ""); - -#ifdef GENERATE_SIMPLIFIED_PPDS - printf("\"%s://%s/simple\" " - "%s " - "\"%s\" " - "\"%s" CUPS_PPD_NICKNAME_STRING VERSION " Simplified\" " - "\"%s\"\n", - scheme, stp_printer_get_driver(printer), - "en", - stp_printer_get_manufacturer(printer), - stp_printer_get_long_name(printer), - device_id ? device_id : ""); -#endif - -#ifdef GENERATE_NOCOLOR_PPDS - printf("\"%s://%s/nocolor\" " - "%s " - "\"%s\" " - "\"%s" CUPS_PPD_NICKNAME_STRING VERSION " No color options\" " - "\"%s\"\n", - scheme, stp_printer_get_driver(printer), - "en", - stp_printer_get_manufacturer(printer), - stp_printer_get_long_name(printer), - device_id ? device_id : ""); -#endif - } - - return (0); -} -#endif /* CUPS_DRIVER_INTERFACE */ - -#ifndef CUPS_DRIVER_INTERFACE - -/* - * 'main()' - Process files on the command-line... - */ - -int /* O - Exit status */ -main(int argc, /* I - Number of command-line arguments */ - char *argv[]) /* I - Command-line arguments */ -{ - int i; /* Looping var */ - const char *prefix; /* Directory prefix for output */ - const char *language = NULL; /* Language */ - const stp_printer_t *printer; /* Pointer to printer driver */ - int verbose = 0; /* Verbose messages */ - char **langs = NULL; /* Available translations */ - char **models = NULL; /* Models to output, all if NULL */ - int opt_printlangs = 0; /* Print available translations */ - int opt_printmodels = 0;/* Print available models */ - int which_ppds = 2; /* Simplified PPD's = 1, full = 2, - no color opts = 4 */ - unsigned parallel = 1; /* Generate PPD files in parallel */ - unsigned rotor = 0; /* Rotor for generating PPD files in parallel */ - pid_t *subprocesses = NULL; - int parent = 1; - - /* - * Parse command-line args... - */ - - prefix = CUPS_MODELDIR; - - for (;;) - { - if ((i = getopt(argc, argv, "23hvqc:p:l:LMVd:saNCbZz")) == -1) - break; - - switch (i) - { - case '2': - cups_ppd_ps_level = 2; - break; - case '3': - cups_ppd_ps_level = 3; - break; - case 'h': - help(); - exit(EXIT_SUCCESS); - break; - case 'v': - verbose = 1; - break; - case 'q': - verbose = 0; - break; - case 'c': - fputs("ERROR: -c option no longer supported!\n", stderr); - break; - case 'p': - prefix = optarg; -# ifdef DEBUG - fprintf(stderr, "DEBUG: prefix: %s\n", prefix); -# endif - break; - case 'l': - language = optarg; - break; - case 'L': - opt_printlangs = 1; - break; - case 'M': - opt_printmodels = 1; - break; - case 'd': - cups_modeldir = optarg; - break; - case 's': - which_ppds = 1; - break; - case 'a': - which_ppds = 3; - break; - case 'C': - which_ppds |= 4; - break; - case 'N': - localize_numbers = !localize_numbers; - break; - case 'V': - printf("cups-genppd version %s, " - "Copyright 1993-2008 by Michael R Sweet and Robert Krawitz.\n\n", - VERSION); - printf("Default CUPS PPD PostScript Level: %d\n", cups_ppd_ps_level); - printf("Default PPD location (prefix): %s\n", CUPS_MODELDIR); - printf("Default base locale directory: %s\n\n", PACKAGE_LOCALE_DIR); - puts("This program is free software; you can redistribute it and/or\n" - "modify it under the terms of the GNU General Public License,\n" - "version 2, as published by the Free Software Foundation.\n" - "\n" - "This program is distributed in the hope that it will be useful,\n" - "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" - "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" - "GNU General Public License for more details.\n"); - exit(EXIT_SUCCESS); - break; - 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; - } - } -#ifdef HAVE_LIBZ - if (use_compression) - gpext = ".gz"; - else -#endif - gpext = ""; - if (optind < argc) { - int n, numargs; - numargs = argc-optind; - models = stp_malloc((numargs+1) * sizeof(char*)); - for (n=0; n<numargs; n++) - { - models[n] = argv[optind+n]; - } - models[numargs] = (char*)NULL; - } - -/* - * Initialise libgutenprint - */ - - stp_init(); - - langs = getlangs(); - - /* - * Print lists - */ - - if (opt_printlangs) - { - printlangs(langs); - exit(EXIT_SUCCESS); - } - - if (opt_printmodels) - { - printmodels(verbose); - exit(EXIT_SUCCESS); - } - - /* - * Write PPD files... - */ - - if (getenv("STP_PARALLEL")) - { - parallel = atoi(getenv("STP_PARALLEL")); - if (parallel < 1 || parallel > 256) - parallel = 1; - } - if (parallel) - { - subprocesses = stp_malloc(sizeof(pid_t) * parallel); - for (rotor = 0; rotor < parallel; rotor++) - { - pid_t pid = fork(); - if (pid == 0) /* Child */ - { - parent = 0; - break; - } - else if (pid > 0) - subprocesses[rotor] = pid; - else - { - fprintf(stderr, "Cannot fork: %s\n", strerror(errno)); - return 1; - } - } - } - if (models) - { - int n; - for (n=0; models[n]; n++) - { - printer = stp_get_printer_by_driver(models[n]); - if (!printer) - printer = stp_get_printer_by_long_name(models[n]); - - if (n % parallel == rotor && printer) - { - if (printer) - { - if (generate_model_ppds(prefix, verbose, printer, language, - which_ppds)) - return 1; - } - else - { - printf("Driver not found: %s\n", models[n]); - return (1); - } - } - } - stp_free(models); - } - else - { - for (i = 0; i < stp_printer_model_count(); i++) - { - printer = stp_get_printer_by_index(i); - - if (i % parallel == rotor && printer) - { - if (! verbose && (i % 50) == 0) - fputc('.',stderr); - if (generate_model_ppds(prefix, verbose, printer, language, - which_ppds)) - return 1; - } - } - } - if (subprocesses) - { - pid_t pid; - do - { - int status; - pid = waitpid(-1, &status, 0); - if (pid > 0 && (!WIFEXITED(status) || WEXITSTATUS(status) != 0)) - { - fprintf(stderr, "failed!\n"); - return 1; - } - } while (pid > 0); - stp_free(subprocesses); - } - if (parent && !verbose) - fprintf(stderr, " done.\n"); - - return (0); -} - -static int -generate_model_ppds(const char *prefix, int verbose, - const stp_printer_t *printer, const char *language, - int which_ppds) -{ - if ((which_ppds & 1) && - generate_ppd(prefix, verbose, printer, language, PPD_SIMPLIFIED)) - return (1); - if ((which_ppds & 2) && - generate_ppd(prefix, verbose, printer, language, PPD_STANDARD)) - return (1); - if ((which_ppds & 4) && - generate_ppd(prefix, verbose, printer, language, PPD_NO_COLOR_OPTS)) - return (1); - return 0; -} - -/* - * 'generate_ppd()' - Generate a PPD file. - */ - -static int /* O - Exit status */ -generate_ppd( - const char *prefix, /* I - PPD directory prefix */ - int verbose, /* I - Verbosity level */ - const stp_printer_t *p, /* I - Driver */ - const char *language, /* I - Primary language */ - ppd_type_t ppd_type) /* I - full, simplified, no color */ -{ - int status; /* Exit status */ - 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; - - /* - * Skip the PostScript drivers... - */ - - if (!strcmp(stp_printer_get_family(p), "ps") || - !strcmp(stp_printer_get_family(p), "raw")) - return (0); - - /* - * Make sure the destination directory exists... - */ - - if (stat(prefix, &dir) && !S_ISDIR(dir.st_mode)) - { - if (mkdir(prefix, 0777)) - { - printf("cups-genppd: Cannot create directory %s: %s\n", - prefix, strerror(errno)); - exit(EXIT_FAILURE); - } - } - - /* - * The files will be named stp-<driver>.<major>.<minor>.ppd, for - * example: - * - * stp-escp2-ex.5.0.ppd - * - * or - * - * stp-escp2-ex.5.0.ppd.gz - */ - - switch (ppd_type) - { - case PPD_SIMPLIFIED: - ppd_infix = ".sim"; - break; - case PPD_NO_COLOR_OPTS: - ppd_infix = ".nc"; - break; - default: - ppd_infix = ""; - } - - snprintf(filename, sizeof(filename) - 1, "%s/stp-%s.%s%s%s%s", - prefix, stp_printer_get_driver(p), GUTENPRINT_RELEASE_VERSION, - ppd_infix, ppdext, gpext); - - /* - * Open the PPD file... - */ - - if ((fp = gpopen(filename, "wb")) == NULL) - { - fprintf(stderr, "cups-genppd: Unable to create file \"%s\" - %s.\n", - filename, strerror(errno)); - return (2); - } - - if (verbose) - fprintf(stderr, "Writing %s...\n", filename); - - snprintf(ppd_location, sizeof(ppd_location), "%s%s%s/%s", - cups_modeldir, - cups_modeldir[strlen(cups_modeldir) - 1] == '/' ? "" : "/", - language ? language : "C", - basename(filename)); - - snprintf(filename, sizeof(filename) - 1, "stp-%s.%s%s%s", - stp_printer_get_driver(p), GUTENPRINT_RELEASE_VERSION, - ppd_infix, ppdext); - - status = write_ppd(fp, p, language, ppd_location, ppd_type, - basename(filename)); - - gpclose(fp); - - return (status); -} - -/* - * 'help()' - Show detailed help. - */ - -void -help(void) -{ - puts("Generate Gutenprint PPD files for use with CUPS\n\n"); - usage(); - puts("\nExamples: LANG=de_DE cups-genppd -p ppd -c /usr/share/locale\n" - " cups-genppd -L -c /usr/share/locale\n" - " cups-genppd -M -v\n\n" - "Commands:\n" - " -h Show this help message.\n" - " -L List available translations (message catalogs).\n" - " -M List available printer models.\n" - " -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"); - 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"); -} - -/* - * 'usage()' - Show program usage. - */ - -void -usage(void) -{ - puts("Usage: cups-genppd " - "[-l locale] [-p prefix] [-s | -a] [-q] [-v] models...\n" - " cups-genppd -L\n" - " cups-genppd -M [-v]\n" - " cups-genppd -h\n" - " cups-genppd -V\n"); -} - -/* - * 'printlangs()' - Print list of available translations. - */ - -void -printlangs(char **langs) /* I - Languages */ -{ - if (langs) - { - int n = 0; - while (langs && langs[n]) - { - puts(langs[n]); - n++; - } - } - exit(EXIT_SUCCESS); -} - - -/* - * 'printmodels()' - Print a list of available models. - */ - -void -printmodels(int verbose) /* I - Verbosity level */ -{ - const stp_printer_t *p; - int i; - - for (i = 0; i < stp_printer_model_count(); i++) - { - p = stp_get_printer_by_index(i); - if (p && - strcmp(stp_printer_get_family(p), "ps") != 0 && - strcmp(stp_printer_get_family(p), "raw") != 0) - { - if(verbose) - printf("%-20s%s\n", stp_printer_get_driver(p), - stp_printer_get_long_name(p)); - else - printf("%s\n", stp_printer_get_driver(p)); - } - } - 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) { @@ -1106,7 +293,8 @@ print_ppd_header(gpFile fp, ppd_type_t ppd_type, int model, const char *driver, 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, "*% either version 2, or (at your option) any later version,\n"); + gpputs(fp, "*% 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"); @@ -1114,8 +302,7 @@ print_ppd_header(gpFile fp, ppd_type_t ppd_type, int model, const char *driver, 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, "*% along with this program. If not, see <https://www.gnu.org/licenses/>.\n"); gpputs(fp, "*%\n"); gpputs(fp, "*FormatVersion: \"4.3\"\n"); if (use_base_version) @@ -1200,7 +387,29 @@ print_ppd_header_3(gpFile fp, ppd_type_t ppd_type, int model, if (strcasecmp(manufacturer, "EPSON") == 0) gpputs(fp, "*cupsFilter: \"application/vnd.cups-command 33 commandtoepson\"\n"); if (device_id) - gpprintf(fp, "*1284DeviceID: \"%s\"\n", device_id); + { + if (strlen(device_id) > 200) + { + char buf[129]; + int bytes_left = strlen(device_id); + int offset = 0; + gpputs(fp, "*1284DeviceID: \""); + while (bytes_left > 0) + { + memset(buf, 0, 129); + strncpy(buf, device_id + offset, 128); + gpputs(fp, buf); + if (bytes_left <= 128) + gpputs(fp, "\""); + gpputs(fp, "\n"); + offset += 128; + bytes_left -= 128; + } + gpputs(fp, "*End\n"); + } + else + gpprintf(fp, "*1284DeviceID: \"%s\"\n", device_id); + } if (!language) { /* @@ -1263,31 +472,32 @@ print_page_sizes(gpFile fp, stp_vars_t *v, int simplified, { const stp_papersize_t *papersize; opt = stp_string_list_param(desc.bounds.str, i); - papersize = stp_get_papersize_by_name(opt->name); - - if (!papersize) + if (strcmp(opt->name, "Custom") == 0) { - printf("Unable to lookup size %s!\n", opt->name); + variable_sizes = 1; continue; } - if (strcmp(opt->name, "Custom") == 0) + papersize = stp_describe_papersize(v, opt->name); + + if (!papersize) { - variable_sizes = 1; + printf("Unable to lookup size %s!\n", opt->name); continue; } + if (simplified && num_opts >= 10 && (!desc.deflt.str || strcmp(opt->name, desc.deflt.str) != 0) && (papersize->paper_unit == PAPERSIZE_ENGLISH_EXTENDED || papersize->paper_unit == PAPERSIZE_METRIC_EXTENDED)) continue; + if (papersize->width <= 0 || papersize->height <= 0) + continue; + width = papersize->width; height = papersize->height; - if (width <= 0 || height <= 0) - continue; - stp_set_string_parameter(v, "PageSize", opt->name); stp_get_media_size(v, &width, &height); @@ -1978,14 +1188,15 @@ print_standard_fonts(gpFile fp) * 'write_ppd()' - Write a PPD file. */ -static int /* O - Exit status */ +int /* O - Exit status */ write_ppd( 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 */ ppd_type_t ppd_type, /* I - 1 = simplified options */ - const char *filename) /* I - input filename */ + const char *filename, /* I - input filename */ + int compress) /* I - compress output */ { int i, j, k, l; /* Looping vars */ int num_opts; /* Number of printer options */ @@ -2014,7 +1225,12 @@ write_ppd( const stp_string_list_t *po = stp_i18n_load(language); /* Message catalog */ - + /* + * This is ugly. The right thing would be to pass this through, but + * then all calls to gpputs, gpprintf, etc. and callers would need to + * have this arg. + */ + use_compression = compress; /* * Initialize driver-specific variables... */ @@ -2057,8 +1273,10 @@ write_ppd( } stp_parameter_description_destroy(&desc); - if (stp_check_boolean_parameter(v, "NativeCopies", STP_PARAMETER_ACTIVE)) - nativecopies = stp_get_boolean_parameter(v, "NativeCopies"); + stp_describe_parameter(v, "NativeCopies", &desc); + if (desc.p_type == STP_PARAMETER_TYPE_BOOLEAN) + nativecopies = desc.deflt.boolean; + stp_parameter_description_destroy(&desc); if (nativecopies) gpputs(fp, "*cupsManualCopies: False\n"); @@ -2470,7 +1688,6 @@ write_ppd( print_group_close(fp, j, k, language, po); } } - stp_parameter_list_destroy(param_list); stp_describe_parameter(v, "ImageType", &desc); if (desc.is_active && desc.p_type == STP_PARAMETER_TYPE_STRING_LIST) { @@ -2528,7 +1745,7 @@ write_ppd( { const stp_papersize_t *papersize; opt = stp_string_list_param(desc.bounds.str, i); - papersize = stp_get_papersize_by_name(opt->name); + papersize = stp_describe_papersize(v, opt->name); if (!papersize) continue; @@ -2539,12 +1756,11 @@ write_ppd( */ if (simplified && num_opts >= 10 && + (!desc.deflt.str || strcmp(opt->name, desc.deflt.str) != 0) && (papersize->paper_unit == PAPERSIZE_ENGLISH_EXTENDED || - papersize->paper_unit == PAPERSIZE_METRIC_EXTENDED)) - continue; - - if ((papersize->width <= 0 || papersize->height <= 0) && - strcmp(opt->name, "Custom") != 0) + papersize->paper_unit == PAPERSIZE_METRIC_EXTENDED || + ((papersize->width <= 0 || papersize->height <= 0) && + strcmp(opt->name, "Custom") != 0))) continue; gpprintf(fp, "*%s.PageSize %s/%s: \"\"\n", lang, opt->name, stp_i18n_lookup(po, opt->text)); @@ -2706,8 +1922,6 @@ write_ppd( 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); - for (j = 0; j <= STP_PARAMETER_CLASS_OUTPUT; j++) { for (k = 0; k <= maximum_level; k++) @@ -2733,7 +1947,6 @@ write_ppd( } } } - stp_parameter_list_destroy(param_list); stp_describe_parameter(v, "ImageType", &desc); if (desc.is_active && desc.p_type == STP_PARAMETER_TYPE_STRING_LIST) { @@ -2753,6 +1966,7 @@ write_ppd( } po = savepo; } + stp_parameter_list_destroy(param_list); if (has_quality_parameter) stp_free(default_resolution); stp_string_list_destroy(resolutions); diff --git a/src/cups/genppd.h b/src/cups/genppd.h new file mode 100644 index 0000000..3452a99 --- /dev/null +++ b/src/cups/genppd.h @@ -0,0 +1,91 @@ +/* + * PPD file generation program for the CUPS drivers. + * + * Copyright 1993-2008 by Mike Sweet and Robert Krawitz. + * + * 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, see <https://www.gnu.org/licenses/>. + * + * Contents: + * + * main() - Process files on the command-line... + * cat_ppd() - Copy the named PPD to stdout. + * generate_ppd() - Generate a PPD file. + * getlangs() - Get a list of available translations. + * help() - Show detailed help. + * is_special_option() - Determine if an option should be grouped. + * list_ppds() - List the available drivers. + * print_group_close() - Close a UI group. + * print_group_open() - Open a new UI group. + * printlangs() - Print list of available translations. + * printmodels() - Print a list of available models. + * usage() - Show program usage. + * write_ppd() - Write a PPD file. + */ + +#include "i18n.h" +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <dirent.h> +#include <unistd.h> +#include <fcntl.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <string.h> +#include <ctype.h> +#include <errno.h> +#include <libgen.h> +#include <strings.h> +#include <sys/types.h> +#include <sys/wait.h> + +#include <cups/raster.h> + +extern char **getlangs(void); + + +typedef enum +{ + PPD_STANDARD = 0, + PPD_SIMPLIFIED = 1, + PPD_NO_COLOR_OPTS = 2 +} ppd_type_t; + +#ifdef HAVE_LIBZ +#include <zlib.h> +#endif + +typedef union +{ +#ifdef HAVE_LIBZ + gzFile gzf; +#endif + FILE *f; +} gpfile; +typedef gpfile *gpFile; + +extern const char *ppdext; +extern const char *cups_modeldir; +extern const char *gpext; +extern int cups_ppd_ps_level; +extern int localize_numbers; +extern int use_base_version; + +extern 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, + int compress); diff --git a/src/cups/gutenprint.c b/src/cups/gutenprint.c new file mode 100644 index 0000000..6ab2194 --- /dev/null +++ b/src/cups/gutenprint.c @@ -0,0 +1,253 @@ +/* + * PPD file generation program for the CUPS drivers. + * + * Copyright 1993-2008 by Mike Sweet and Robert Krawitz. + * + * 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, see <https://www.gnu.org/licenses/>. + * + * Contents: + * + * main() - Process files on the command-line... + * cat_ppd() - Copy the named PPD to stdout. + * generate_ppd() - Generate a PPD file. + * getlangs() - Get a list of available translations. + * help() - Show detailed help. + * is_special_option() - Determine if an option should be grouped. + * list_ppds() - List the available drivers. + * print_group_close() - Close a UI group. + * print_group_open() - Open a new UI group. + * printlangs() - Print list of available translations. + * printmodels() - Print a list of available models. + * usage() - Show program usage. + * write_ppd() - Write a PPD file. + */ + +/* + * 'main()' - Process files on the command-line... + */ + +#include "genppd.h" + +static int cat_ppd(const char *uri); +static int list_ppds(const char *argv0); + + +int /* O - Exit status */ +main(int argc, /* I - Number of command-line arguments */ + char *argv[]) /* I - Command-line arguments */ +{ + /* + * Force POSIX locale, since stp_init incorrectly calls setlocale... + */ + + (void) setenv("LANG", "C", 1); + (void) setenv("LC_ALL", "C", 1); + (void) setenv("LC_NUMERIC", "C", 1); + + /* + * Initialise libgutenprint + */ + + stp_init(); + + /* + * Process command-line... + */ + + if (argc == 2 && !strcmp(argv[1], "list")) + return (list_ppds(argv[0])); + else if (argc == 3 && !strcmp(argv[1], "cat")) + return (cat_ppd(argv[2])); + else if (argc == 2 && !strcmp(argv[1], "org.gutenprint.multicat")) + { + char buf[1024]; + int status = 0; + while (fgets(buf, sizeof(buf) - 1, stdin)) + { + size_t len = strlen(buf); + if (len == 0) + continue; + if (buf[len - 1] == '\n') + buf[len - 1] = '\0'; + status |= cat_ppd(buf); + fputs("*%*%EOFEOF\n", stdout); + (void) fflush(stdout); + } + } + else if (argc == 2 && !strcmp(argv[1], "VERSION")) + { + printf("%s\n", VERSION); + return (0); + } + else if (argc == 2 && !strcasecmp(argv[1], "org.gutenprint.extensions")) + { + printf("org.gutenprint.multicat"); + return (0); + } + else + { + fprintf(stderr, "Usage: %s list\n", argv[0]); + fprintf(stderr, " %s cat URI\n", argv[0]); + return (1); + } + return (0); +} + + +/* + * 'cat_ppd()' - Copy the named PPD to stdout. + */ + +static int /* O - Exit status */ +cat_ppd(const char *uri) /* I - Driver URI */ +{ + char scheme[64], /* URI scheme */ + userpass[32], /* URI user/pass (unused) */ + hostname[32], /* URI hostname */ + resource[1024]; /* URI resource */ + int port; /* URI port (unused) */ + http_uri_status_t status; /* URI decode status */ + const stp_printer_t *p; /* Printer driver */ + const char *lang = NULL; + char *s; + char filename[1024], /* Filename */ + ppd_location[1024]; /* Installed location */ + const char *infix = ""; + ppd_type_t ppd_type = PPD_STANDARD; + gpfile outFD; + + if ((status = httpSeparateURI(HTTP_URI_CODING_ALL, uri, + scheme, sizeof(scheme), + userpass, sizeof(userpass), + hostname, sizeof(hostname), + &port, resource, sizeof(resource))) + < HTTP_URI_OK) + { + fprintf(stderr, "ERROR: Bad ppd-name \"%s\" (%d)!\n", uri, status); + return (1); + } + + if (strcmp(scheme, "gutenprint." GUTENPRINT_RELEASE_VERSION) != 0) + { + fprintf(stderr, "ERROR: Gutenprint version mismatch!\n"); + return(1); + } + + s = strchr(resource + 1, '/'); + if (s) + { + lang = s + 1; + *s = '\0'; + } + + if ((p = stp_get_printer_by_driver(hostname)) == NULL) + { + fprintf(stderr, "ERROR: Unable to find driver \"%s\"!\n", hostname); + return (1); + } + + if (strcmp(resource + 1, "simple") == 0) + { + infix = ".sim"; + ppd_type = PPD_SIMPLIFIED; + } + else if (strcmp(resource + 1, "nocolor") == 0) + { + infix = ".nc"; + ppd_type = PPD_NO_COLOR_OPTS; + } + + /* + * This isn't really the right thing to do. We really shouldn't + * be embedding filenames in automatically generated PPD files, but + * if the user ever decides to go back from generated PPD files to + * static PPD files we'll need to have this for genppdupdate to work. + */ + snprintf(filename, sizeof(filename) - 1, "stp-%s.%s%s%s", + hostname, GUTENPRINT_RELEASE_VERSION, infix, ppdext); + snprintf(ppd_location, sizeof(ppd_location) - 1, "%s%s%s/ppd/%s%s", + cups_modeldir, + cups_modeldir[strlen(cups_modeldir) - 1] == '/' ? "" : "/", + lang ? lang : "C", + filename, gpext); + + outFD.f = stdout; + return (write_ppd(&outFD, p, lang, ppd_location, ppd_type, filename, 0)); +} + +/* + * 'list_ppds()' - List the available drivers. + */ + +static int /* O - Exit status */ +list_ppds(const char *argv0) /* I - Name of program */ +{ + const char *scheme; /* URI scheme */ + int i; /* Looping var */ + const stp_printer_t *printer; /* Pointer to printer driver */ + + if ((scheme = strrchr(argv0, '/')) != NULL) + scheme ++; + else + scheme = argv0; + + for (i = 0; i < stp_printer_model_count(); i++) + if ((printer = stp_get_printer_by_index(i)) != NULL) + { + const char *device_id; + if (!strcmp(stp_printer_get_family(printer), "ps") || + !strcmp(stp_printer_get_family(printer), "raw")) + continue; + + device_id = stp_printer_get_device_id(printer); + printf("\"%s://%s/expert\" " + "%s " + "\"%s\" " + "\"%s" CUPS_PPD_NICKNAME_STRING VERSION "\" " + "\"%s\"\n", + scheme, stp_printer_get_driver(printer), + "en", + stp_printer_get_manufacturer(printer), + stp_printer_get_long_name(printer), + device_id ? device_id : ""); + +#ifdef GENERATE_SIMPLIFIED_PPDS + printf("\"%s://%s/simple\" " + "%s " + "\"%s\" " + "\"%s" CUPS_PPD_NICKNAME_STRING VERSION " Simplified\" " + "\"%s\"\n", + scheme, stp_printer_get_driver(printer), + "en", + stp_printer_get_manufacturer(printer), + stp_printer_get_long_name(printer), + device_id ? device_id : ""); +#endif + +#ifdef GENERATE_NOCOLOR_PPDS + printf("\"%s://%s/nocolor\" " + "%s " + "\"%s\" " + "\"%s" CUPS_PPD_NICKNAME_STRING VERSION " No color options\" " + "\"%s\"\n", + scheme, stp_printer_get_driver(printer), + "en", + stp_printer_get_manufacturer(printer), + stp_printer_get_long_name(printer), + device_id ? device_id : ""); +#endif + } + + return (0); +} diff --git a/src/cups/i18n.c b/src/cups/i18n.c index f032d13..89ff2b6 100644 --- a/src/cups/i18n.c +++ b/src/cups/i18n.c @@ -14,8 +14,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Contents: * diff --git a/src/cups/i18n.h b/src/cups/i18n.h index 222b2c3..1ab5275 100644 --- a/src/cups/i18n.h +++ b/src/cups/i18n.h @@ -14,8 +14,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #include <gutenprint/gutenprint.h> diff --git a/src/cups/min-pagesize.in b/src/cups/min-pagesize.in new file mode 100644 index 0000000..06cd148 --- /dev/null +++ b/src/cups/min-pagesize.in @@ -0,0 +1,42 @@ +#!@PERL@ + +# Find smallest page size in PPD file. +# +# Copyright 2018 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, see <https://www.gnu.org/licenses/>. +# +# This is faster than using Gutenprint to do this; stp_init() is still +# quite expensive for such small operations. + +use strict; + +open(PPD, $ENV{'PPD'}) || die "Can't open PPD file $ENV{'PPD'}: $!\n"; +my ($min_size_name) = ""; +my ($min_size_dim) = 0; +while (<PPD>) { + if ($min_size_name ne '' && ! /^\*PaperDimension/) { + print "$min_size_name\n"; + exit; + } + next if (! /^\*PaperDimension/); + $_ =~ /^\*PaperDimension *([^\/]+)\/[^\"]*"([0-9.]+) *([0-9.]+)/; + my ($pname) = $1; + my ($x) = $2; + my ($y) = $3; + if ($min_size_name eq "" || ($x * $y < $min_size_dim)) { + $min_size_name = $pname; + $min_size_dim = $x * $y; + } +} diff --git a/src/cups/rastertoprinter.c b/src/cups/rastertogutenprint.c index 0fa0668..5e6e8ba 100644 --- a/src/cups/rastertoprinter.c +++ b/src/cups/rastertogutenprint.c @@ -14,8 +14,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Contents: * @@ -111,6 +110,7 @@ typedef struct static void cups_writefunc(void *file, const char *buf, size_t bytes); static void cups_errfunc(void *file, const char *buf, size_t bytes); +static void cups_dbgfunc(void *file, const char *buf, size_t bytes); static void cancel_job(int sig); static const char *Image_get_appname(stp_image_t *image); static stp_image_status_t Image_get_row(stp_image_t *image, @@ -144,8 +144,6 @@ static const char *save_file_name = NULL; static const char *load_file_name = NULL; #endif /* ENABLE_CUPS_LOAD_SAVE_OPTIONS */ -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" @@ -268,7 +266,7 @@ print_debug_block(const stp_vars_t *v, const cups_image_t *cups) fprintf(stderr, "DEBUG: Gutenprint: cupsRowFeed = %d\n", cups->header.cupsRowFeed); fprintf(stderr, "DEBUG: Gutenprint: cupsRowStep = %d\n", cups->header.cupsRowStep); fprintf(stderr, "DEBUG: Gutenprint: shrink page to fit %d\n", cups->shrink_to_fit); - stpi_vars_print_error(v, "DEBUG"); + stp_vars_print_error(v, "DEBUG"); fprintf(stderr, "DEBUG: Gutenprint: End page data\n"); } @@ -318,7 +316,7 @@ validate_options(stp_vars_t *v, cups_image_t *cups) if (strcmp(desc.name, "PageSize") == 0) { const stp_papersize_t *ps = - stp_get_papersize_by_name(desc.deflt.str); + stp_describe_papersize(v, desc.deflt.str); if (ps->width > 0) { if (! suppress_messages) @@ -356,11 +354,6 @@ initialize_page(cups_image_t *cups, const stp_vars_t *default_settings, if (! suppress_messages) fprintf(stderr, "DEBUG: Gutenprint: Initialize page\n"); - stp_set_outfunc(v, cups_writefunc); - stp_set_errfunc(v, cups_errfunc); - stp_set_outdata(v, stdout); - stp_set_errdata(v, stderr); - if (cups->header.cupsBitsPerColor == 16) set_string_parameter(v, "ChannelBitDepth", "16"); else @@ -405,10 +398,10 @@ initialize_page(cups_image_t *cups, const stp_vars_t *default_settings, set_special_parameter(v, "Quality", cups->header.cupsRowFeed - 1); - if (cups->header.MediaClass && strlen(cups->header.MediaClass) > 0) + if (strlen(cups->header.MediaClass) > 0) set_string_parameter(v, "InputSlot", cups->header.MediaClass); - if (cups->header.MediaType && strlen(cups->header.MediaType) > 0) + if (strlen(cups->header.MediaType) > 0) set_string_parameter(v, "MediaType", cups->header.MediaType); if (! suppress_messages) @@ -425,7 +418,7 @@ initialize_page(cups_image_t *cups, const stp_vars_t *default_settings, stp_set_page_width(v, cups->header.PageSize[0]); stp_set_page_height(v, cups->header.PageSize[1]); } - else if (stp_get_papersize_by_name(page_size_name)) + else if (stp_describe_papersize(v, page_size_name)) { stp_dimension_t width, height; if (!suppress_messages) @@ -1067,7 +1060,7 @@ load_options(const char *load_name) fprintf(stderr, "DEBUG: Gutenprint: loading options from %s\n", load_file_name); if (! suppress_messages) - stpi_vars_print_error(settings, "DEBUG"); + stp_vars_print_error(settings, "DEBUG"); } } else @@ -1132,8 +1125,15 @@ main(int argc, /* I - Number of command-line arguments */ theImage.rep = ∪︀ (void) gettimeofday(&t1, NULL); + stp_set_global_errfunc(cups_errfunc); + stp_set_global_dbgfunc(cups_dbgfunc); + stp_set_global_errdata(stderr); + stp_set_global_dbgdata(stderr); stp_init(); version_id = stp_get_version(); + default_settings = stp_vars_create(); + stp_set_outfunc(default_settings, cups_writefunc); + stp_set_outdata(default_settings, stdout); /* * Check for valid arguments... @@ -1238,7 +1238,7 @@ main(int argc, /* I - Number of command-line arguments */ cupsMarkOptions(ppd, num_options, options); size = ppdPageSize(ppd, NULL); - if (size->name) + if (size) page_size_name = stp_strdup(size->name); if (! suppress_messages) @@ -1299,7 +1299,6 @@ main(int argc, /* I - Number of command-line arguments */ if (! suppress_messages) fprintf(stderr, "DEBUG: Gutenprint: Using fd %d\n", fd); - default_settings = stp_vars_create_copy(stp_printer_get_defaults(printer)); stp_set_printer_defaults(default_settings, printer); #ifdef ENABLE_CUPS_LOAD_SAVE_OPTIONS if (load_file_name) @@ -1361,7 +1360,7 @@ main(int argc, /* I - Number of command-line arguments */ if (! suppress_messages) { fprintf(stderr, "DEBUG: Gutenprint: Interim page settings:\n"); - stpi_vars_print_error(v, "DEBUG"); + stp_vars_print_error(v, "DEBUG"); } stp_merge_printvars(v, stp_printer_get_defaults(printer)); @@ -1378,15 +1377,6 @@ main(int argc, /* I - Number of command-line arguments */ if (! suppress_messages) print_debug_block(v, &cups); print_messages_as_errors = 1; - if (!stp_verify(v)) - { - fprintf(stderr, "DEBUG: Gutenprint: Options failed to verify.\n"); - fprintf(stderr, "DEBUG: Gutenprint: Make sure that you are using ESP Ghostscript rather\n"); - fprintf(stderr, "DEBUG: Gutenprint: than GNU or AFPL Ghostscript with CUPS.\n"); - fprintf(stderr, "DEBUG: Gutenprint: If this is not the cause, set LogLevel to debug to identify the problem.\n"); - aborted = 1; - break; - } if (!initialized_job) { @@ -1396,7 +1386,14 @@ main(int argc, /* I - Number of command-line arguments */ if (!stp_print(v, &theImage)) { - aborted = 1; + if (Image_status != STP_IMAGE_STATUS_ABORT) + { + fprintf(stderr, "DEBUG: Gutenprint: Options failed to verify.\n"); + fprintf(stderr, "DEBUG: Gutenprint: Make sure that you are using ESP Ghostscript rather\n"); + fprintf(stderr, "DEBUG: Gutenprint: than GNU or AFPL Ghostscript with CUPS.\n"); + fprintf(stderr, "DEBUG: Gutenprint: If this is not the cause, set LogLevel to debug to identify the problem.\n"); + } + aborted = 1; break; } print_messages_as_errors = 0; @@ -1467,13 +1464,38 @@ cups_errfunc(void *file, const char *buf, size_t bytes) { if (bytes - where > 6 && strncmp(buf, "ERROR:", 6) == 0) { - fputs("ERROR: Gutenprint error:", prn); + fputs("ERROR: Gutenprint:", prn); buf += 6; } else if (print_messages_as_errors) - fputs("ERROR: Gutenprint error: ", prn); - else - fputs("DEBUG: Gutenprint internal: ", prn); + fputs("ERROR: Gutenprint: ", prn); + else if (strncmp(buf, "DEBUG", 5) != 0) + fputs("DEBUG: Gutenprint: ", prn); + while (next_nl < bytes) + { + if (buf[next_nl++] == '\n') + break; + } + fwrite(buf + where, 1, next_nl - where, prn); + where = next_nl; + } +} + +static void +cups_dbgfunc(void *file, const char *buf, size_t bytes) +{ + size_t next_nl = 0; + size_t where = 0; + FILE *prn = (FILE *)file; + while (where < bytes) + { + if (bytes - where > 6 && strncmp(buf, "ERROR:", 6) == 0) + { + fputs("ERROR: Gutenprint:", prn); + buf += 6; + } + else if (strncmp(buf, "DEBUG", 5) != 0) + fputs("DEBUG: Gutenprint: ", prn); while (next_nl < bytes) { if (buf[next_nl++] == '\n') @@ -1635,7 +1657,7 @@ Image_get_row(stp_image_t *image, /* I - Image */ new_percent = (int) (100.0 * cups->row / cups->header.cupsHeight); if (new_percent > cups->last_percent) { - if (! suppress_messages) + if (! suppress_verbose_messages) { stp_i18n_printf(po, _("INFO: Printing page %d, %d%%\n"), cups->page + 1, new_percent); diff --git a/src/cups/test-ppds b/src/cups/test-ppds deleted file mode 100755 index 27e5a8d..0000000 --- a/src/cups/test-ppds +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/sh - -# Test PPD conformance -# -# Copyright 2006-2017 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. - -# 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. -# -# Also, a number of our media sizes aren't named correctly, but we'll -# accept those issues rather than cluttering the namespace further and/or -# changing tag names. -cupstestppdopts='-I profiles -W sizes -I filters' - -ppd_count=`find ppd \( -name '*.ppd.gz' -o -name '*.ppd' \) -print | wc -l` - -if [ -n "$STP_PARALLEL" ] ; then - PARALLEL="-P $STP_PARALLEL" -fi - -failures="`find ppd -name '*.ppd*' -print | sort -t/ -k3 -k2 | xargs $PARALLEL cupstestppd $cupstestppdopts |grep 'FAIL$' | awk -F: '{print $1}'`" - -if [ -z "$failures" ] ; then - echo "All $ppd_count PPD files pass" - exit 0 -fi - -# Use this with "normal" PPD files without translated numbers. -#echo $failures | xargs cupstestppd $cupstestppdopts 2>&1 | egrep -v 'Missing "[a-z][a-z](_[A-Z][A-Z])?" translation string for option Stp((Brightness|Contrast|Saturation), choice None|([a-zA-Z0-9]+, choice (-?[0-9]+)))!$' |egrep -v 'Missing cupsICCProfile file' - -# 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 -r $cupstestppdopts 2>&1 |egrep -v 'Missing cupsICCProfile file' - -fail_count=`echo "$failures" | wc -l` -echo "$fail_count/$ppd_count fail" -exit 1 diff --git a/src/cups/test-ppds.in b/src/cups/test-ppds.in new file mode 100644 index 0000000..3664f4e --- /dev/null +++ b/src/cups/test-ppds.in @@ -0,0 +1,127 @@ +#!@BASHREAL@ + +# Test PPD conformance +# +# Copyright 2006-2017 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, see <https://www.gnu.org/licenses/>. + +################################################################ +# TEST FOR PPD FILE COMPLIANCE +# +# Keeping this up to date with changing CUPS versions is a real headache. +# This test, however, is particularly important; PPD conformance failures +# are one of the most frequently observed problems, and a lot of apps +# (and CUPS itself) are very sensitive -- arguably overly so -- to +# violations of the spec. +# +# We can't skip the translated PPD files either; sometimes translations +# blow out token maximum lengths. + +if [[ -n "$STP_TEST_LOG_PREFIX" ]] ; then + redir="${STP_TEST_LOG_PREFIX}${0##*/}_$$.log" + if [[ -n $BUILD_VERBOSE ]] ; then + exec > >(tee -a "$redir" >&3) + else + exec 1>>"$redir" + fi + exec 2>&1 +fi + +[[ -n "$STP_TEST_DEBUG" ]] && DEBUG=echo + +[[ -z $STP_TEST_SUITE || -z $STP_TEST_PROFILE ]] && STP_TEST_PROFILE=full + +PPD_DIR=ppdtest + +PPD_PARALLEL=200 + +function test_full() { + rm -rf "$PPD_DIR" + echo "GENERATING PPD FILES (all):" + set -e + $DEBUG make "PPD_DIR=$PPD_DIR" EXTRA_GENPPD_OPTS='-b -Z' ppd-clean ppd-global-a ppd-nls-a ppd-nonls-a +} + +function test_fast() { + rm -rf "$PPD_DIR" + echo "GENERATING PPD FILES (fast):" + set -e + $DEBUG make "PPD_DIR=$PPD_DIR" EXTRA_GENPPD_OPTS='-b -Z' ppd-clean ppd-nonls + if [[ -n $STP_TEST_DIST ]] ; then + echo "GENERATING PPD FILES (global):" + set -e + $DEBUG make "PPD_DIR=$PPD_DIR" EXTRA_GENPPD_OPTS='-b -Z -S' ppd-global + fi + PPD_PARALLEL=20 +} + +function test_minimal() { + rm -rf "$PPD_DIR" + echo "GENERATING PPD FILES (minimal):" + set -e + $DEBUG make "PPD_DIR=$PPD_DIR" EXTRA_GENPPD_OPTS='-b -Z -S' ppd-clean ppd-nonls + PPD_PARALLEL=20 +} + +case "$STP_TEST_PROFILE" in + full|fast|minimal) + test_$STP_TEST_PROFILE + ;; + *) + exit 77 +esac + +if [[ -n "$STP_TEST_DEBUG" ]] ; then + echo "Would run $0 $@" + exit 0 +fi + +ppd_count=$(find "$PPD_DIR" -name '*.ppd' -print | wc -l) + +# Setting a limit on the number of files per invocation improves +# performance by about a minute by reducing the tail at the end. +[[ -n $STP_PARALLEL ]] && PARALLEL="-P $STP_PARALLEL -L $PPD_PARALLEL" + +# Most non-Macintosh systems won't have the Macintosh-specific profiles +# installed in Macintosh-specific locations. +# +# Also, a number of our media sizes aren't named correctly, but we'll +# accept those issues rather than cluttering the namespace further and/or +# changing tag names. +cupstestppdopts='-I profiles -W sizes -I filters' + +# This lets us report progress +testcmd="echo -n . 1>&2; cupstestppd $cupstestppdopts "'"$@"' + +echo -n "TESTING PPD FILES: " +failures="$(find $PPD_DIR -name '*.ppd*' -print | sort -t/ -k3 -k2 | xargs $PARALLEL sh -c "$testcmd" |grep 'FAIL$' | awk -F: '{print $1}')" + +if [[ -z "$failures" ]] ; then + echo "All $ppd_count PPD files pass" + rm -rf $PPD_DIR + exit 0 +fi + +# Use this with "normal" PPD files without translated numbers. +#echo $failures | xargs cupstestppd $cupstestppdopts 2>&1 | egrep -v 'Missing "[a-z][a-z](_[A-Z][A-Z])?" translation string for option Stp((Brightness|Contrast|Saturation), choice None|([a-zA-Z0-9]+, choice (-?[0-9]+)))!$' |egrep -v 'Missing cupsICCProfile file' + +# 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 -r $cupstestppdopts 2>&1 + +fail_count=`echo "$failures" | wc -l` +echo "$fail_count/$ppd_count fail" +exit 1 diff --git a/src/cups/test-rastertogutenprint.check.in b/src/cups/test-rastertogutenprint.check.in new file mode 100644 index 0000000..cd3f38b --- /dev/null +++ b/src/cups/test-rastertogutenprint.check.in @@ -0,0 +1,77 @@ +#!@BASHREAL@ + +# Harness for rastertogutenprint tester. +# +# Copyright 2007-2017 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, see <https://www.gnu.org/licenses/>. + +if [[ -n "$STP_TEST_LOG_PREFIX" ]] ; then + redir="${STP_TEST_LOG_PREFIX}${0##*/}_$$.log" + if [[ -n $BUILD_VERBOSE ]] ; then + exec > >(tee -a "$redir" >&3) + else + exec 1>>"$redir" + fi + exec 2>&1 +fi + +STP_TEST_PROFILE=${STP_TEST_PROFILE:-full} + +set -e + +declare FASTOPT="-o StpDitherAlgorithm=VeryFast -l -N -o ColorCorrection=Raw" +declare MIN_PRINTERS="@MINIMAL_PRINTERS_TO_TEST@" + +function runit() { + echo "================================================================" + echo "$@" + [[ -z $STP_TEST_DEBUG ]] && "$@" +} + +function test_minimal() { + runit ./test-rastertogutenprint -s $FASTOPT -p 1 \ + $MIN_PRINTERS +} + +function test_fast() { + runit ./test-rastertogutenprint -S -s $FASTOPT -p 2 +} + +function test_full() { + runit ./test-rastertogutenprint -l -p 2 $FASTOPT + runit ./test-rastertogutenprint -S -s -X +} + +function test_valgrind_minimal() { + runit ./test-rastertogutenprint -v -v -s $FASTOPT -p 1 \ + $MIN_PRINTERS +} + +function test_valgrind_fast() { + test_valgrind_minimal +} + +function test_valgrind() { + runit ./test-rastertogutenprint -v -v -S -s $FASTOPT -p 2 +} + +case "$STP_TEST_PROFILE" in + full|fast|valgrind|valgrind_minimal|valgrind_fast|minimal) + test_$STP_TEST_PROFILE + ;; + *) + exit 77 + ;; +esac diff --git a/src/cups/test-rastertogutenprint.in b/src/cups/test-rastertogutenprint.in index 75d4102..410814d 100755..100644 --- a/src/cups/test-rastertogutenprint.in +++ b/src/cups/test-rastertogutenprint.in @@ -1,4 +1,4 @@ -#!@SHELL@ +#!@BASH@ # Driver for rastertogutenprint tester. # @@ -15,142 +15,175 @@ # 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. +# along with this program. If not, see <https://www.gnu.org/licenses/>. retval=0 -if [ -z "$srcdir" -o "$srcdir" = "." ] ; then - sdir=`pwd` -elif [ -n "`echo $srcdir |grep '^/'`" ] ; then +if [[ -z $srcdir || $srcdir = . ]] ; then + sdir=$(pwd) +elif [[ $srcdir =~ ^/ ]] ; then sdir="$srcdir" else - sdir="`pwd`/$srcdir" + sdir="$(pwd)/$srcdir" fi -if [ -z "$STP_DATA_PATH" ] ; then - STP_DATA_PATH="$sdir/../xml" - export STP_DATA_PATH -fi +export STP_DATA_PATH=${STP_DATA_PATH:-"$sdir/../xml"} +export STP_MODULE_PATH=${STP_MODULE_PATH:-"$sdir/../main:$sdir/../main/.libs"} + +declare single=0 +declare verbose=0 +declare valgrind=0 +declare make_ppds=1 +declare skip_simplified=0 +declare postscript=0 +declare use_explicit_quality=0 +declare extra_genppd_opts=-Z +declare use_smallest_pagesize=0 +declare cupsargs='' +declare printers_to_test='' -if [ -z "$STP_MODULE_PATH" ] ; then - STP_MODULE_PATH="$sdir/../main:$sdir/../main/.libs" - export STP_MODULE_PATH +if [ -n "$STP_TEST_DEBUG" ] ; then + echo "Would run with single=$single skip_simplified=$skip_simplified extra_genppd_opts=$extra_genppd_opts cupsargs=$cupsargs use_explicit_quality=$use_explicit_quality valopts=$valopts valgrind=$valgrind" + exit 0 fi -single='' -all_models='' -verbose='' -valgrind=0 -make_ppds=1 -md5dir='' -outdir='' -cupsargs='' -postscript='' -npages=3 -jobs=${STP_PARALLEL:-1} -enable_static='@ENABLE_STATIC@' -enable_shared='@ENABLE_SHARED@' - -if [ -r "$sdir/../../src/cups/gutenprint-users-manual.pdf" ] ; then +declare family=$STP_TEST_FAMILY +declare all_models='' +declare md5dir='' +declare outdir='' +declare qualarg='' +declare npages=3 +declare jobs=${STP_PARALLEL:-1} +declare -A all_models= + +if [[ -r $sdir/../../src/cups/gutenprint-users-manual.pdf ]] ; then testfile="$sdir/../../src/cups/gutenprint-users-manual.pdf" else testfile="$sdir/../../doc/gutenprint-users-manual.pdf" fi +quality_presets=(FastEconomy Economy Draft Standard High Photo HighPhoto UltraPhoto Best) + usage() { - echo "Usage: test-rastertogutenprint [-s] [-v|--valgrind]" - exit 0; + cat <<'EOF' +Usage: test-rastertogutenprint [options] [PPD files...] + Options: + -s Run only one PPD file with a given model ID/family + -v Use valgrind + -c Use cachegrind + -g Use GDB attach in valgrind + -V Verbose output + -n Don't build PPD files prior to run + -O dir Save output in specified directory + -o opt Set option on CUPS command line + -m dir Save MD5 checksums in specified directory + -p pages Specify page range of input document to use + -P Use PostScript rather than PDF input + -t jobs Run jobs in parallel (alternatively, use STP_PARALLEL) + -f family Run printers only in the particular family + -S Skip simplified PPD files + -l Use lowest available quality setting + -L Use highest available quality setting + -X Don't use explicit quality setting + -N Use the smallest available page size +EOF +exit 0; } -set_args() { - while true ; do - case "$1" in - -s) single=1 ;; - -h*|--h*) usage ;; - -v|--valgrind) valopts='--tool=memcheck' ; valgrind=$((valgrind + 1)) ;; - -c|--cachegrind) valopts='--tool=cachegrind'; valgrind=4 ;; - -g|--gdb-attach) valopts='--gdb-attach=yes' ;; - -V|--verbose) verbose=1 ;; - -n|--no-make-ppds) make_ppds='' ;; - -O|--output) shift; outdir="$1" ;; - -o|--option) shift; cupsargs="$cupsargs $1" ;; - -m|--md5dir) shift; md5dir="$1" ;; - -p|--pages) shift; npages="$1" ;; - -P|--postscript) shift; postscript=1 ;; - -t|--parallel) shift; jobs="$1" ;; - --) shift; args="$@"; return ;; - *) return ;; - esac - shift - done -} +while getopts "hvcgsVnO:m:o:p:St:lLXf:N" opt ; do + case "$opt" in + h*) usage ;; + v) valgrind=$((valgrind + 1)) ;; + c) valgrind=4 ;; + g) valopts='--vgdb=yes --error-exitcode=1' ;; + s) single=1 ;; + V) verbose=$((verbose+1)) ;; + n) make_ppds='' ;; + O) outdir="$OPTARG"; mkdir -p "$outdir" ;; + o) cupsargs="$cupsargs $OPTARG" ;; + m) md5dir="$OPTARG"; mkdir -p "$md5dir" ;; + p) npages="$OPTARG" ;; + P) postscript=1 ;; + t) jobs="$OPTARG" ;; + f) family="$OPTARG" ;; + S) skip_simplified=1 ;; + X) use_explicit_quality=0 ;; + l) use_explicit_quality=1 ;; + L) use_explicit_quality=2 ;; + N) use_smallest_pagesize=1 ;; + \?) usage ;; + *) echo "Unknown argument $opt"; usage ;; + esac +done -set_args `getopt hvcgsVnO:m:o:p: "$@"` +case "$valgrind" in + 4) + valopts='--tool=callgrind --dump-instr=yes --trace-jump=yes --error-exitcode=1' + ;; + '') + ;; + *) + valopts='--tool=memcheck --error-exitcode=1' + ;; +esac -if [ "$valgrind" -gt 0 -a "$enable_shared" != "no" ] ; then - echo 'Valgrind is not compatible with --enable-shared in tree.' 1>&2 - echo 'Please use autogen.sh --disable-shared.' 1>&2 - exit 1 -fi - -if [ -n "$outdir" -a ! -d "$outdir" ] ; then - mkdir -p "$outdir" -fi -if [ -n "$md5dir" -a ! -d "$md5dir" ] ; then - mkdir -p "$md5dir" -fi +shift $((OPTIND - 1)) version="@GUTENPRINT_RELEASE_VERSION@"; -cupsdir="/usr/lib/cups/filter" -if [ -x "$cupsdir/pstoraster" -o -x "$cupsdir/gstoraster" -o -x "$cupsdir/cgpdftoraster" ] ; then - pages="24-`expr 24 + $npages - 1`" - if [ -n "$postscript" ] ; then - pages="page-ranges=$pages" - fi -else - pages='' -fi +rgp="./rastertogutenprint.$version" +cupsdir="$(cups-config --serverbin)/filter" +cgpdftoraster="$cupsdir/cgpdftoraster" +gstoraster="$cupsdir/gstoraster" +imagetoraster="$cupsdir/imagetoraster" +pdftops="$cupsdir/pdftops" +pstops="$cupsdir/pstops" +pstoraster="$cupsdir/pstoraster" -if [ ! -x "$cupsdir/cgpdftoraster" -a ! -x "$cupsdir/pdftops" -a ! -x "$cupsdir/gstoraster" ] ; then +if [[ ! -x $cgpdftoraster && ! -x $pdftops && ! -x $gstoraster ]] ; then echo 'CUPS does not appear to be installed, skipping test' exit 0 fi +if [[ -x $pstoraster || -x $gstoraster || -x $cgpdftoraster ]] ; then + pages="24-$((24 + $npages - 1))" + (( $postscript > 0 )) && pages="page-ranges=$pages" +else + pages='' +fi + cleanup() { - if [ -f "$tfile" ] ; then - rm -f $tfile - fi + [[ -n $tfile ]] && rm -f "$tfile" exit 1 } -pdfjam="`which pdfjam`" -if [ -z "$pdfjam" ] ; then - postscript=1 -fi - -if [ -n "$postscript" ] ; then - pdftops="`type -p pdftops`" +pdfjam=$(type -p pdfjam) +[[ -n $pdfjam ]] && postscript=1 - if [ ! -n "$pdftops" -o ! -x "$pdftops" ] ; then - pdftops="`whence pdftops`" - fi +if (( $postscript > 0 )) ; then + pdftops=$(type -p pdftops) - if [ -n "$pdftops" -a ! -x "$cupsdir/cgpdftoraster" ] ; then - tfile=`mktemp` + if [[ -n $pdftops && ! -x $cgpdftoraster ]] ; then + tfile=$(mktemp) trap cleanup 1 2 3 6 14 15 30 - "$pdftops" -f 24 -l `expr 24 + $npages - 1` "$testfile" $tfile + "$pdftops" -f 24 -l $((24 + $npages - 1)) "$testfile" $tfile fi else - tfile=`mktemp` + tfile=$(mktemp) trap cleanup 1 2 3 6 14 15 30 "$pdfjam" -q "$testfile" "$pages" -o $tfile fi -if [ -z "$verbose" ] ; then - STP_SUPPRESS_MESSAGES=1 - export STP_SUPPRESS_MESSAGES -fi +case "$verbose" in + 1) + export STP_SUPPRESS_VERBOSE_MESSAGES=1 + ;; + 0|'') + export STP_SUPPRESS_MESSAGES=1 + export STP_SUPPRESS_VERBOSE_MESSAGES=1 + ;; + *) + ;; +esac # Note that using CUPS arguments may trigger valgrind memory leaks in # CUPS. @@ -159,70 +192,54 @@ fi #cupsargs='PageSize=w324h495 Resolution=180dpi' #cupsargs='PageSize=A8' -run_rastertogp() { - case "$valgrind" in - 1) valgrind $valopts -q --log-fd=3 --num-callers=50 --leak-check=yes --error-limit=no ./rastertogutenprint.$version 1 1 1 1 "$cupsargs" ;; - 2) valgrind $valopts --log-fd=3 --num-callers=50 --leak-resolution=high --leak-check=yes --error-limit=no ./rastertogutenprint.$version 1 1 1 1 "$cupsargs" ;; - 3) valgrind $valopts --log-fd=3 --error-limit=no --num-callers=50 --show-reachable=yes --leak-resolution=high --leak-check=yes ./rastertogutenprint.$version 1 1 1 1 "$cupsargs" ;; - 4) valgrind $valopts --log-fd=3 ./rastertogutenprint.$version 1 1 1 1 "$cupsargs" ;; - 5) cat ;; - *) ./rastertogutenprint.$version 1 1 1 1 "$cupsargs" ;; - esac - if [ $? -ne 0 ] ; then - retval=1 - fi - exit $retval -} - get_ppds() { - args="$@" - if [ -n "$args" ] ; then - for f in "$@" ; do - if [ -r "$f" ] ; then + if [[ -n $@ || -n $printers_to_test ]] ; then + for f in "$@" $printers_to_test ; do + if [[ -r $f ]] ; then echo $f - elif [ -r "ppd/C/$f" ] ; then + elif [[ -r ppd/C/$f ]] ; then echo "ppd/C/$f" - elif [ -f "ppd/C/${f}.ppd" ] ; then + elif [[ -f ppd/C/${f}.ppd ]] ; then echo "ppd/C/${f}.ppd" - elif [ -f "ppd/C/${f}.ppd.gz" ] ; then + elif [[ -f ppd/C/${f}.ppd.gz ]] ; then echo "ppd/C/${f}.ppd.gz" - elif [ -f "ppd/C/${f}.ppd.GZ" ] ; then + elif [[ -f ppd/C/${f}.ppd.GZ ]] ; then echo "ppd/C/${f}.ppd.GZ" - elif [ -f "ppd/C/${f}.ppd.bz2" ] ; then + elif [[ -f ppd/C/${f}.ppd.bz2 ]] ; then echo "ppd/C/${f}.ppd.bz2" - elif [ -f "ppd/C/${f}.ppd.BZ2" ] ; then + elif [[ -f ppd/C/${f}.ppd.BZ2 ]] ; then echo "ppd/C/${f}.ppd.BZ2" - elif [ -f "ppd/C/${f}.ppd.z" ] ; then + elif [[ -f ppd/C/${f}.ppd.z ]] ; then echo "ppd/C/${f}.ppd.z" - elif [ -f "ppd/C/${f}.ppd.Z" ] ; then + elif [[ -f ppd/C/${f}.ppd.Z ]] ; then echo "ppd/C/${f}.ppd.Z" - elif [ -f "ppd/C/stp-${f}.ppd" ] ; then + elif [[ -f ppd/C/stp-${f}.ppd ]] ; then echo "ppd/C/stp-${f}.ppd" - elif [ -f "ppd/C/stp-${f}.ppd.gz" ] ; then + elif [[ -f ppd/C/stp-${f}.ppd.gz ]] ; then echo "ppd/C/stp-${f}.ppd.gz" - elif [ -f "ppd/C/stp-${f}.ppd.GZ" ] ; then + elif [[ -f ppd/C/stp-${f}.ppd.GZ ]] ; then echo "ppd/C/stp-${f}.ppd.GZ" - elif [ -f "ppd/C/stp-${f}.ppd.bz2" ] ; then + elif [[ -f ppd/C/stp-${f}.ppd.bz2 ]] ; then echo "ppd/C/stp-${f}.ppd.bz2" - elif [ -f "ppd/C/stp-${f}.ppd.BZ2" ] ; then + elif [[ -f ppd/C/stp-${f}.ppd.BZ2 ]] ; then echo "ppd/C/stp-${f}.ppd.BZ2" - elif [ -f "ppd/C/stp-${f}.ppd.z" ] ; then + elif [[ -f ppd/C/stp-${f}.ppd.z ]] ; then echo "ppd/C/stp-${f}.ppd.z" - elif [ -f "ppd/C/stp-${f}.ppd.Z" ] ; then + elif [[ -f ppd/C/stp-${f}.ppd.Z ]] ; then echo "ppd/C/stp-${f}.ppd.Z" - elif [ -f "ppd/C/stp-${f}.${version}.ppd" ] ; then + elif [[ -f ppd/C/stp-${f}.${version}.ppd ]] ; then echo "ppd/C/stp-${f}.${version}.ppd" - elif [ -f "ppd/C/stp-${f}.${version}.ppd.gz" ] ; then + elif [[ -f ppd/C/stp-${f}.${version}.ppd.gz ]] ; then echo "ppd/C/stp-${f}.${version}.ppd.gz" - elif [ -f "ppd/C/stp-${f}.${version}.ppd.GZ" ] ; then + elif [[ -f ppd/C/stp-${f}.${version}.ppd.GZ ]] ; then echo "ppd/C/stp-${f}.${version}.ppd.GZ" - elif [ -f "ppd/C/stp-${f}.${version}.ppd.bz2" ] ; then + elif [[ -f ppd/C/stp-${f}.${version}.ppd.bz2 ]] ; then echo "ppd/C/stp-${f}.${version}.ppd.bz2" - elif [ -f "ppd/C/stp-${f}.${version}.ppd.BZ2" ] ; then + elif [[ -f ppd/C/stp-${f}.${version}.ppd.BZ2 ]] ; then echo "ppd/C/stp-${f}.${version}.ppd.BZ2" - elif [ -f "ppd/C/stp-${f}.${version}.ppd.z" ] ; then + elif [[ -f ppd/C/stp-${f}.${version}.ppd.z ]] ; then echo "ppd/C/stp-${f}.${version}.ppd.z" - elif [ -f "ppd/C/stp-${f}.${version}.ppd.Z" ] ; then + elif [[ -f ppd/C/stp-${f}.${version}.ppd.Z ]] ; then echo "ppd/C/stp-${f}.${version}.ppd.Z" fi done @@ -231,48 +248,156 @@ get_ppds() { fi } -if [ -n "$make_ppds" -o ! -d ppd/C ] ; then - rm -rf ppd/C # Clean out any leftover simplified PPDs - make ppd-nonls-a # that double the time for the test +if [[ -n $make_ppds || ! -d ppd/C ]] ; then + rm -rf ppd/C ## not all systems can work with gzipped PPDs - find ppd/C -name '*.ppd.gz' | xargs gunzip -f + if [[ $skip_simplified == 1 ]] ; then + EXTRA_GENPPD_OPTS="$extra_genppd_opts" make ppd-nonls + else + EXTRA_GENPPD_OPTS="$extra_genppd_opts" make ppd-nonls-a + fi fi -do_output() { - if [ -n "`echo "$PPD" |grep '\.gz$'`" ] ; then - driver=`gunzip -c "$PPD" | grep '^\*StpDriverName:' |awk '{print $2}' | sed 's/"//g'` +find_page_size() { + ppd=$1 + (( $use_smallest_pagesize == 0 )) && return; + driver=$(grep '^\*StpDriverName' "$ppd" | sed -e 's/^[^"]*"//' -e 's/"//g') + pagesize=$(./min-pagesize "$driver") + [[ -n "$pagesize" ]] && echo "PageSize=$pagesize" +} + +find_resolution() { + ppd=$1 + resolutions=$(grep "^\\*Resolution " "$ppd" |sed -e 's,/.*,,' -e 's/.* //') + [[ -z "$resolutions" ]] && return + low_resolution=9999999999 + low_resolution_name='' + high_resolution=0 + high_resolution_name='' + for r in $resolutions ; do + res=$(sed -e 's/dpi//' -e 's/x/ \\\* /' -e 's/^\([0-9]*\)$/\1 \\\* \1/' <<< $r) + resnum=$(eval "expr $res") + if (( $resnum > $high_resolution )) ; then + high_resolution=$resnum + high_resolution_name=$r + fi + if (( $resnum < $low_resolution )) ; then + low_resolution=$resnum + low_resolution_name=$r + fi + done + if (( $use_explicit_quality == 1 )) ; then + echo "Resolution=$low_resolution_name" + elif (( $use_explicit_quality == 2 )) ; then + echo "Resolution=$high_resolution_name" + fi + +} + +find_quality_preset() { + ppd=$1 + if (( $use_explicit_quality == 1 )) ; then + for q in ${quality_presets[@]} ; do + if grep -q "^\\*StpQuality $q" "$ppd" ; then + echo "StpQuality=$q" + return + fi + done + elif (( "$use_explicit_quality" == 2 )) ; then + best_quality='' + for q in ${quality_presets[@]} ; do + grep -q "^\\*StpQuality $q" "$ppd" && best_quality=$q + done + [[ -n $best_quality ]] && echo "StpQuality=$best_quality" + fi +} + +find_quality() { + ppd=$1 + if [[ ! -r $ppd ]] ; then + echo "Can't find $ppd!" 1>&2 + exit 1; + fi + (( "$use_explicit_quality" == 0 )) && return + if grep -q '\*Resolution' "$ppd" ; then + find_resolution $ppd else - driver=`grep '^\*StpDriverName:' "$PPD" |awk '{print $2}' | sed 's/"//g'` + find_quality_preset $ppd fi - if [ -n "$outdir" ] ; then +} + +xgrep() { + pat=$1 + file=$2 + if [[ $file == *.gz ]] ; then + egrep -m1 $pat $file + else + zgrep $pat $file + fi +} + +runcmd() { + qualarg=$(find_quality "$PPD") + sizearg=$(find_page_size "$PPD") + a='1 1 1 1' + qarg="$qualarg $sizearg $cupsargs" + if [[ -x $cgpdftoraster ]] ; then + # cgpdftoraster doesn't like arguments. How rude. + $cgpdftoraster $a "" < "$tfile" + elif [[ -f $tfile && -x $gstoraster ]] ; then + $gstoraster $a "$qarg" < "$tfile" + elif [[ -f $tfile ]] ; then + $pstops $a $"qarg" < "$tfile" + elif [[ -x $pstoraster ]] ; then + $pdftops $a "$qarg" < "$tfile" | $pstops $a "$pages$qarg" | $pstoraster + elif [[ -x $gstoraster ]] ; then + $pdftops $a "$qarg" < "$tfile" | $gstoraster $a "$pages$qarg" + else + $imagetoraster $a "$qarg" < calibrate.ppm + fi +} + +do_output() { + driver=$(xgrep '^\*StpDriverName:' "$PPD" |awk '{print $2}' | sed 's/"//g') + if [[ -n $outdir ]] ; then cat > "$outdir/$driver.prn" - if [ -n "$md5dir" ] ; then - (cd "$outdir"; cat "$driver.prn") | md5sum | sed "s/-/\*$driver/" > "$md5dir/$driver.md5" + if [[ -n $md5dir ]] ; then + md5sum < "$outdir/$driver.prn" | sed "s/-/\*$driver/" > "$md5dir/$driver.md5" fi - elif [ -n "$md5dir" ] ; then + elif [[ -n $md5dir ]] ; then cat | md5sum | sed "s/-/\*$driver/" > "$md5dir/$driver.md5" else - cat > /dev/null + cat >/dev/null fi } +run_rastertogp() { + qualarg=$(find_quality "$PPD") + sizearg=$(find_page_size "$PPD") + vg="libtool --mode=execute valgrind $valopts --log-fd=3" + vg1="$vg --num-callers=50 --leak-check=yes --error-limit=no --error-exitcode=1" + rgpc="$rgp 1 1 1 1" + qarg="$qualarg $sizearg $cupsargs" + case "$valgrind" in + 1) $vg1 -q $rgpc ;; + 2) $vg1 --leak-resolution=high $rgpc "$qarg" ;; + 3) $vg1 --leak-resolution=high --show-reachable=yes $rgpc "$qarg";; + 4) $vg $rgpc "$qarg" ;; + 5) cat ;; + 6) cat > /dev/null ;; + *) $rgp 1 1 1 1 "$qarg" + esac +} + runme() { f="$1" - p=$(echo -n "`basename $f |sed -e 's/stp-//' -e 's/@GUTENPRINT_RELEASE_VERSION@.ppd.*$//'`... ") - PPD=$f - export PPD - if [ -x "$cupsdir/cgpdftoraster" ] ; then - output="$p `($cupsdir/cgpdftoraster 1 1 1 1 "" < "$tfile" 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" - elif [ -f "$tfile" -a -x "$cupsdir/gstoraster" ] ; then - output="$p `($cupsdir/gstoraster 1 1 1 1 \"$cupsargs\" < "$tfile" 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" - elif [ -f "$tfile" ] ; then - output="$p `($cupsdir/pstops 1 1 1 1 \"$cupsargs\" < "$tfile" 2>/dev/null | $cupsdir/pstoraster 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" - elif [ -x "$cupsdir/pstoraster" ] ; then - output="$p `($cupsdir/pdftops 1 1 1 1 \"$cupsargs\" < "$tfile" 2>/dev/null | $cupsdir/pstops 1 1 1 1 \"$pages$cupsargs\" 2>/dev/null | $cupsdir/pstoraster 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" - elif [ -x "$cupsdir/gstoraster" ] ; then - output="$p `($cupsdir/pdftops 1 1 1 1 \"$cupsargs\" < "$tfile" 2>/dev/null | $cupsdir/gstoraster 1 1 1 1 \"$pages$cupsargs\" 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" + p=${f#*stp-} + p=${p/${version}./} + export PPD=$f + if [[ -n $outdir || -n $md5dir ]] ; then + output="${p%.ppd*}...$( (runcmd 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2)" else - output="$p `($cupsdir/imagetoraster 1 1 1 1 \"$cupsargs\" < calibrate.ppm 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2`" + output="${p%.ppd*}...$( (runcmd 2>/dev/null | run_rastertogp >/dev/null) 2>&1 3>&2)" fi return $? } @@ -280,65 +405,79 @@ runme() { runall() { jobs="${1:-1}" rotor="${2:-0}" - shift - shift + shift 2 retval=0 jobno=0 for f in "$@" ; do - skip='' - if [ $((jobno % jobs)) -eq $rotor ] ; then + if (( $jobno == $rotor )) ; then runme "$f" - if [ $? -ne 0 ] ; then - retval=1 - fi + (( $? != 0 )) && retval=1 echo "$output" - echo "$output" |grep ERROR - if [ $? -eq 0 ] ; then - retval=1 - fi + grep -q 'ERROR:' <<< "$output" && retval=1 fi - jobno=$((jobno+1)) + jobno=$((($jobno+1) % $jobs)) done return $retval } +get_models() { + re='\*StpDriverModelFamily: ' + if (( ${#all_models[*]} <= 1 )) ; then + declare -a models=($(xargs grep -m1 -H "^$re" <<< $@ | sed "s/:$re/=/")) + for m in ${models[@]} ; do + model=${m#*=} + file=${m%%=*} + all_models[$file]=$model + done + fi +} + retval=0 -if [ -d ppd/C ] ; then - files=$(get_ppds $args) - if [ -n "$single" ] ; then - all_models="" - nondup_files="" - for f in $files ; do - if [ "$(basename $f .gz)" = "$(basename $f)" ] ; then - model=$(grep '^.StpDriverModelFamily' $f | awk '{print $2}') - else - model=$(gunzip -c $f | grep '^.StpDriverModelFamily' | awk '{print $2}') - fi - skip=0 - for m in $all_models ; do - if [ "$model" = "$m" ] ; then - skip=1 - break - fi - done - if [ "$skip" -eq 0 ] ; then - all_models="$model $all_models" - nondup_files="$nondup_files $f" +if [[ -d ppd/C ]] ; then + declare -a files=($(get_ppds "$@")) + declare -A models + declare -a nfiles + if (( $skip_simplified > 0 )) ; then + for f in ${files[@]} ; do + [[ $f != *.sim.ppd* ]] && nfiles+=($f) + done + files=(${nfiles[@]}) + fi + if [[ -n $family ]] ; then + get_models ${files[@]} + nfiles=() + for f in ${files[@]} ; do + [[ ${all_models[$f]} =~ $family ]] && nfiles+=($f) + done + files=(${nfiles[@]}) + fi + if (( $single != 0 )) ; then + declare -A seen_models + nfiles=() + get_models ${files[@]} + for f in ${files[@]} ; do + model=${all_models[$f]} + [[ $f == *.sim.ppd ]] && model="${model}_sim" + if [[ -z ${seen_models[$model]} ]] ; then + nfiles+=($f) + seen_models[$model]=1 fi done - files=$nondup_files + files=(${nfiles[@]}) fi - for i in $(seq 0 $(($jobs-1))) ; do - runall $jobs $i $files & + (( ${#files[@]} < $jobs )) && jobs=${#files[@]} + declare -a subproc=($(seq 0 $((jobs-1)))) + # Fire 'em off in the background... + for i in ${subproc[@]} ; do + runall $jobs $i ${files[@]} & done - for i in $(seq 0 $(($jobs-1))) ; do + # And wait for them to complete. + for i in ${subproc[@]} ; do wait -n - if [ "$?" -gt 0 ] ; then - retval=1 - fi + (( $? != 0 )) && retval=1 done fi -if [ -f "$tfile" ] ; then - rm -f $tfile -fi + +[[ -n $tfile ]] && rm -f "$tfile" +(( $retval == 0 )) && rm -rf ppd/C && rmdir ppd exit $retval diff --git a/src/escputil/Makefile.am b/src/escputil/Makefile.am index 8f55d26..5023885 100644 --- a/src/escputil/Makefile.am +++ b/src/escputil/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. diff --git a/src/escputil/Makefile.in b/src/escputil/Makefile.in index 9b450de..e8d80cc 100644 --- a/src/escputil/Makefile.in +++ b/src/escputil/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,17 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -83,23 +93,22 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(top_srcdir)/scripts/depcomp @BUILD_ESCPUTIL_TRUE@bin_PROGRAMS = escputil$(EXEEXT) subdir = src/escputil ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -128,7 +137,8 @@ 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__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/d4lib.Po ./$(DEPDIR)/escputil.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -174,6 +184,8 @@ am__define_uniq_tagged_files = \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/scripts/depcomp \ + $(top_srcdir)/scripts/global.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -184,6 +196,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -204,7 +218,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -221,6 +234,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -283,10 +297,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -310,7 +326,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -328,9 +343,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -398,7 +415,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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 escputil_SOURCES = d4lib.c escputil.c d4lib.h escputil_LDADD = $(GUTENPRINT_LIBS) $(LIBREADLINE_DEPS) MAINTAINERCLEANFILES = Makefile.in @@ -418,16 +434,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/escputil/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/escputil/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -497,22 +512,28 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/d4lib.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/escputil.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/d4lib.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/escputil.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) .c.o: @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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -579,7 +600,10 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -652,7 +676,8 @@ clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/d4lib.Po + -rm -f ./$(DEPDIR)/escputil.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -698,7 +723,8 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/d4lib.Po + -rm -f ./$(DEPDIR)/escputil.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -719,7 +745,7 @@ uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles 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 \ @@ -733,6 +759,8 @@ uninstall-am: uninstall-binPROGRAMS mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS +.PRECIOUS: Makefile + @SET_MAKE@ @@ -742,10 +770,6 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) diff --git a/src/escputil/d4lib.c b/src/escputil/d4lib.c index 3b7d96c..a42292a 100644 --- a/src/escputil/d4lib.c +++ b/src/escputil/d4lib.c @@ -12,8 +12,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* this file will be a library, which will allow to use the EPSON diff --git a/src/escputil/d4lib.h b/src/escputil/d4lib.h index 4762bb6..fc5871c 100644 --- a/src/escputil/d4lib.h +++ b/src/escputil/d4lib.h @@ -11,8 +11,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifndef D4LIB_H diff --git a/src/escputil/escputil.c b/src/escputil/escputil.c index a309fb4..5f58304 100644 --- a/src/escputil/escputil.c +++ b/src/escputil/escputil.c @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H @@ -91,8 +90,7 @@ 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"); +along with this program. If not, see <https://www.gnu.org/licenses/>.\n"); #if defined(HAVE_GETOPT_H) && defined(HAVE_GETOPT_LONG) @@ -1094,6 +1092,13 @@ static const char *aux_colors[] = N_("Orange"), /* d */ NULL, /* e */ NULL, /* f */ + NULL, /* 10 */ + NULL, /* 11 */ + NULL, /* 12 */ + N_("Red"), /* 13 */ + NULL, /* 14 */ + NULL, /* 15 */ + N_("Red"), /* 16 */ }; static int aux_color_count = sizeof(aux_colors) / sizeof(const char *); diff --git a/src/gimp2/Makefile.am b/src/gimp2/Makefile.am index 8d749e4..b99a0f5 100644 --- a/src/gimp2/Makefile.am +++ b/src/gimp2/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. @@ -20,11 +19,8 @@ include $(top_srcdir)/scripts/global.mk - ## Variables - - ## Programs if BUILD_GIMP2 diff --git a/src/gimp2/Makefile.in b/src/gimp2/Makefile.in index c3a9ff5..9ab84c2 100644 --- a/src/gimp2/Makefile.in +++ b/src/gimp2/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,17 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -83,24 +93,23 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(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 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -133,7 +142,10 @@ 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__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/print-gutenprint.Po \ + ./$(DEPDIR)/print-image-gimp.Po ./$(DEPDIR)/print-print.Po \ + ./$(DEPDIR)/print.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -179,6 +191,8 @@ am__define_uniq_tagged_files = \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/scripts/depcomp \ + $(top_srcdir)/scripts/global.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -189,6 +203,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -209,7 +225,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -226,6 +241,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -288,10 +304,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -315,7 +333,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -333,9 +350,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -403,7 +422,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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 LOCAL_CPPFLAGS = $(GUTENPRINT_CFLAGS) $(GIMP2_CFLAGS) COMMON_PRINT_SOURCES = \ print-image-gimp.c \ @@ -435,16 +453,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/gimp2/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/gimp2/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -518,24 +535,30 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-gutenprint.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-image-gimp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-print.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-gutenprint.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-image-gimp.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-print.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) .c.o: @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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -602,7 +625,10 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -677,7 +703,10 @@ clean-am: clean-generic clean-gimp2_plug_inPROGRAMS clean-libtool \ mostlyclean-am distclean: distclean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/print-gutenprint.Po + -rm -f ./$(DEPDIR)/print-image-gimp.Po + -rm -f ./$(DEPDIR)/print-print.Po + -rm -f ./$(DEPDIR)/print.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -723,7 +752,10 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/print-gutenprint.Po + -rm -f ./$(DEPDIR)/print-image-gimp.Po + -rm -f ./$(DEPDIR)/print-print.Po + -rm -f ./$(DEPDIR)/print.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -744,20 +776,22 @@ uninstall-am: uninstall-gimp2_plug_inPROGRAMS .MAKE: install-am install-strip -.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 +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles 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 + +.PRECIOUS: Makefile @SET_MAKE@ @@ -768,10 +802,6 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) diff --git a/src/gimp2/print-gutenprint.c b/src/gimp2/print-gutenprint.c index 225f0e4..c8e5882 100644 --- a/src/gimp2/print-gutenprint.c +++ b/src/gimp2/print-gutenprint.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H diff --git a/src/gimp2/print-image-gimp.c b/src/gimp2/print-image-gimp.c index 1c0a912..52dc175 100644 --- a/src/gimp2/print-image-gimp.c +++ b/src/gimp2/print-image-gimp.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H diff --git a/src/gimp2/print-intl.h b/src/gimp2/print-intl.h index d129b85..9c5e2d9 100644 --- a/src/gimp2/print-intl.h +++ b/src/gimp2/print-intl.h @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifndef GIMP2_PRINT_INTL_H #define GIMP2_PRINT_INTL_H diff --git a/src/gimp2/print-print.c b/src/gimp2/print-print.c index 7c4063e..0c352ae 100644 --- a/src/gimp2/print-print.c +++ b/src/gimp2/print-print.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H diff --git a/src/gimp2/print.c b/src/gimp2/print.c index f1c4848..0d49d45 100644 --- a/src/gimp2/print.c +++ b/src/gimp2/print.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H diff --git a/src/gimp2/print_gimp.h b/src/gimp2/print_gimp.h index 7f95161..136ab3a 100644 --- a/src/gimp2/print_gimp.h +++ b/src/gimp2/print_gimp.h @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * * Revision History: @@ -29,8 +28,10 @@ #define __PRINT_GIMP_H__ #ifdef __GNUC__ +#ifndef inline #define inline __inline__ #endif +#endif #include <gutenprint/gutenprint.h> #include <gutenprintui2/gutenprintui.h> diff --git a/src/gutenprintui2/Makefile.am b/src/gutenprintui2/Makefile.am index bedd468..77431ff 100644 --- a/src/gutenprintui2/Makefile.am +++ b/src/gutenprintui2/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. diff --git a/src/gutenprintui2/Makefile.in b/src/gutenprintui2/Makefile.in index f0cf463..bbdb036 100644 --- a/src/gutenprintui2/Makefile.in +++ b/src/gutenprintui2/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -21,7 +21,17 @@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -84,24 +94,21 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(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 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = gutenprintui2.pc @@ -169,7 +176,16 @@ 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__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/libgutenprintui2_la-curve.Plo \ + ./$(DEPDIR)/libgutenprintui2_la-gammacurve.Plo \ + ./$(DEPDIR)/libgutenprintui2_la-panel.Plo \ + ./$(DEPDIR)/libgutenprintui2_la-plist.Plo \ + ./$(DEPDIR)/libgutenprintui2_la-print-image-thumbnail.Plo \ + ./$(DEPDIR)/libgutenprintui2_la-printrcl.Plo \ + ./$(DEPDIR)/libgutenprintui2_la-printrcy.Plo \ + ./$(DEPDIR)/libgutenprintui2_la-typebuiltins.Plo \ + ./$(DEPDIR)/libgutenprintui2_la-ui-utils.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -235,6 +251,9 @@ am__define_uniq_tagged_files = \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/gutenprintui2.pc.in \ + $(top_srcdir)/scripts/depcomp $(top_srcdir)/scripts/global.mk \ + $(top_srcdir)/scripts/ylwrap printrcl.c printrcy.c printrcy.h DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -245,6 +264,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -265,7 +286,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -282,6 +302,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -344,10 +365,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -371,7 +394,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -389,9 +411,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -459,7 +483,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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 m4datadir = $(datadir)/aclocal pkgconfigdatadir = $(libdir)/pkgconfig @BUILD_LIBGUTENPRINTUI2_TRUE@lib_LTLIBRARIES = libgutenprintui2.la @@ -515,16 +538,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/gutenprintui2/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/gutenprintui2/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -584,29 +606,35 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-curve.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-gammacurve.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-panel.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-plist.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-print-image-thumbnail.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-printrcl.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-printrcy.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-typebuiltins.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-ui-utils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-curve.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-gammacurve.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-panel.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-plist.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-print-image-thumbnail.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-printrcl.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-printrcy.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-typebuiltins.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgutenprintui2_la-ui-utils.Plo@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) .c.o: @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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -763,7 +791,10 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -840,7 +871,15 @@ clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/libgutenprintui2_la-curve.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-gammacurve.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-panel.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-plist.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-print-image-thumbnail.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-printrcl.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-printrcy.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-typebuiltins.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-ui-utils.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -886,7 +925,15 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/libgutenprintui2_la-curve.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-gammacurve.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-panel.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-plist.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-print-image-thumbnail.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-printrcl.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-printrcy.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-typebuiltins.Plo + -rm -f ./$(DEPDIR)/libgutenprintui2_la-ui-utils.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -907,9 +954,9 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgconfigdataDATA .MAKE: install-am install-strip -.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 \ +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles 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 \ @@ -923,6 +970,8 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgconfigdataDATA uninstall-am uninstall-libLTLIBRARIES \ uninstall-pkgconfigdataDATA +.PRECIOUS: Makefile + @SET_MAKE@ @@ -932,10 +981,6 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) diff --git a/src/gutenprintui2/curve.c b/src/gutenprintui2/curve.c index dc9f3f9..d3af653 100644 --- a/src/gutenprintui2/curve.c +++ b/src/gutenprintui2/curve.c @@ -13,9 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, see <https://www.gnu.org/licenses/>. */ /* diff --git a/src/gutenprintui2/gammacurve.c b/src/gutenprintui2/gammacurve.c index ffff1ba..2dd6523 100644 --- a/src/gutenprintui2/gammacurve.c +++ b/src/gutenprintui2/gammacurve.c @@ -13,9 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, see <https://www.gnu.org/licenses/>. */ /* diff --git a/src/gutenprintui2/gutenprintui-internal.h b/src/gutenprintui2/gutenprintui-internal.h index 15970b8..667e15e 100644 --- a/src/gutenprintui2/gutenprintui-internal.h +++ b/src/gutenprintui2/gutenprintui-internal.h @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * * Revision History: @@ -29,8 +28,10 @@ #define GUTENPRINTUI_INTERNAL_H #ifdef __GNUC__ +#ifndef inline #define inline __inline__ #endif +#endif #include <sys/types.h> diff --git a/src/gutenprintui2/panel.c b/src/gutenprintui2/panel.c index fa2df8b..e673eea 100644 --- a/src/gutenprintui2/panel.c +++ b/src/gutenprintui2/panel.c @@ -17,8 +17,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H @@ -37,6 +36,7 @@ #include <string.h> #include <stdio.h> +#include <math.h> #define MAXIMUM_PARAMETER_LEVEL STP_PARAMETER_LEVEL_ADVANCED4 @@ -784,12 +784,10 @@ build_printer_combo(void) static int check_page_size(const char *paper_size) { - const stp_papersize_t *ps = stp_get_papersize_by_name(paper_size); - if (ps && (ps->paper_unit == PAPERSIZE_ENGLISH_STANDARD || - ps->paper_unit == PAPERSIZE_METRIC_STANDARD)) - return 1; - else - return 0; + const stp_papersize_t *ps = stp_describe_papersize(pv->v, paper_size); + int page_size_ok = (ps && (ps->paper_unit == PAPERSIZE_ENGLISH_STANDARD || + ps->paper_unit == PAPERSIZE_METRIC_STANDARD)); + return page_size_ok; } static void @@ -2031,8 +2029,7 @@ create_about_dialog (void) "GNU General Public License 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 " + "along with this program. If not, see <https://www.gnu.org/licenses/>.\n" "USA\n")); gtk_misc_set_padding (GTK_MISC (label), 12, 4); @@ -3330,7 +3327,7 @@ static void setup_auto_paper_size(void) { const stp_papersize_t *ps = - stp_get_papersize_by_name(stp_get_string_parameter(pv->v, "PageSize")); + stp_describe_papersize(pv->v, stp_get_string_parameter(pv->v, "PageSize")); if (ps->height == 0 && ps->width != 0) /* Implies roll feed */ { g_signal_handlers_block_matched (G_OBJECT(auto_paper_size_button), @@ -3516,7 +3513,7 @@ static void set_media_size(const gchar *new_media_size) { static int setting_media_size = 0; - const stp_papersize_t *pap = stp_get_papersize_by_name (new_media_size); + const stp_papersize_t *pap = stp_describe_papersize (pv->v, new_media_size); if (setting_media_size) return; @@ -3537,7 +3534,7 @@ set_media_size(const gchar *new_media_size) stp_parameter_t desc; stp_describe_parameter(pv->v, "PageSize", &desc); stp_set_string_parameter(pv->v, "PageSize", desc.deflt.str); - pap = stp_get_papersize_by_name(desc.deflt.str); + pap = stp_describe_papersize(pv->v, desc.deflt.str); stp_parameter_description_destroy(&desc); for (i = 0; i < current_option_count; i++) { @@ -4587,7 +4584,7 @@ compute_thumbnail(const stp_vars_t *v) priv.offset = 0; priv.limit = thumbnail_bpp * thumbnail_h * thumbnail_w; - if (stp_verify(nv) != 1 || stp_print(nv, im) != 1) + if (stp_print(nv, im) != 1) { answer = 0; fprintf(stderr, "Could not print thumbnail!\n"); @@ -5125,8 +5122,8 @@ preview_motion_callback (GtkWidget *widget, return; if (move_constraint == MOVE_CONSTRAIN) { - int dx = abs(event->x - mouse_x); - int dy = abs(event->y - mouse_y); + int dx = STP_DABS(event->x - mouse_x); + int dy = STP_DABS(event->y - mouse_y); if (dx > dy && dx > 3) move_constraint = MOVE_HORIZONTAL; else if (dy > dx && dy > 3) diff --git a/src/gutenprintui2/plist.c b/src/gutenprintui2/plist.c index a52d7bd..ee7d028 100644 --- a/src/gutenprintui2/plist.c +++ b/src/gutenprintui2/plist.c @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H @@ -1792,8 +1791,9 @@ stpui_print(const stpui_plist_t *printer, stpui_image_t *image) stp_set_errfunc(np->v, stpui_get_errfunc()); stp_set_outdata(np->v, prn); stp_set_errdata(np->v, stpui_get_errdata()); + stp_start_job(np->v, &(image->im)); print_status = stp_print(np->v, &(image->im)); - + stp_end_job(np->v, &(image->im)); /* * Note that we do not use popen() to create the output, therefore * we do not use pclose() to close it. See bug 1013565. diff --git a/src/gutenprintui2/print-image-thumbnail.c b/src/gutenprintui2/print-image-thumbnail.c index adca256..c5ccf80 100644 --- a/src/gutenprintui2/print-image-thumbnail.c +++ b/src/gutenprintui2/print-image-thumbnail.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H diff --git a/src/gutenprintui2/printrc.h b/src/gutenprintui2/printrc.h index 2aff9d9..151a7e6 100644 --- a/src/gutenprintui2/printrc.h +++ b/src/gutenprintui2/printrc.h @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * * Revision History: diff --git a/src/gutenprintui2/printrcl.c b/src/gutenprintui2/printrcl.c index e9ad5d5..c545b12 100644 --- a/src/gutenprintui2/printrcl.c +++ b/src/gutenprintui2/printrcl.c @@ -734,10 +734,9 @@ char *yytext; * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -#line 23 "printrcl.l" +#line 22 "printrcl.l" #ifdef HAVE_CONFIG_H #include <config.h> @@ -780,7 +779,7 @@ q_strdup(const char *s) return g_strndup(s + 1, strlen(s) - 2); } -#line 784 "printrcl.c" +#line 783 "printrcl.c" #define INITIAL 0 @@ -962,10 +961,10 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 77 "printrcl.l" +#line 76 "printrcl.l" -#line 969 "printrcl.c" +#line 968 "printrcl.c" if ( !(yy_init) ) { @@ -1050,203 +1049,203 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 79 "printrcl.l" +#line 78 "printrcl.l" DBG(CURRENT_PRINTER); return CURRENT_PRINTER; YY_BREAK case 2: YY_RULE_SETUP -#line 80 "printrcl.l" +#line 79 "printrcl.l" DBG(SHOW_ALL_PAPER_SIZES); return SHOW_ALL_PAPER_SIZES; YY_BREAK case 3: YY_RULE_SETUP -#line 81 "printrcl.l" +#line 80 "printrcl.l" DBG(PRINTER); return PRINTER; YY_BREAK case 4: YY_RULE_SETUP -#line 82 "printrcl.l" +#line 81 "printrcl.l" DBG(DESTINATION); return DESTINATION; YY_BREAK case 5: YY_RULE_SETUP -#line 83 "printrcl.l" +#line 82 "printrcl.l" DBG(SCALING); return SCALING; YY_BREAK case 6: YY_RULE_SETUP -#line 84 "printrcl.l" +#line 83 "printrcl.l" DBG(ORIENTATION); return ORIENTATION; YY_BREAK case 7: YY_RULE_SETUP -#line 85 "printrcl.l" +#line 84 "printrcl.l" DBG(AUTOSIZE_ROLL_PAPER); return AUTOSIZE_ROLL_PAPER; YY_BREAK case 8: YY_RULE_SETUP -#line 86 "printrcl.l" +#line 85 "printrcl.l" DBG(UNIT); return UNIT; YY_BREAK case 9: YY_RULE_SETUP -#line 87 "printrcl.l" +#line 86 "printrcl.l" DBG(DRIVER); return DRIVER; YY_BREAK case 10: YY_RULE_SETUP -#line 88 "printrcl.l" +#line 87 "printrcl.l" DBG(LEFT); return LEFT; YY_BREAK case 11: YY_RULE_SETUP -#line 89 "printrcl.l" +#line 88 "printrcl.l" DBG(TOP); return TOP; YY_BREAK case 12: YY_RULE_SETUP -#line 90 "printrcl.l" +#line 89 "printrcl.l" DBG(CUSTOM_PAGE_WIDTH); return CUSTOM_PAGE_WIDTH; YY_BREAK case 13: YY_RULE_SETUP -#line 91 "printrcl.l" +#line 90 "printrcl.l" DBG(CUSTOM_PAGE_HEIGHT); return CUSTOM_PAGE_HEIGHT; YY_BREAK case 14: YY_RULE_SETUP -#line 92 "printrcl.l" +#line 91 "printrcl.l" DBG(OUTPUT_TYPE); return OUTPUT_TYPE; YY_BREAK case 15: YY_RULE_SETUP -#line 93 "printrcl.l" +#line 92 "printrcl.l" DBG(PARAMETER); return PARAMETER; YY_BREAK case 16: YY_RULE_SETUP -#line 94 "printrcl.l" +#line 93 "printrcl.l" DBG(QUEUE_NAME); return QUEUE_NAME; YY_BREAK case 17: YY_RULE_SETUP -#line 95 "printrcl.l" +#line 94 "printrcl.l" DBG(OUTPUT_FILENAME); return OUTPUT_FILENAME; YY_BREAK case 18: YY_RULE_SETUP -#line 96 "printrcl.l" +#line 95 "printrcl.l" DBG(EXTRA_PRINTER_OPTIONS); return EXTRA_PRINTER_OPTIONS; YY_BREAK case 19: YY_RULE_SETUP -#line 97 "printrcl.l" +#line 96 "printrcl.l" DBG(CUSTOM_COMMAND); return CUSTOM_COMMAND; YY_BREAK case 20: YY_RULE_SETUP -#line 98 "printrcl.l" +#line 97 "printrcl.l" DBG(COMMAND_TYPE); return COMMAND_TYPE; YY_BREAK case 21: YY_RULE_SETUP -#line 99 "printrcl.l" +#line 98 "printrcl.l" DBG(GLOBAL_SETTINGS); return GLOBAL_SETTINGS; YY_BREAK case 22: YY_RULE_SETUP -#line 100 "printrcl.l" +#line 99 "printrcl.l" DBG(END_GLOBAL_SETTINGS); return END_GLOBAL_SETTINGS; YY_BREAK case 23: YY_RULE_SETUP -#line 101 "printrcl.l" +#line 100 "printrcl.l" DBG(GLOBAL); return GLOBAL; YY_BREAK case 24: YY_RULE_SETUP -#line 103 "printrcl.l" +#line 102 "printrcl.l" DBG(pINT); return pINT; YY_BREAK case 25: YY_RULE_SETUP -#line 104 "printrcl.l" +#line 103 "printrcl.l" DBG(pSTRING_LIST); return pSTRING_LIST; YY_BREAK case 26: YY_RULE_SETUP -#line 105 "printrcl.l" +#line 104 "printrcl.l" DBG(pFILE); return pFILE; YY_BREAK case 27: YY_RULE_SETUP -#line 106 "printrcl.l" +#line 105 "printrcl.l" DBG(pDOUBLE); return pDOUBLE; YY_BREAK case 28: YY_RULE_SETUP -#line 107 "printrcl.l" +#line 106 "printrcl.l" DBG(pDIMENSION); return pDIMENSION; YY_BREAK case 29: YY_RULE_SETUP -#line 108 "printrcl.l" +#line 107 "printrcl.l" DBG(pBOOLEAN); return pBOOLEAN; YY_BREAK case 30: YY_RULE_SETUP -#line 109 "printrcl.l" +#line 108 "printrcl.l" DBG(pCURVE); return pCURVE; YY_BREAK case 31: YY_RULE_SETUP -#line 111 "printrcl.l" +#line 110 "printrcl.l" yylval.dval = strtod(yytext, NULL); DBG(tNUMBER); return tNUMBER; YY_BREAK case 32: /* rule 32 can match eol */ YY_RULE_SETUP -#line 112 "printrcl.l" +#line 111 "printrcl.l" yylval.sval = q_strdup(yytext); DBG(tSTRING); return tSTRING; YY_BREAK case 33: YY_RULE_SETUP -#line 113 "printrcl.l" +#line 112 "printrcl.l" yylval.sval = g_strdup(yytext); DBG(tBOOLEAN); return tBOOLEAN; YY_BREAK case 34: YY_RULE_SETUP -#line 114 "printrcl.l" +#line 113 "printrcl.l" yylval.sval = g_strdup(yytext); DBG(tWORD); return tWORD; YY_BREAK case 35: /* rule 35 can match eol */ YY_RULE_SETUP -#line 115 "printrcl.l" +#line 114 "printrcl.l" DBG(PRINTRC_HDR); return PRINTRC_HDR; YY_BREAK case 36: YY_RULE_SETUP -#line 116 "printrcl.l" +#line 115 "printrcl.l" DBG(whitespace1); /* Skip blanks/tabs */ YY_BREAK case 37: YY_RULE_SETUP -#line 117 "printrcl.l" +#line 116 "printrcl.l" DBG(comment1); /* Skip comments */ YY_BREAK case 38: /* rule 38 can match eol */ YY_RULE_SETUP -#line 118 "printrcl.l" +#line 117 "printrcl.l" DBG(newline); mylineno++; YY_BREAK case 39: YY_RULE_SETUP -#line 119 "printrcl.l" +#line 118 "printrcl.l" ECHO; YY_BREAK -#line 1250 "printrcl.c" +#line 1249 "printrcl.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -2240,4 +2239,4 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 119 "printrcl.l" +#line 118 "printrcl.l" diff --git a/src/gutenprintui2/printrcl.l b/src/gutenprintui2/printrcl.l index 578227c..9434793 100644 --- a/src/gutenprintui2/printrcl.l +++ b/src/gutenprintui2/printrcl.l @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ %{ diff --git a/src/gutenprintui2/printrcy.c b/src/gutenprintui2/printrcy.c index 7e81f19..4a4e3ef 100644 --- a/src/gutenprintui2/printrcy.c +++ b/src/gutenprintui2/printrcy.c @@ -63,7 +63,7 @@ /* Copy the first part of user declarations. */ /* Line 371 of yacc.c */ -#line 22 "printrcy.y" +#line 21 "printrcy.y" #ifdef HAVE_CONFIG_H @@ -554,14 +554,14 @@ static const yytype_int8 yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 97, 97, 108, 115, 125, 135, 145, 155, 162, - 169, 176, 183, 190, 197, 204, 225, 232, 239, 242, - 259, 277, 295, 312, 329, 350, 373, 373, 373, 373, - 374, 374, 374, 377, 380, 380, 383, 383, 383, 383, - 384, 384, 384, 384, 384, 385, 385, 385, 385, 386, - 386, 389, 389, 392, 395, 395, 398, 402, 412, 412, - 415, 418, 429, 429, 432, 432, 435, 438, 438, 438, - 441 + 0, 96, 96, 107, 114, 124, 134, 144, 154, 161, + 168, 175, 182, 189, 196, 203, 224, 231, 238, 241, + 258, 276, 294, 311, 328, 349, 372, 372, 372, 372, + 373, 373, 373, 376, 379, 379, 382, 382, 382, 382, + 383, 383, 383, 383, 383, 384, 384, 384, 384, 385, + 385, 388, 388, 391, 394, 394, 397, 401, 411, 411, + 414, 417, 428, 428, 431, 431, 434, 437, 437, 437, + 440 }; #endif @@ -1538,7 +1538,7 @@ yyreduce: { case 2: /* Line 1792 of yacc.c */ -#line 98 "printrcy.y" +#line 97 "printrcy.y" { current_printer = stpui_plist_create((yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].sval)); g_free((yyvsp[(2) - (3)].sval)); @@ -1548,7 +1548,7 @@ yyreduce: case 3: /* Line 1792 of yacc.c */ -#line 109 "printrcy.y" +#line 108 "printrcy.y" { if ((yyvsp[(2) - (2)].sval)) g_free((yyvsp[(2) - (2)].sval)); @@ -1557,7 +1557,7 @@ yyreduce: case 4: /* Line 1792 of yacc.c */ -#line 116 "printrcy.y" +#line 115 "printrcy.y" { if (current_printer && (yyvsp[(2) - (2)].sval)) { @@ -1569,7 +1569,7 @@ yyreduce: case 5: /* Line 1792 of yacc.c */ -#line 126 "printrcy.y" +#line 125 "printrcy.y" { if (current_printer && (yyvsp[(2) - (2)].sval)) { @@ -1581,7 +1581,7 @@ yyreduce: case 6: /* Line 1792 of yacc.c */ -#line 136 "printrcy.y" +#line 135 "printrcy.y" { if (current_printer && (yyvsp[(2) - (2)].sval)) { @@ -1593,7 +1593,7 @@ yyreduce: case 7: /* Line 1792 of yacc.c */ -#line 146 "printrcy.y" +#line 145 "printrcy.y" { if (current_printer && (yyvsp[(2) - (2)].sval)) { @@ -1605,7 +1605,7 @@ yyreduce: case 8: /* Line 1792 of yacc.c */ -#line 156 "printrcy.y" +#line 155 "printrcy.y" { if (current_printer) stpui_plist_set_command_type(current_printer, (int) (yyvsp[(2) - (2)].dval)); @@ -1614,7 +1614,7 @@ yyreduce: case 9: /* Line 1792 of yacc.c */ -#line 163 "printrcy.y" +#line 162 "printrcy.y" { if (current_printer) current_printer->scaling = (yyvsp[(2) - (2)].dval); @@ -1623,7 +1623,7 @@ yyreduce: case 10: /* Line 1792 of yacc.c */ -#line 170 "printrcy.y" +#line 169 "printrcy.y" { if (current_printer) current_printer->orientation = (int) (yyvsp[(2) - (2)].dval); @@ -1632,7 +1632,7 @@ yyreduce: case 11: /* Line 1792 of yacc.c */ -#line 177 "printrcy.y" +#line 176 "printrcy.y" { if (current_printer) current_printer->auto_size_roll_feed_paper = (int) (yyvsp[(2) - (2)].dval); @@ -1641,7 +1641,7 @@ yyreduce: case 12: /* Line 1792 of yacc.c */ -#line 184 "printrcy.y" +#line 183 "printrcy.y" { if (current_printer) current_printer->unit = (int) (yyvsp[(2) - (2)].dval); @@ -1650,7 +1650,7 @@ yyreduce: case 13: /* Line 1792 of yacc.c */ -#line 191 "printrcy.y" +#line 190 "printrcy.y" { if (current_printer) stp_set_left(current_printer->v, (yyvsp[(2) - (2)].dval)); @@ -1659,7 +1659,7 @@ yyreduce: case 14: /* Line 1792 of yacc.c */ -#line 198 "printrcy.y" +#line 197 "printrcy.y" { if (current_printer) stp_set_top(current_printer->v, (yyvsp[(2) - (2)].dval)); @@ -1668,7 +1668,7 @@ yyreduce: case 15: /* Line 1792 of yacc.c */ -#line 205 "printrcy.y" +#line 204 "printrcy.y" { if (current_printer) { @@ -1691,7 +1691,7 @@ yyreduce: case 16: /* Line 1792 of yacc.c */ -#line 226 "printrcy.y" +#line 225 "printrcy.y" { if (current_printer) stp_set_page_width(current_printer->v, (yyvsp[(2) - (2)].dval)); @@ -1700,7 +1700,7 @@ yyreduce: case 17: /* Line 1792 of yacc.c */ -#line 233 "printrcy.y" +#line 232 "printrcy.y" { if (current_printer) stp_set_page_height(current_printer->v, (yyvsp[(2) - (2)].dval)); @@ -1709,7 +1709,7 @@ yyreduce: case 19: /* Line 1792 of yacc.c */ -#line 243 "printrcy.y" +#line 242 "printrcy.y" { if (current_printer) { @@ -1728,7 +1728,7 @@ yyreduce: case 20: /* Line 1792 of yacc.c */ -#line 260 "printrcy.y" +#line 259 "printrcy.y" { if (current_printer) { @@ -1748,7 +1748,7 @@ yyreduce: case 21: /* Line 1792 of yacc.c */ -#line 278 "printrcy.y" +#line 277 "printrcy.y" { if (current_printer) { @@ -1768,7 +1768,7 @@ yyreduce: case 22: /* Line 1792 of yacc.c */ -#line 296 "printrcy.y" +#line 295 "printrcy.y" { if (current_printer) { @@ -1787,7 +1787,7 @@ yyreduce: case 23: /* Line 1792 of yacc.c */ -#line 313 "printrcy.y" +#line 312 "printrcy.y" { if (current_printer) { @@ -1806,7 +1806,7 @@ yyreduce: case 24: /* Line 1792 of yacc.c */ -#line 330 "printrcy.y" +#line 329 "printrcy.y" { if (current_printer) { @@ -1829,7 +1829,7 @@ yyreduce: case 25: /* Line 1792 of yacc.c */ -#line 351 "printrcy.y" +#line 350 "printrcy.y" { if (current_printer) { @@ -1854,13 +1854,13 @@ yyreduce: case 56: /* Line 1792 of yacc.c */ -#line 399 "printrcy.y" +#line 398 "printrcy.y" { stpui_printrc_current_printer = (yyvsp[(2) - (2)].sval); } break; case 57: /* Line 1792 of yacc.c */ -#line 403 "printrcy.y" +#line 402 "printrcy.y" { if (strcmp((yyvsp[(2) - (2)].sval), "True") == 0) stpui_show_all_paper_sizes = 1; @@ -1872,7 +1872,7 @@ yyreduce: case 61: /* Line 1792 of yacc.c */ -#line 419 "printrcy.y" +#line 418 "printrcy.y" { if ((yyvsp[(2) - (2)].sval)) { @@ -2117,5 +2117,5 @@ yyreturn: /* Line 2055 of yacc.c */ -#line 444 "printrcy.y" +#line 443 "printrcy.y" diff --git a/src/gutenprintui2/printrcy.y b/src/gutenprintui2/printrcy.y index 6832634..14388ab 100644 --- a/src/gutenprintui2/printrcy.y +++ b/src/gutenprintui2/printrcy.y @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ %{ diff --git a/src/gutenprintui2/typebuiltins.c b/src/gutenprintui2/typebuiltins.c index 4822675..3c5d39f 100644 --- a/src/gutenprintui2/typebuiltins.c +++ b/src/gutenprintui2/typebuiltins.c @@ -1,8 +1,25 @@ - +/* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ #include <gutenprintui2/gutenprintui.h> +/* enumerations from "../../include/gutenprintui2/curve.h" */ +GType +stpui_curve_type_get_type (void) +{ + static GType etype = 0; + if (etype == 0) { + static const GEnumValue values[] = { + { STPUI_CURVE_TYPE_LINEAR, "STPUI_CURVE_TYPE_LINEAR", "linear" }, + { STPUI_CURVE_TYPE_SPLINE, "STPUI_CURVE_TYPE_SPLINE", "spline" }, + { STPUI_CURVE_TYPE_FREE, "STPUI_CURVE_TYPE_FREE", "free" }, + { 0, NULL, NULL } + }; + etype = g_enum_register_static ("StpuiCurveType", values); + } + return etype; +} + /* enumerations from "../../include/gutenprintui2/gutenprintui.h" */ GType orient_t_orient_t_get_type (void) @@ -37,22 +54,5 @@ command_t_command_t_get_type (void) return etype; } -/* enumerations from "../../include/gutenprintui2/curve.h" */ -GType -stpui_curve_type_get_type (void) -{ - static GType etype = 0; - if (etype == 0) { - static const GEnumValue values[] = { - { STPUI_CURVE_TYPE_LINEAR, "STPUI_CURVE_TYPE_LINEAR", "linear" }, - { STPUI_CURVE_TYPE_SPLINE, "STPUI_CURVE_TYPE_SPLINE", "spline" }, - { STPUI_CURVE_TYPE_FREE, "STPUI_CURVE_TYPE_FREE", "free" }, - { 0, NULL, NULL } - }; - etype = g_enum_register_static ("StpuiCurveType", values); - } - return etype; -} - - +/* Generated data ends here */ diff --git a/src/gutenprintui2/ui-utils.c b/src/gutenprintui2/ui-utils.c index baf5865..7175d24 100644 --- a/src/gutenprintui2/ui-utils.c +++ b/src/gutenprintui2/ui-utils.c @@ -17,8 +17,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H diff --git a/src/main/Makefile.am b/src/main/Makefile.am index 6b41313..f75a2b4 100644 --- a/src/main/Makefile.am +++ b/src/main/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. @@ -82,7 +81,7 @@ print_dpl_la_LDFLAGS = -module -avoid-version print_ps_la_SOURCES = print-ps.c xmlppd.c xmlppd.h print_ps_la_LDFLAGS = -module -avoid-version -print_dyesub_la_SOURCES = print-olympus.c +print_dyesub_la_SOURCES = print-dyesub.c print_dyesub_la_LDFLAGS = -module -avoid-version print_raw_la_SOURCES = print-raw.c @@ -144,6 +143,7 @@ libgutenprint_la_SOURCES = \ print-version.c \ print-weave.c \ printers.c \ + refcache.c \ sequence.c \ string-list.c \ xml.c \ diff --git a/src/main/Makefile.in b/src/main/Makefile.in index defa705..8990a52 100644 --- a/src/main/Makefile.in +++ b/src/main/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -21,7 +21,17 @@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -84,23 +94,21 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(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 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = gutenprint.pc @@ -156,7 +164,7 @@ am__libgutenprint_la_SOURCES_DIST = array.c bit-ops.c channel.c \ dither-very-fast.c dither-predithered.c generic-options.c \ image.c buffer-image.c module.c path.c print-dither-matrices.c \ print-list.c print-papers.c print-util.c print-vars.c \ - print-version.c print-weave.c printers.c sequence.c \ + print-version.c print-weave.c printers.c refcache.c sequence.c \ string-list.c xml.c mxml-attr.c mxml-file.c mxml-node.c \ mxml-search.c dither-impl.h dither-inlined-functions.h \ generic-options.h gutenprint-internal.h print-color.c \ @@ -166,7 +174,7 @@ am__libgutenprint_la_SOURCES_DIST = array.c bit-ops.c channel.c \ escp2-driver.c print-escp2.h print-escp2-data.c \ escp2-channels.c escp2-papers.c escp2-resolutions.c \ print-lexmark.c print-pcl.c print-dpl.c print-ps.c xmlppd.c \ - xmlppd.h print-olympus.c print-raw.c + xmlppd.h print-dyesub.c print-raw.c am__objects_1 = mxml-attr.lo mxml-file.lo mxml-node.lo mxml-search.lo am__objects_2 = am__objects_3 = print-color.lo color-conversions.lo @@ -177,7 +185,7 @@ am__objects_6 = print-lexmark.lo am__objects_7 = print-pcl.lo am__objects_8 = print-dpl.lo am__objects_9 = print-ps.lo xmlppd.lo -am__objects_10 = print-olympus.lo +am__objects_10 = print-dyesub.lo am__objects_11 = print-raw.lo am__objects_12 = $(am__objects_3) $(am__objects_4) $(am__objects_5) \ $(am__objects_6) $(am__objects_7) $(am__objects_8) \ @@ -190,8 +198,8 @@ am_libgutenprint_la_OBJECTS = array.lo bit-ops.lo channel.lo color.lo \ image.lo buffer-image.lo module.lo path.lo \ print-dither-matrices.lo print-list.lo print-papers.lo \ print-util.lo print-vars.lo print-version.lo print-weave.lo \ - printers.lo sequence.lo string-list.lo xml.lo $(am__objects_1) \ - $(am__objects_2) $(am__objects_13) + printers.lo refcache.lo sequence.lo string-list.lo xml.lo \ + $(am__objects_1) $(am__objects_2) $(am__objects_13) libgutenprint_la_OBJECTS = $(am_libgutenprint_la_OBJECTS) libgutenprint_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ @@ -213,7 +221,7 @@ print_dpl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(print_dpl_la_LDFLAGS) $(LDFLAGS) -o $@ @BUILD_MODULES_TRUE@am_print_dpl_la_rpath = -rpath $(pkgmoduledir) print_dyesub_la_LIBADD = -am_print_dyesub_la_OBJECTS = print-olympus.lo +am_print_dyesub_la_OBJECTS = print-dyesub.lo print_dyesub_la_OBJECTS = $(am_print_dyesub_la_OBJECTS) print_dyesub_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ @@ -273,7 +281,34 @@ 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__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/array.Plo ./$(DEPDIR)/bit-ops.Plo \ + ./$(DEPDIR)/buffer-image.Plo ./$(DEPDIR)/channel.Plo \ + ./$(DEPDIR)/color-conversions.Plo ./$(DEPDIR)/color.Plo \ + ./$(DEPDIR)/curve-cache.Plo ./$(DEPDIR)/curve.Plo \ + ./$(DEPDIR)/dither-ed.Plo ./$(DEPDIR)/dither-eventone.Plo \ + ./$(DEPDIR)/dither-inks.Plo ./$(DEPDIR)/dither-main.Plo \ + ./$(DEPDIR)/dither-ordered.Plo \ + ./$(DEPDIR)/dither-predithered.Plo \ + ./$(DEPDIR)/dither-very-fast.Plo \ + ./$(DEPDIR)/escp2-channels.Plo ./$(DEPDIR)/escp2-driver.Plo \ + ./$(DEPDIR)/escp2-papers.Plo ./$(DEPDIR)/escp2-resolutions.Plo \ + ./$(DEPDIR)/generic-options.Plo ./$(DEPDIR)/image.Plo \ + ./$(DEPDIR)/module.Plo ./$(DEPDIR)/mxml-attr.Plo \ + ./$(DEPDIR)/mxml-file.Plo ./$(DEPDIR)/mxml-node.Plo \ + ./$(DEPDIR)/mxml-search.Plo ./$(DEPDIR)/path.Plo \ + ./$(DEPDIR)/print-canon.Plo ./$(DEPDIR)/print-color.Plo \ + ./$(DEPDIR)/print-dither-matrices.Plo \ + ./$(DEPDIR)/print-dpl.Plo ./$(DEPDIR)/print-dyesub.Plo \ + ./$(DEPDIR)/print-escp2-data.Plo ./$(DEPDIR)/print-escp2.Plo \ + ./$(DEPDIR)/print-lexmark.Plo ./$(DEPDIR)/print-list.Plo \ + ./$(DEPDIR)/print-papers.Plo ./$(DEPDIR)/print-pcl.Plo \ + ./$(DEPDIR)/print-ps.Plo ./$(DEPDIR)/print-raw.Plo \ + ./$(DEPDIR)/print-util.Plo ./$(DEPDIR)/print-vars.Plo \ + ./$(DEPDIR)/print-version.Plo ./$(DEPDIR)/print-weave.Plo \ + ./$(DEPDIR)/printers.Plo ./$(DEPDIR)/refcache.Plo \ + ./$(DEPDIR)/sequence.Plo ./$(DEPDIR)/string-list.Plo \ + ./$(DEPDIR)/xml.Plo ./$(DEPDIR)/xmlppd.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -329,6 +364,8 @@ am__define_uniq_tagged_files = \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/gutenprint.pc.in \ + $(top_srcdir)/scripts/depcomp $(top_srcdir)/scripts/global.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -339,6 +376,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -359,7 +398,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -376,6 +414,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -438,10 +477,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -465,7 +506,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -483,9 +523,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -553,7 +595,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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 pkgconfigdatadir = $(libdir)/pkgconfig pkgmoduledir = $(pkglibdir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/modules @BUILD_MODULES_TRUE@pkgmodule_LTLIBRARIES = \ @@ -601,7 +642,7 @@ print_dpl_la_SOURCES = print-dpl.c print_dpl_la_LDFLAGS = -module -avoid-version print_ps_la_SOURCES = print-ps.c xmlppd.c xmlppd.h print_ps_la_LDFLAGS = -module -avoid-version -print_dyesub_la_SOURCES = print-olympus.c +print_dyesub_la_SOURCES = print-dyesub.c print_dyesub_la_LDFLAGS = -module -avoid-version print_raw_la_SOURCES = print-raw.c print_raw_la_LDFLAGS = -module -avoid-version @@ -657,6 +698,7 @@ libgutenprint_la_SOURCES = \ print-version.c \ print-weave.c \ printers.c \ + refcache.c \ sequence.c \ string-list.c \ xml.c \ @@ -694,16 +736,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/main/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/main/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -822,69 +863,76 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bit-ops.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buffer-image.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/channel.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color-conversions.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curve-cache.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curve.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dither-ed.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dither-eventone.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dither-inks.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dither-main.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dither-ordered.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dither-predithered.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dither-very-fast.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/escp2-channels.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/escp2-driver.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/escp2-papers.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/escp2-resolutions.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generic-options.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/image.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/module.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mxml-attr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mxml-file.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mxml-node.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mxml-search.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/path.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-canon.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-color.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-dither-matrices.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-dpl.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-escp2-data.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-escp2.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-lexmark.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-list.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-olympus.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-papers.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-pcl.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-ps.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-raw.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-util.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-vars.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-version.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-weave.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printers.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sequence.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/string-list.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlppd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bit-ops.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buffer-image.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/channel.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color-conversions.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curve-cache.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curve.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dither-ed.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dither-eventone.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dither-inks.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dither-main.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dither-ordered.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dither-predithered.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dither-very-fast.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/escp2-channels.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/escp2-driver.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/escp2-papers.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/escp2-resolutions.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generic-options.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/image.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/module.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mxml-attr.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mxml-file.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mxml-node.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mxml-search.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/path.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-canon.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-color.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-dither-matrices.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-dpl.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-dyesub.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-escp2-data.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-escp2.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-lexmark.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-list.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-papers.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-pcl.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-ps.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-raw.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-util.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-vars.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-version.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-weave.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printers.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refcache.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sequence.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/string-list.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlppd.Plo@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) .c.o: @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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -972,7 +1020,10 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -1046,7 +1097,56 @@ clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ clean-pkgmoduleLTLIBRARIES mostlyclean-am distclean: distclean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/array.Plo + -rm -f ./$(DEPDIR)/bit-ops.Plo + -rm -f ./$(DEPDIR)/buffer-image.Plo + -rm -f ./$(DEPDIR)/channel.Plo + -rm -f ./$(DEPDIR)/color-conversions.Plo + -rm -f ./$(DEPDIR)/color.Plo + -rm -f ./$(DEPDIR)/curve-cache.Plo + -rm -f ./$(DEPDIR)/curve.Plo + -rm -f ./$(DEPDIR)/dither-ed.Plo + -rm -f ./$(DEPDIR)/dither-eventone.Plo + -rm -f ./$(DEPDIR)/dither-inks.Plo + -rm -f ./$(DEPDIR)/dither-main.Plo + -rm -f ./$(DEPDIR)/dither-ordered.Plo + -rm -f ./$(DEPDIR)/dither-predithered.Plo + -rm -f ./$(DEPDIR)/dither-very-fast.Plo + -rm -f ./$(DEPDIR)/escp2-channels.Plo + -rm -f ./$(DEPDIR)/escp2-driver.Plo + -rm -f ./$(DEPDIR)/escp2-papers.Plo + -rm -f ./$(DEPDIR)/escp2-resolutions.Plo + -rm -f ./$(DEPDIR)/generic-options.Plo + -rm -f ./$(DEPDIR)/image.Plo + -rm -f ./$(DEPDIR)/module.Plo + -rm -f ./$(DEPDIR)/mxml-attr.Plo + -rm -f ./$(DEPDIR)/mxml-file.Plo + -rm -f ./$(DEPDIR)/mxml-node.Plo + -rm -f ./$(DEPDIR)/mxml-search.Plo + -rm -f ./$(DEPDIR)/path.Plo + -rm -f ./$(DEPDIR)/print-canon.Plo + -rm -f ./$(DEPDIR)/print-color.Plo + -rm -f ./$(DEPDIR)/print-dither-matrices.Plo + -rm -f ./$(DEPDIR)/print-dpl.Plo + -rm -f ./$(DEPDIR)/print-dyesub.Plo + -rm -f ./$(DEPDIR)/print-escp2-data.Plo + -rm -f ./$(DEPDIR)/print-escp2.Plo + -rm -f ./$(DEPDIR)/print-lexmark.Plo + -rm -f ./$(DEPDIR)/print-list.Plo + -rm -f ./$(DEPDIR)/print-papers.Plo + -rm -f ./$(DEPDIR)/print-pcl.Plo + -rm -f ./$(DEPDIR)/print-ps.Plo + -rm -f ./$(DEPDIR)/print-raw.Plo + -rm -f ./$(DEPDIR)/print-util.Plo + -rm -f ./$(DEPDIR)/print-vars.Plo + -rm -f ./$(DEPDIR)/print-version.Plo + -rm -f ./$(DEPDIR)/print-weave.Plo + -rm -f ./$(DEPDIR)/printers.Plo + -rm -f ./$(DEPDIR)/refcache.Plo + -rm -f ./$(DEPDIR)/sequence.Plo + -rm -f ./$(DEPDIR)/string-list.Plo + -rm -f ./$(DEPDIR)/xml.Plo + -rm -f ./$(DEPDIR)/xmlppd.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -1093,7 +1193,56 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/array.Plo + -rm -f ./$(DEPDIR)/bit-ops.Plo + -rm -f ./$(DEPDIR)/buffer-image.Plo + -rm -f ./$(DEPDIR)/channel.Plo + -rm -f ./$(DEPDIR)/color-conversions.Plo + -rm -f ./$(DEPDIR)/color.Plo + -rm -f ./$(DEPDIR)/curve-cache.Plo + -rm -f ./$(DEPDIR)/curve.Plo + -rm -f ./$(DEPDIR)/dither-ed.Plo + -rm -f ./$(DEPDIR)/dither-eventone.Plo + -rm -f ./$(DEPDIR)/dither-inks.Plo + -rm -f ./$(DEPDIR)/dither-main.Plo + -rm -f ./$(DEPDIR)/dither-ordered.Plo + -rm -f ./$(DEPDIR)/dither-predithered.Plo + -rm -f ./$(DEPDIR)/dither-very-fast.Plo + -rm -f ./$(DEPDIR)/escp2-channels.Plo + -rm -f ./$(DEPDIR)/escp2-driver.Plo + -rm -f ./$(DEPDIR)/escp2-papers.Plo + -rm -f ./$(DEPDIR)/escp2-resolutions.Plo + -rm -f ./$(DEPDIR)/generic-options.Plo + -rm -f ./$(DEPDIR)/image.Plo + -rm -f ./$(DEPDIR)/module.Plo + -rm -f ./$(DEPDIR)/mxml-attr.Plo + -rm -f ./$(DEPDIR)/mxml-file.Plo + -rm -f ./$(DEPDIR)/mxml-node.Plo + -rm -f ./$(DEPDIR)/mxml-search.Plo + -rm -f ./$(DEPDIR)/path.Plo + -rm -f ./$(DEPDIR)/print-canon.Plo + -rm -f ./$(DEPDIR)/print-color.Plo + -rm -f ./$(DEPDIR)/print-dither-matrices.Plo + -rm -f ./$(DEPDIR)/print-dpl.Plo + -rm -f ./$(DEPDIR)/print-dyesub.Plo + -rm -f ./$(DEPDIR)/print-escp2-data.Plo + -rm -f ./$(DEPDIR)/print-escp2.Plo + -rm -f ./$(DEPDIR)/print-lexmark.Plo + -rm -f ./$(DEPDIR)/print-list.Plo + -rm -f ./$(DEPDIR)/print-papers.Plo + -rm -f ./$(DEPDIR)/print-pcl.Plo + -rm -f ./$(DEPDIR)/print-ps.Plo + -rm -f ./$(DEPDIR)/print-raw.Plo + -rm -f ./$(DEPDIR)/print-util.Plo + -rm -f ./$(DEPDIR)/print-vars.Plo + -rm -f ./$(DEPDIR)/print-version.Plo + -rm -f ./$(DEPDIR)/print-weave.Plo + -rm -f ./$(DEPDIR)/printers.Plo + -rm -f ./$(DEPDIR)/refcache.Plo + -rm -f ./$(DEPDIR)/sequence.Plo + -rm -f ./$(DEPDIR)/string-list.Plo + -rm -f ./$(DEPDIR)/xml.Plo + -rm -f ./$(DEPDIR)/xmlppd.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -1115,22 +1264,25 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgconfigdataDATA \ .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool clean-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 +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-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 + +.PRECIOUS: Makefile @SET_MAKE@ @@ -1141,10 +1293,6 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) diff --git a/src/main/array.c b/src/main/array.c index c6545bd..a1ef327 100644 --- a/src/main/array.c +++ b/src/main/array.c @@ -17,8 +17,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H @@ -31,6 +30,10 @@ #include <string.h> #include <stdlib.h> #include <limits.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <strings.h> struct stp_array @@ -169,6 +172,81 @@ stp_array_get_sequence(const stp_array_t *array) return array->data; } +static stp_array_t * +xml_doc_get_array(stp_mxml_node_t *doc) +{ + stp_mxml_node_t *cur; + stp_mxml_node_t *xmlarray; + stp_array_t *array = NULL; + + if (doc == NULL ) + { + stp_deprintf(STP_DBG_ARRAY_ERRORS, + "xml_doc_get_array: XML file not parsed successfully.\n"); + return NULL; + } + + cur = doc->child; + + if (cur == NULL) + { + stp_deprintf(STP_DBG_ARRAY_ERRORS, + "xml_doc_get_array: empty document\n"); + return NULL; + } + + xmlarray = stp_xml_get_node(cur, "gutenprint", "array", NULL); + + if (xmlarray) + array = stp_array_create_from_xmltree(xmlarray); + + return array; +} + +stp_array_t * +stp_array_create_from_file(const char* file) +{ + stp_array_t *array = NULL; + stp_mxml_node_t *doc; + FILE *fp = NULL; + if (file[0] != '/' && strncmp(file, "./", 2) && strncmp(file, "../", 3)) + { + char *fn = stp_path_find_file(NULL, file); + if (fn) + { + fp = fopen(file, "r"); + free(fn); + } + } + else if (file) + { + fp = fopen(file, "r"); + } + if (!fp) + { + stp_deprintf(STP_DBG_ARRAY_ERRORS, + "stp_array_create_from_file: unable to open %s: %s\n", + file, strerror(errno)); + return NULL; + } + stp_deprintf(STP_DBG_XML, "stp_array_create_from_file: reading `%s'...\n", + file); + + stp_xml_init(); + + doc = stp_mxmlLoadFile(NULL, fp, STP_MXML_NO_CALLBACK); + + array = xml_doc_get_array(doc); + + if (doc) + stp_mxmlDelete(doc); + + stp_xml_exit(); + (void) fclose(fp); + return array; + +} + stp_array_t * stp_array_create_from_xmltree(stp_mxml_node_t *array) /* The array node */ { @@ -179,6 +257,9 @@ stp_array_create_from_xmltree(stp_mxml_node_t *array) /* The array node */ stp_sequence_t *seq = NULL; stp_array_t *ret = NULL; + /* FIXME Need protection against unlimited recursion */ + if ((stmp = stp_mxmlElementGetAttr(array, "src")) != NULL) + return stp_array_create_from_file(stmp); stmp = stp_mxmlElementGetAttr(array, "x-size"); if (stmp) { @@ -203,7 +284,7 @@ stp_array_create_from_xmltree(stp_mxml_node_t *array) /* The array node */ /* Get the sequence data */ - child = stp_mxmlFindElement(array, array, "sequence", NULL, NULL, STP_MXML_DESCEND); + child = stp_xml_get_node(array, "sequence", NULL); if (child) seq = stp_sequence_create_from_xmltree(child); @@ -269,3 +350,144 @@ stp_xmltree_create_from_array(const stp_array_t *array) /* The array */ return arraynode; } + +static stp_mxml_node_t * +xmldoc_create_from_array(const stp_array_t *array) +{ + stp_mxml_node_t *xmldoc; + stp_mxml_node_t *rootnode; + stp_mxml_node_t *arraynode; + + /* Get array details */ + arraynode = stp_xmltree_create_from_array(array); + if (arraynode == NULL) + { + stp_deprintf(STP_DBG_ARRAY_ERRORS, + "xmldoc_create_from_array: error creating array node\n"); + return NULL; + } + /* Create the XML tree */ + xmldoc = stp_xmldoc_create_generic(); + if (xmldoc == NULL) + { + stp_deprintf(STP_DBG_ARRAY_ERRORS, + "xmldoc_create_from_array: error creating XML document\n"); + return NULL; + } + rootnode = xmldoc->child; + if (rootnode == NULL) + { + stp_mxmlDelete(xmldoc); + stp_deprintf(STP_DBG_ARRAY_ERRORS, + "xmldoc_create_from_array: error getting XML document root node\n"); + return NULL; + } + + stp_mxmlAdd(rootnode, STP_MXML_ADD_AFTER, NULL, arraynode); + + return xmldoc; +} + +static int +array_whitespace_callback(stp_mxml_node_t *node, int where) +{ + if (node->type != STP_MXML_ELEMENT) + return 0; + if (strcasecmp(node->value.element.name, "gutenprint") == 0) + { + switch (where) + { + case STP_MXML_WS_AFTER_OPEN: + case STP_MXML_WS_BEFORE_CLOSE: + case STP_MXML_WS_AFTER_CLOSE: + return '\n'; + case STP_MXML_WS_BEFORE_OPEN: + default: + return 0; + } + } + else if (strcasecmp(node->value.element.name, "array") == 0) + { + switch (where) + { + case STP_MXML_WS_AFTER_OPEN: + return '\n'; + case STP_MXML_WS_BEFORE_CLOSE: + case STP_MXML_WS_AFTER_CLOSE: + case STP_MXML_WS_BEFORE_OPEN: + default: + return 0; + } + } + else if (strcasecmp(node->value.element.name, "sequence") == 0) + { + const char *count; + switch (where) + { + case STP_MXML_WS_BEFORE_CLOSE: + count = stp_mxmlElementGetAttr(node, "count"); + if (strcmp(count, "0") == 0) + return 0; + else + return '\n'; + case STP_MXML_WS_AFTER_OPEN: + case STP_MXML_WS_AFTER_CLOSE: + return '\n'; + case STP_MXML_WS_BEFORE_OPEN: + default: + return 0; + } + } + else + return 0; +} + + +int +stp_array_write(FILE *file, const stp_array_t *array) /* The array */ +{ + stp_mxml_node_t *xmldoc = NULL; + + stp_xml_init(); + + xmldoc = xmldoc_create_from_array(array); + if (xmldoc == NULL) + { + stp_xml_exit(); + return 1; + } + + stp_mxmlSaveFile(xmldoc, file, array_whitespace_callback); + + if (xmldoc) + stp_mxmlDelete(xmldoc); + + stp_xml_exit(); + + return 0; +} + +char * +stp_array_write_string(const stp_array_t *array) /* The array */ +{ + stp_mxml_node_t *xmldoc = NULL; + char *retval; + + stp_xml_init(); + + xmldoc = xmldoc_create_from_array(array); + if (xmldoc == NULL) + { + stp_xml_exit(); + return NULL; + } + + retval = stp_mxmlSaveAllocString(xmldoc, array_whitespace_callback); + + if (xmldoc) + stp_mxmlDelete(xmldoc); + + stp_xml_exit(); + + return retval; +} diff --git a/src/main/bit-ops.c b/src/main/bit-ops.c index 965a481..bfcdf0a 100644 --- a/src/main/bit-ops.c +++ b/src/main/bit-ops.c @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -35,6 +34,13 @@ #include <limits.h> #endif +#ifdef __GNUC__ +#define inline __inline__ +#define NOINLINE __attribute__ ((noinline)) +#else +$define NOINLINE +#endif + void stp_fold(const unsigned char *line, int single_length, @@ -477,7 +483,7 @@ stp_split_4(int length, } -static void +static void NOINLINE stpi_unpack_2_1(int length, const unsigned char *in, unsigned char **outs) @@ -532,7 +538,7 @@ stpi_unpack_2_1(int length, } } -static void +static void NOINLINE stpi_unpack_2_2(int length, const unsigned char *in, unsigned char **outs) @@ -558,7 +564,7 @@ stpi_unpack_2_2(int length, } } -static void +static void NOINLINE stpi_unpack_4_1(int length, const unsigned char *in, unsigned char **outs) @@ -617,7 +623,7 @@ stpi_unpack_4_1(int length, } } -static void +static void NOINLINE stpi_unpack_4_2(int length, const unsigned char *in, unsigned char **outs) @@ -677,7 +683,7 @@ stpi_unpack_4_2(int length, } } -static void +static void NOINLINE stpi_unpack_8_1(int length, const unsigned char *in, unsigned char **outs) @@ -750,7 +756,7 @@ stpi_unpack_8_1(int length, } } -static void +static void NOINLINE stpi_unpack_8_2(int length, const unsigned char *in, unsigned char **outs) @@ -837,7 +843,7 @@ stpi_unpack_8_2(int length, } } -static void +static void NOINLINE stpi_unpack_16_1(int length, const unsigned char *in, unsigned char **outs) @@ -908,7 +914,7 @@ stpi_unpack_16_1(int length, *outs[j]++ = temp[j]; } -static void +static void NOINLINE stpi_unpack_16_2(int length, const unsigned char *in, unsigned char **outs) @@ -1138,29 +1144,32 @@ stp_unpack_16(int length, stp_unpack(length, bits, 16, in, outs); } -static void +static void NOINLINE find_first_and_last(const unsigned char *line, int length, int *first, int *last) { - int i; int found_first = 0; - if (!first || !last) - return; - *first = 0; - *last = 0; - for (i = 0; i < length; i++) + int f = 0; + int l = 0; + for (f = 0; f < length; f++) { - if (line[i] == 0) - { - if (!found_first) - (*first)++; - } - else + if (line[f]) { - *last = i; found_first = 1; + break; } } + *first = f; + if (!found_first) + { + *last = 0; + return; + } + for (l = length - 1; l >= f; l--) + if (line[l]) + break; + ; + *last = l; } int @@ -1190,96 +1199,89 @@ stp_pack_tiff(stp_vars_t *v, int *first, int *last) { - const unsigned char *start; /* Start of compressed data */ - unsigned char repeat; /* Repeating char */ - int count; /* Count of compressed bytes */ - int tcount; /* Temporary count < 128 */ - register const unsigned char *xline = line; - register int xlength = length; - find_first_and_last(line, length, first, last); + unsigned char *comp_pti = comp_buf; + if (first && last) + find_first_and_last(line, length, first, last); /* * Compress using TIFF "packbits" run-length encoding... */ - (*comp_ptr) = comp_buf; - - while (xlength > 0) + while (length > 0) { + const unsigned char *start = line; /* Start of compressed data */ + unsigned char repeat; /* Repeating char */ + int count; /* Count of compressed bytes */ /* - * Get a run of non-repeated chars... + * Get a run of at least 3 non-repeated chars... */ - start = xline; - xline += 2; - xlength -= 2; + line += 2; + length -= 2; - while (xlength > 0 && (xline[-2] != xline[-1] || xline[-1] != xline[0])) + while (length > 0 && (line[-2] != line[-1] || line[-1] != line[0])) { - xline ++; - xlength --; + line ++; + length --; } - xline -= 2; - xlength += 2; + line -= 2; + length += 2; /* * Output the non-repeated sequences (max 128 at a time). */ - count = xline - start; + count = line - start; while (count > 0) { - tcount = count > 128 ? 128 : count; + int tcount = count > 128 ? 128 : count; - (*comp_ptr)[0] = tcount - 1; - memcpy((*comp_ptr) + 1, start, tcount); + comp_pti[0] = tcount - 1; + memcpy(comp_pti + 1, start, tcount); - (*comp_ptr) += tcount + 1; + comp_pti += tcount + 1; start += tcount; count -= tcount; } - if (xlength <= 0) + if (length <= 0) break; /* * Find the repeated sequences... */ - start = xline; - repeat = xline[0]; + start = line; + repeat = line[0]; - xline ++; - xlength --; + line ++; + length --; - if (xlength > 0) + while (length > 0 && *line == repeat) { - int ylength = xlength; - while (ylength && *xline == repeat) - { - xline ++; - ylength --; - } - xlength = ylength; + line++; + length--; } /* * Output the repeated sequences (max 128 at a time). */ - count = xline - start; + count = line - start; while (count > 0) { - tcount = count > 128 ? 128 : count; + int tcount = count > 128 ? 128 : count; - (*comp_ptr)[0] = 1 - tcount; - (*comp_ptr)[1] = repeat; + comp_pti[0] = 1 - tcount; + comp_pti[1] = repeat; - (*comp_ptr) += 2; + comp_pti += 2; count -= tcount; } } + (*comp_ptr) = comp_pti; + if (first && last && *first > *last) return 0; else diff --git a/src/main/buffer-image.c b/src/main/buffer-image.c index d49f63f..1cd3c34 100644 --- a/src/main/buffer-image.c +++ b/src/main/buffer-image.c @@ -14,8 +14,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H diff --git a/src/main/canon-inks.h b/src/main/canon-inks.h index 26f5476..3d72640 100644 --- a/src/main/canon-inks.h +++ b/src/main/canon-inks.h @@ -17,8 +17,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* This file contains definitions for the various inks diff --git a/src/main/canon-media-mode.h b/src/main/canon-media-mode.h index 2e695b3..228167e 100644 --- a/src/main/canon-media-mode.h +++ b/src/main/canon-media-mode.h @@ -17,8 +17,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* This file contains the usage matrix matching media with modes @@ -106,9 +105,17 @@ DECLARE_MODEUSES(canon_BJC_30); /* ----------------------------------- Canon BJC 85 ----------------------------------- */ /* TODO: mode-media correlation */ static const char* canon_BJC_85_modeuses_plain[] = { - "720x360dpi", - "360x360dmt", - "360x360dpi", + "360x360dmt_high", + "360x360dmt", /* original */ + "360x360dpi_high" + "360x360dpi", /* original */ + "720x360dpi_high", + "720x360dpi", /* original */ + "720x360dpi_draft", + "360x360dpi_draft", + "180x180dpi_high", + "180x180dpi", + "180x180dpi_draft", NULL }; diff --git a/src/main/canon-media.h b/src/main/canon-media.h index c277cf0..37a324a 100644 --- a/src/main/canon-media.h +++ b/src/main/canon-media.h @@ -17,8 +17,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* This file contains the definitions for the possible Media Types @@ -139,6 +138,12 @@ static const canon_slot_t canon_BJC_S800_slots[] = { }; DECLARE_SLOTS(canon_BJC_S800); +static const canon_slot_t canon_BJC_85_slots[] = { + { "Auto", N_ ("Auto Sheet Feeder"), 0x4 }, + { "Manual", N_ ("Manual Feed"), 0x1 }, +}; +DECLARE_SLOTS(canon_BJC_85); + static const canon_slot_t canon_MULTIPASS_MX7600_slots[] = { { "Cassette", N_ ("Cassette"), 0x8 }, }; @@ -320,6 +325,23 @@ static const canon_paper_t canon_default_papers[] = { /* }; DECLARE_PAPERS(canon_default); +static const canon_paper_t canon_BJC_1000_papers[] = { + /* Name Text (c (l (P (w Density k_upper lum_adj */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,1.00, 1.00, 0.900, 0, 0, 0 }, + { "BackPrint", N_ ("Back Print Film"), 0x03,0x03,0x00,0x00,1.00, 1.00, 0.900, 0, 0, 0 }, + { "Fabric", N_ ("Fabric Sheets"), 0x04,0x05,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x00,0x08,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x0b,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x07,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x06,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "GlossyCard", N_ ("Glossy Photo Cards"), 0x05,0x0c,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x09,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "Other", N_ ("Other"), 0x01,0x09,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, +}; +DECLARE_PAPERS(canon_BJC_1000); + static const canon_paper_t canon_BJC_2100_papers[] = { /* Name Text (c (l (P (w Density k_upper lum_adj */ { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, diff --git a/src/main/canon-modes.h b/src/main/canon-modes.h index 0dfe07b..f88a051 100644 --- a/src/main/canon-modes.h +++ b/src/main/canon-modes.h @@ -17,8 +17,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* This file contains definitions for the various printmodes @@ -151,14 +150,40 @@ DECLARE_MODES(canon_BJC_30,0); static const canon_mode_t canon_BJC_85_modes[] = { - { 720, 360,CANON_INK_K | CANON_INK_CMYK | CANON_INK_CcMmYK, - "720x360dpi",N_("720x360 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 360, 360,CANON_INK_K | CANON_INK_CMYK | CANON_INK_CcMmYK, - "360x360dmt",N_("360x360 DPI DMT"),INKSET(6_C4M4Y4K4c4m4),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, - { 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,0); + // DMT is the highest quality mode in Windows driver - but only has quality 1 not 2 + { 360, 360,CANON_INK_K | CANON_INK_CMYK, + "360x360dmt_high",N_("360x360 DPI DMT HIGH"),INKSET(4_C4M4Y4K4),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* original*/ + // Quality level 1 in Windows driver (High) + { 360, 360,CANON_INK_K | CANON_INK_CMYK, + "360x360dmt",N_("360x360 DPI DMT"),INKSET(4_C4M4Y4K4),8,0,NULL,1.0,1.0,NULL,NULL,NULL,1}, + // Windows driver does not use quality level 2 + { 360, 360,CANON_INK_K | CANON_INK_CMYK, + "360x360dpi_high",N_("360x360 DPI HIGH"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* original */ + // Quality level 2 in Windows driver + { 360, 360,CANON_INK_K | CANON_INK_CMYK, + "360x360dpi",N_("360x360 DPI"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,1}, + // Windows driver does not use quality level 2 + { 720, 360,CANON_INK_K | CANON_INK_CMYK, + "720x360dpi_high",N_("720x360 DPI HIGH"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* original */ + // Windows driver does not use quality level 1 + { 720, 360,CANON_INK_K | CANON_INK_CMYK, + "720x360dpi",N_("720x360 DPI"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,1}, + // Quality level 3 in Windows driver + { 720, 360,CANON_INK_K | CANON_INK_CMYK, + "720x360dpi_draft",N_("720x360 DPI DRAFT"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,0}, + // Quality level 4 in Windows driver + { 360, 360,CANON_INK_K | CANON_INK_CMYK, + "360x360dpi_draft",N_("360x360 DPI DRAFT"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,0}, + // Quality level 5 in Windows driver + { 180, 180,CANON_INK_K | CANON_INK_CMYK, + "180x180dpi_high",N_("180x180 DPI HIGH"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, + // Test low res modes with qualities 1 and 0 + { 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,1}, + { 180, 180,CANON_INK_K | CANON_INK_CMYK, + "180x180dpi_draft",N_("180x180 DPI DRAFT"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,0}, +}; +DECLARE_MODES(canon_BJC_85,4); // <= final selection after testing: 720x360 Qlty 2 mode /* we treat the printers that can either print in K or CMY as CMYK printers here by assigning a CMYK inkset */ diff --git a/src/main/canon-printers.h b/src/main/canon-printers.h index 6345443..3658a38 100644 --- a/src/main/canon-printers.h +++ b/src/main/canon-printers.h @@ -17,8 +17,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* This file contains the capabilities of the various canon printers @@ -596,6 +595,23 @@ static const canon_cap_t canon_model_capabilities[] = NULL, NULL }, + { /* Canon BJC S9000 */ + "S9000", 3, + INCH(13), INCH(23), /* from product specs online: H: 13", V: 19" (leave at 23") */ + 10, 10, 9, 15, /* confirmed */ + &canon_MULTIPASS_MP150_slotlist, + CANON_CAP_STD0|CANON_CAP_I|CANON_CAP_px|CANON_CAP_rr,0, + 2,0, + 0, /* Upper/Lower Cassette option */ + control_cmd_PIXMA_iP2700, + &canon_BJC_S900_modelist, + &canon_BJC_S800_paperlist, + &canon_BJC_S900_modeuselist, + NULL, + NULL, + NULL, + NULL + }, { /* Canon BJ 30 *//* heads: BC-10 */ "30", 1, INCH(19/2), INCH(14), @@ -617,13 +633,13 @@ static const canon_cap_t canon_model_capabilities[] = "85", 1, INCH(19/2), INCH(23), /* from MacOSX driver */ 10, 10, 9, 20, /* confirmed */ - &canon_default_slotlist, + &canon_BJC_85_slotlist, CANON_CAP_STD0 | CANON_CAP_a,0, 2,0, 0, /* Upper/Lower Cassette option */ NULL, &canon_BJC_85_modelist, - &canon_default_paperlist, + &canon_BJC_1000_paperlist, &canon_BJC_85_modeuselist, NULL, NULL, @@ -638,7 +654,7 @@ static const canon_cap_t canon_model_capabilities[] = 10, 10, 9, 20, /* for A4 from user manual */ &canon_default_slotlist, CANON_CAP_STD0 | CANON_CAP_a | CANON_CAP_cart,0, - 3,0, + 2,0, 0, /* Upper/Lower Cassette option */ NULL,/* only SetTime */ &canon_BJC_2100_modelist, @@ -842,7 +858,7 @@ static const canon_cap_t canon_model_capabilities[] = 0, /* Upper/Lower Cassette option */ NULL, &canon_BJC_240_modelist, - &canon_default_paperlist, + &canon_BJC_1000_paperlist, &canon_BJC_240_modeuselist, NULL, NULL, diff --git a/src/main/channel.c b/src/main/channel.c index f65a94a..6cd4ca9 100644 --- a/src/main/channel.c +++ b/src/main/channel.c @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Revision History: * @@ -37,6 +36,10 @@ #ifdef __GNUC__ #define inline __inline__ +// No reason to inline functions outside of the inner loop. +#define NOINLINE __attribute__ ((noinline)) +#else +$define NOINLINE #endif #define FMAX(a, b) ((a) > (b) ? (a) : (b)) @@ -63,15 +66,6 @@ typedef struct typedef struct { - unsigned channel_count; - unsigned total_channels; - unsigned input_channels; - unsigned gcr_channels; - unsigned aux_output_channels; - size_t width; - int initialized; - unsigned ink_limit; - unsigned max_density; stpi_channel_t *c; stp_curve_t *gcr_curve; unsigned curve_count; @@ -84,12 +78,23 @@ typedef struct unsigned short *alloc_data_1; unsigned short *alloc_data_2; unsigned short *alloc_data_3; - int black_channel; - int gloss_channel; - int gloss_physical_channel; + unsigned char *output_data_8bit; + size_t width; double cyan_balance; double magenta_balance; double yellow_balance; + unsigned channel_count; + unsigned total_channels; + unsigned input_channels; + unsigned gcr_channels; + unsigned aux_output_channels; + unsigned ink_limit; + unsigned max_density; + int black_channel; + int gloss_channel; + int gloss_physical_channel; + int initialized; + int valid_8bit; } stpi_channel_group_t; @@ -141,6 +146,7 @@ stpi_channel_clear(void *vc) cg->total_channels = 0; cg->input_channels = 0; cg->initialized = 0; + cg->valid_8bit = 0; } void @@ -385,7 +391,7 @@ stp_channel_get_gcr_curve(stp_vars_t *v) stpi_channel_group_t *cg = get_channel_group(v); if (!cg) return NULL; - stp_dprintf(STP_DBG_INK, v, "set_gcr_curve\n"); + stp_dprintf(STP_DBG_INK, v, "get_gcr_curve\n"); return cg->gcr_curve; } @@ -422,34 +428,26 @@ stp_channel_get_curve(stp_vars_t *v, int color) } static int -input_has_special_channels(const stp_vars_t *v) +input_has_special_channels(const stpi_channel_group_t *cg) { - const stpi_channel_group_t *cg = - ((const stpi_channel_group_t *) stp_get_component_data(v, "Channel")); return (cg->curve_count > 0); } static int -output_needs_gcr(const stp_vars_t *v) +output_needs_gcr(const stpi_channel_group_t *cg) { - const stpi_channel_group_t *cg = - ((const stpi_channel_group_t *) stp_get_component_data(v, "Channel")); return (cg->gcr_curve && cg->black_channel == 0); } static int -output_has_gloss(const stp_vars_t *v) +output_has_gloss(const stpi_channel_group_t *cg) { - const stpi_channel_group_t *cg = - ((const stpi_channel_group_t *) stp_get_component_data(v, "Channel")); return (cg->gloss_channel >= 0); } static int -input_needs_splitting(const stp_vars_t *v) +input_needs_splitting(const stpi_channel_group_t *cg) { - const stpi_channel_group_t *cg = - ((const stpi_channel_group_t *) stp_get_component_data(v, "Channel")); #if 0 return cg->total_channels != cg->aux_output_channels; #else @@ -465,6 +463,51 @@ input_needs_splitting(const stp_vars_t *v) #endif } +static void +stp_dump_channels(const stp_vars_t *v) +{ + stpi_channel_group_t *cg = get_channel_group(v); + int i, j; + stp_dprintf(STP_DBG_INK, v, " channel_count %d\n", cg->channel_count); + stp_dprintf(STP_DBG_INK, v, " total_channels %d\n", cg->total_channels); + stp_dprintf(STP_DBG_INK, v, " input_channels %d\n", cg->input_channels); + stp_dprintf(STP_DBG_INK, v, " aux_channels %d\n", cg->aux_output_channels); + stp_dprintf(STP_DBG_INK, v, " gcr_channels %d\n", cg->gcr_channels); + stp_dprintf(STP_DBG_INK, v, " width %ld\n", (long)cg->width); + stp_dprintf(STP_DBG_INK, v, " ink_limit %d\n", cg->ink_limit); + stp_dprintf(STP_DBG_INK, v, " gloss_limit %d\n", cg->gloss_limit); + stp_dprintf(STP_DBG_INK, v, " max_density %d\n", cg->max_density); + stp_dprintf(STP_DBG_INK, v, " curve_count %d\n", cg->curve_count); + stp_dprintf(STP_DBG_INK, v, " black_channel %d\n", cg->black_channel); + stp_dprintf(STP_DBG_INK, v, " gloss_channel %d\n", cg->gloss_channel); + stp_dprintf(STP_DBG_INK, v, " gloss_physical %d\n", cg->gloss_physical_channel); + stp_dprintf(STP_DBG_INK, v, " cyan %.3f\n", cg->cyan_balance); + stp_dprintf(STP_DBG_INK, v, " magenta %.3f\n", cg->magenta_balance); + stp_dprintf(STP_DBG_INK, v, " yellow %.3f\n", cg->yellow_balance); + stp_dprintf(STP_DBG_INK, v, " input_data %p\n", (void *) cg->input_data); + stp_dprintf(STP_DBG_INK, v, " multi_tmp %p\n", (void *) cg->multi_tmp); + stp_dprintf(STP_DBG_INK, v, " split_input %p\n", (void *) cg->split_input); + stp_dprintf(STP_DBG_INK, v, " output_data %p\n", (void *) cg->output_data); + stp_dprintf(STP_DBG_INK, v, " gcr_data %p\n", (void *) cg->gcr_data); + stp_dprintf(STP_DBG_INK, v, " alloc_data_1 %p\n", (void *) cg->alloc_data_1); + stp_dprintf(STP_DBG_INK, v, " alloc_data_2 %p\n", (void *) cg->alloc_data_2); + stp_dprintf(STP_DBG_INK, v, " alloc_data_3 %p\n", (void *) cg->alloc_data_3); + stp_dprintf(STP_DBG_INK, v, " gcr_curve %p\n", (void *) cg->gcr_curve); + for (i = 0; i < cg->channel_count; i++) + { + stp_dprintf(STP_DBG_INK, v, " Channel %d:\n", i); + for (j = 0; j < cg->c[i].subchannel_count; j++) + { + stpi_subchannel_t *sch = &(cg->c[i].sc[j]); + stp_dprintf(STP_DBG_INK, v, " Subchannel %d:\n", j); + stp_dprintf(STP_DBG_INK, v, " value %.3f:\n", sch->value); + stp_dprintf(STP_DBG_INK, v, " lower %.3f:\n", sch->lower); + stp_dprintf(STP_DBG_INK, v, " upper %.3f:\n", sch->upper); + stp_dprintf(STP_DBG_INK, v, " cutoff %.3f:\n", sch->cutoff); + stp_dprintf(STP_DBG_INK, v, " density %d:\n", sch->s_density); + } + } +} void stp_channel_initialize(stp_vars_t *v, stp_image_t *image, @@ -568,7 +611,7 @@ stp_channel_initialize(stp_vars_t *v, stp_image_t *image, if (curve_count == 0) { cg->gcr_channels = cg->input_channels; - if (input_needs_splitting(v)) + if (input_needs_splitting(cg)) { cg->alloc_data_2 = stp_malloc(sizeof(unsigned short) * cg->input_channels * width); @@ -596,7 +639,7 @@ stp_channel_initialize(stp_vars_t *v, stp_image_t *image, cg->alloc_data_2 = stp_malloc(sizeof(unsigned short) * cg->input_channels * width); cg->input_data = cg->alloc_data_2; - if (input_needs_splitting(v)) + if (input_needs_splitting(cg)) { cg->alloc_data_3 = stp_malloc(sizeof(unsigned short) * cg->aux_output_channels * width); @@ -616,57 +659,11 @@ stp_channel_initialize(stp_vars_t *v, stp_image_t *image, cg->magenta_balance = stp_get_float_parameter(v, "MagentaBalance"); cg->yellow_balance = stp_get_float_parameter(v, "YellowBalance"); stp_dprintf(STP_DBG_INK, v, "stp_channel_initialize:\n"); - stp_dprintf(STP_DBG_INK, v, " channel_count %d\n", cg->channel_count); - stp_dprintf(STP_DBG_INK, v, " total_channels %d\n", cg->total_channels); - stp_dprintf(STP_DBG_INK, v, " input_channels %d\n", cg->input_channels); - stp_dprintf(STP_DBG_INK, v, " aux_channels %d\n", cg->aux_output_channels); - stp_dprintf(STP_DBG_INK, v, " gcr_channels %d\n", cg->gcr_channels); - stp_dprintf(STP_DBG_INK, v, " width %ld\n", (long)cg->width); - stp_dprintf(STP_DBG_INK, v, " ink_limit %d\n", cg->ink_limit); - stp_dprintf(STP_DBG_INK, v, " gloss_limit %d\n", cg->gloss_limit); - stp_dprintf(STP_DBG_INK, v, " max_density %d\n", cg->max_density); - stp_dprintf(STP_DBG_INK, v, " curve_count %d\n", cg->curve_count); - stp_dprintf(STP_DBG_INK, v, " black_channel %d\n", cg->black_channel); - stp_dprintf(STP_DBG_INK, v, " gloss_channel %d\n", cg->gloss_channel); - stp_dprintf(STP_DBG_INK, v, " gloss_physical %d\n", cg->gloss_physical_channel); - stp_dprintf(STP_DBG_INK, v, " cyan %.3f\n", cg->cyan_balance); - stp_dprintf(STP_DBG_INK, v, " magenta %.3f\n", cg->magenta_balance); - stp_dprintf(STP_DBG_INK, v, " yellow %.3f\n", cg->yellow_balance); - stp_dprintf(STP_DBG_INK, v, " input_data %p\n", - (void *) cg->input_data); - stp_dprintf(STP_DBG_INK, v, " multi_tmp %p\n", - (void *) cg->multi_tmp); - stp_dprintf(STP_DBG_INK, v, " split_input %p\n", - (void *) cg->split_input); - stp_dprintf(STP_DBG_INK, v, " output_data %p\n", - (void *) cg->output_data); - stp_dprintf(STP_DBG_INK, v, " gcr_data %p\n", - (void *) cg->gcr_data); - stp_dprintf(STP_DBG_INK, v, " alloc_data_1 %p\n", - (void *) cg->alloc_data_1); - stp_dprintf(STP_DBG_INK, v, " alloc_data_2 %p\n", - (void *) cg->alloc_data_2); - stp_dprintf(STP_DBG_INK, v, " alloc_data_3 %p\n", - (void *) cg->alloc_data_3); - stp_dprintf(STP_DBG_INK, v, " gcr_curve %p\n", - (void *) cg->gcr_curve); - for (i = 0; i < cg->channel_count; i++) - { - stp_dprintf(STP_DBG_INK, v, " Channel %d:\n", i); - for (j = 0; j < cg->c[i].subchannel_count; j++) - { - stpi_subchannel_t *sch = &(cg->c[i].sc[j]); - stp_dprintf(STP_DBG_INK, v, " Subchannel %d:\n", j); - stp_dprintf(STP_DBG_INK, v, " value %.3f:\n", sch->value); - stp_dprintf(STP_DBG_INK, v, " lower %.3f:\n", sch->lower); - stp_dprintf(STP_DBG_INK, v, " upper %.3f:\n", sch->upper); - stp_dprintf(STP_DBG_INK, v, " cutoff %.3f:\n", sch->cutoff); - stp_dprintf(STP_DBG_INK, v, " density %d:\n", sch->s_density); - } - } + if (stp_get_debug_level() & STP_DBG_INK) + stp_dump_channels(v); } -static void +static void NOINLINE clear_channel(unsigned short *data, unsigned width, unsigned depth) { int i; @@ -675,7 +672,7 @@ clear_channel(unsigned short *data, unsigned width, unsigned depth) data[i] = 0; } -static int +static int NOINLINE scale_channel(unsigned short *data, unsigned width, unsigned depth, unsigned short density) { @@ -706,7 +703,7 @@ scale_channel(unsigned short *data, unsigned width, unsigned depth, return retval; } -static int +static int NOINLINE scan_channel(unsigned short *data, unsigned width, unsigned depth) { int i; @@ -729,15 +726,15 @@ ink_sum(const unsigned short *data, int total_channels) return total_ink; } -static int -limit_ink(const stp_vars_t *v) +static int NOINLINE +limit_ink(stpi_channel_group_t *cg) { int i; int retval = 0; - stpi_channel_group_t *cg = get_channel_group(v); unsigned short *ptr; if (!cg || cg->ink_limit == 0 || cg->ink_limit >= cg->max_density) return 0; + cg->valid_8bit = 0; ptr = cg->output_data; for (i = 0; i < cg->width; i++) { @@ -784,10 +781,9 @@ short_copy(unsigned short *out, const unsigned short *in, size_t count) #endif } -static void -copy_channels(const stp_vars_t *v) +static void NOINLINE +copy_channels(stpi_channel_group_t *cg) { - stpi_channel_group_t *cg = get_channel_group(v); int i, j, k; const unsigned short *input; unsigned short *output; @@ -841,10 +837,9 @@ interpolate_value(const double *vec, double val) return lval; } -static void -generate_special_channels(const stp_vars_t *v) +static void NOINLINE +generate_special_channels(stpi_channel_group_t *cg) { - stpi_channel_group_t *cg = get_channel_group(v); int i, j; const unsigned short *input_cache = NULL; const unsigned short *output_cache = NULL; @@ -854,6 +849,7 @@ generate_special_channels(const stp_vars_t *v) int outbytes; if (!cg) return; + cg->valid_8bit = 0; input = cg->input_data; output = cg->multi_tmp; offset = (cg->black_channel >= 0 ? 0 : -1); @@ -916,10 +912,9 @@ generate_special_channels(const stp_vars_t *v) } } -static void -split_channels(const stp_vars_t *v, unsigned *zero_mask) +static void NOINLINE +split_channels(stpi_channel_group_t *cg, unsigned *zero_mask) { - stpi_channel_group_t *cg = get_channel_group(v); int i, j, k; int nz[STP_CHANNEL_LIMIT]; int outbytes; @@ -929,6 +924,7 @@ split_channels(const stp_vars_t *v, unsigned *zero_mask) unsigned short *output; if (!cg) return; + cg->valid_8bit = 0; outbytes = cg->total_channels * sizeof(unsigned short); input = cg->split_input; output = cg->output_data; @@ -1016,14 +1012,15 @@ split_channels(const stp_vars_t *v, unsigned *zero_mask) } } -static void -scale_channels(const stp_vars_t *v, unsigned *zero_mask) +static void NOINLINE +scale_channels(stpi_channel_group_t *cg, unsigned *zero_mask, + int zero_mask_valid) { - stpi_channel_group_t *cg = get_channel_group(v); int i, j; int physical_channel = 0; if (!cg) return; + cg->valid_8bit = 0; if (zero_mask) *zero_mask = 0; for (i = 0; i < cg->channel_count; i++) @@ -1050,7 +1047,7 @@ scale_channels(const stp_vars_t *v, unsigned *zero_mask) if (zero_mask) *zero_mask |= 1 << physical_channel; } - else if (zero_mask) + else if (zero_mask && ! zero_mask_valid) { if (scan_channel(output, cg->width, cg->total_channels)==0) *zero_mask |= 1 << physical_channel; @@ -1061,15 +1058,15 @@ scale_channels(const stp_vars_t *v, unsigned *zero_mask) } } -static void -generate_gloss(const stp_vars_t *v, unsigned *zero_mask) +static void NOINLINE +generate_gloss(stpi_channel_group_t *cg, unsigned *zero_mask) { - stpi_channel_group_t *cg = get_channel_group(v); unsigned short *output; unsigned gloss_mask; int i, j, k; if (!cg || cg->gloss_channel == -1 || cg->gloss_limit <= 0) return; + cg->valid_8bit = 0; output = cg->output_data; gloss_mask = ~(1 << cg->gloss_physical_channel); for (i = 0; i < cg->width; i++) @@ -1105,17 +1102,22 @@ generate_gloss(const stp_vars_t *v, unsigned *zero_mask) } } -static void -do_gcr(const stp_vars_t *v) +static void NOINLINE +do_gcr(stpi_channel_group_t *cg, unsigned *zero_mask) { - stpi_channel_group_t *cg = get_channel_group(v); const unsigned short *gcr_lookup; unsigned short *output; size_t count; int i; + union { + unsigned short nz[4]; + unsigned long long nzl; + } nzx; + nzx.nzl = 0ull; if (!cg) return; + cg->valid_8bit = 0; output = cg->gcr_data; stp_curve_resample(cg->gcr_curve, 65536); @@ -1134,26 +1136,40 @@ do_gcr(const stp_vars_t *v) output[1] += ck * cg->cyan_balance; output[2] += ck * cg->magenta_balance; output[3] += ck * cg->yellow_balance; + nzx.nzl |= *(unsigned long long *) output; } output += cg->gcr_channels; } + *zero_mask = 0; + for (i = 0; i < 4; i++) + if (nzx.nz[i] == 0) + *zero_mask |= (1 << i); } void stp_channel_convert(const stp_vars_t *v, unsigned *zero_mask) { - if (input_has_special_channels(v)) - generate_special_channels(v); - else if (output_has_gloss(v) && !input_needs_splitting(v)) - copy_channels(v); - if (output_needs_gcr(v)) - do_gcr(v); - if (input_needs_splitting(v)) - split_channels(v, zero_mask); + int zero_mask_valid = 1; + stpi_channel_group_t *cg = + ((stpi_channel_group_t *) stp_get_component_data(v, "Channel")); + if (input_has_special_channels(cg)) + { + generate_special_channels(cg); + zero_mask_valid = 0; + } + else if (output_has_gloss(cg) && !input_needs_splitting(cg)) + { + copy_channels(cg); + zero_mask_valid = 0; + } + if (output_needs_gcr(cg)) + do_gcr(cg, zero_mask); + if (input_needs_splitting(cg)) + split_channels(cg, zero_mask); else - scale_channels(v, zero_mask); - (void) limit_ink(v); - (void) generate_gloss(v, zero_mask); + scale_channels(cg, zero_mask, zero_mask_valid); + (void) limit_ink(cg); + (void) generate_gloss(cg, zero_mask); } unsigned short * @@ -1173,3 +1189,23 @@ stp_channel_get_output(const stp_vars_t *v) return NULL; return cg->output_data; } + +unsigned char * +stp_channel_get_output_8bit(const stp_vars_t *v) +{ + stpi_channel_group_t *cg = get_channel_group(v); + if (!cg) + return NULL; + if (cg->valid_8bit) + return cg->output_data_8bit; + if (! cg->output_data_8bit) + cg->output_data_8bit = stp_malloc(sizeof(unsigned char) * + cg->total_channels * cg->width); + int i; + (void) memset(cg->output_data_8bit, 0, sizeof(unsigned char) * + cg->total_channels * cg->width); + for (i = 0; i < cg->width * cg->total_channels; i++) + cg->output_data_8bit[i] = cg->output_data[i] / (unsigned short) 257; + cg->valid_8bit = 1; + return cg->output_data_8bit; +} diff --git a/src/main/color-conversion.h b/src/main/color-conversion.h index 5d60cdc..ea29211 100644 --- a/src/main/color-conversion.h +++ b/src/main/color-conversion.h @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifndef GUTENPRINT_INTERNAL_COLOR_CONVERSION_H diff --git a/src/main/color-conversions.c b/src/main/color-conversions.c index e2a15e9..e5a31a8 100644 --- a/src/main/color-conversions.c +++ b/src/main/color-conversions.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -41,8 +40,17 @@ #ifdef __GNUC__ #define inline __inline__ +// There's no reason to inline the main loop with the dispatch +// functions only to fail inlining of calls from the inner loop. +// Also, inlining the main loop makes it hard to debug because we lose +// context of which print function is called. +#define NOINLINE __attribute__ ((noinline)) +#else +$define NOINLINE #endif +#define CFUNC static unsigned NOINLINE + /* * RGB to grayscale luminance constants... */ @@ -56,6 +64,8 @@ #define FMAX(a, b) ((a) > (b) ? (a) : (b)) #define FMIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAXB(bits) ((1 << (bits)) - 1) + static inline void calc_rgb_to_hsl(unsigned short *rgb, double *hue, double *sat, double *lightness) @@ -199,7 +209,7 @@ update_saturation(double sat, double adjust, double isat, int bright_colors) static inline double interpolate_value(const double *vec, double val) { - double base = floor(val); + double base = (double)((int)(val)); double frac = val - base; int ibase = (int) base; double lval = vec[ibase]; @@ -248,51 +258,48 @@ adjust_hsl(unsigned short *rgbout, lut_t *lut, double ssat, double isat, const double *hue_map = CURVE_CACHE_FAST_DOUBLE(&(lut->hue_map)); const double *lum_map = CURVE_CACHE_FAST_DOUBLE(&(lut->lum_map)); const double *sat_map = CURVE_CACHE_FAST_DOUBLE(&(lut->sat_map)); - if ((split_saturation || lum_map || hue_map || sat_map) && - (rgbout[0] != rgbout[1] || rgbout[0] != rgbout[2])) + size_t hue_count = CURVE_CACHE_FAST_COUNT(&(lut->hue_map)); + size_t lum_count = CURVE_CACHE_FAST_COUNT(&(lut->lum_map)); + size_t sat_count = CURVE_CACHE_FAST_COUNT(&(lut->sat_map)); + double h, s, l; + double oh; + rgbout[0] ^= 65535; + rgbout[1] ^= 65535; + rgbout[2] ^= 65535; + calc_rgb_to_hsl(rgbout, &h, &s, &l); + s = update_saturation(s, ssat, isat, 0); + if (!adjust_hue_only && lut->sat_map.d_cache) { - size_t hue_count = CURVE_CACHE_FAST_COUNT(&(lut->hue_map)); - size_t lum_count = CURVE_CACHE_FAST_COUNT(&(lut->lum_map)); - size_t sat_count = CURVE_CACHE_FAST_COUNT(&(lut->sat_map)); - double h, s, l; - double oh; - rgbout[0] ^= 65535; - rgbout[1] ^= 65535; - rgbout[2] ^= 65535; - calc_rgb_to_hsl(rgbout, &h, &s, &l); - s = update_saturation(s, ssat, isat, 0); - if (!adjust_hue_only && lut->sat_map.d_cache) - { - double nh = h * sat_count / 6.0; - double tmp = interpolate_value(sat_map, nh); - if (tmp < .9999 || tmp > 1.0001) - { - s = update_saturation(s, tmp, tmp > 1.0 ? 1.0 / tmp : 1.0, - bright_colors); - } - } - oh = h; - h = adjust_hue(hue_map, h, hue_count); - calc_hsl_to_rgb(rgbout, h, s, l); + double nh = h * sat_count / 6.0; + double tmp = interpolate_value(sat_map, nh); + if (tmp < .9999 || tmp > 1.0001) + s = update_saturation(s, tmp, tmp > 1.0 ? 1.0 / tmp : 1.0, + bright_colors); + } + oh = h; + h = adjust_hue(hue_map, h, hue_count); + calc_hsl_to_rgb(rgbout, h, s, l); - if (!adjust_hue_only && s > 0.00001) + if (!adjust_hue_only && s > 0.00001) + { + /* + * Perform luminosity adjustment only on color component. + * This way the luminosity of the gray component won't be affected. + * We'll add the gray back at the end. + */ + + unsigned gray = FMIN(rgbout[0], FMIN(rgbout[1], rgbout[2])); + int i; + /* + * Scale the components by the amount of color left. + * This way the luminosity calculations will come out right. + */ + if (gray > 0) + for (i = 0; i < 3; i++) + rgbout[i] = (rgbout[i] - gray) * 65535.0 / (65535 - gray); + + if (lut->lum_map.d_cache) { - /* - * Perform luminosity adjustment only on color component. - * This way the luminosity of the gray component won't be affected. - * We'll add the gray back at the end. - */ - - unsigned gray = FMIN(rgbout[0], FMIN(rgbout[1], rgbout[2])); - int i; - /* - * Scale the components by the amount of color left. - * This way the luminosity calculations will come out right. - */ - if (gray > 0) - for (i = 0; i < 3; i++) - rgbout[i] = (rgbout[i] - gray) * 65535.0 / (65535 - gray); - calc_rgb_to_hsl(rgbout, &h, &s, &l); if (lut->lum_map.d_cache && l > 0.00001 && l < .99999) { @@ -306,115 +313,21 @@ adjust_hsl(unsigned short *rgbout, lut_t *lut, double ssat, double isat, double g2 = 1.0 - pow(1.0 - l, oel); l = FMIN(g1, g2); } + calc_hsl_to_rgb(rgbout, h, s, l); } - calc_hsl_to_rgb(rgbout, h, s, l); - if (gray > 0) - for (i = 0; i < 3; i++) - rgbout[i] = gray + (rgbout[i] * (65535 - gray) / 65535.0); } - - rgbout[0] ^= 65535; - rgbout[1] ^= 65535; - rgbout[2] ^= 65535; + if (gray > 0) + for (i = 0; i < 3; i++) + rgbout[i] = gray + (rgbout[i] * (65535 - gray) / 65535.0); } -} -static inline void -lookup_rgb(lut_t *lut, unsigned short *rgbout, - const unsigned short *red, const unsigned short *green, - const unsigned short *blue, unsigned steps) -{ - if (steps == 65536) - { - rgbout[0] = red[rgbout[0]]; - rgbout[1] = green[rgbout[1]]; - rgbout[2] = blue[rgbout[2]]; - } - else - { - rgbout[0] = red[rgbout[0] / 257]; - rgbout[1] = green[rgbout[1] / 257]; - rgbout[2] = blue[rgbout[2] / 257]; - } -} - -static inline int -short_eq(const unsigned short *i1, const unsigned short *i2, size_t count) -{ -#if 1 - int i; - for (i = 0; i < count; i++) - if (i1[i] != i2[i]) - return 0; - return 1; -#else - return !memcmp(i1, i2, count * sizeof(unsigned short)); -#endif -} - -static inline void -short_copy(unsigned short *out, const unsigned short *in, size_t count) -{ -#if 1 - int i; - for (i = 0; i < count; i++) - out[i] = in[i]; -#else - (void) memcpy(out, in, count * sizeof(unsigned short)); -#endif -} - -static unsigned -raw_cmy_to_kcmy(const stp_vars_t *vars, const unsigned short *in, - unsigned short *out) -{ - lut_t *lut = (lut_t *)(stp_get_component_data(vars, "Color")); - int width = lut->image_width; - - int i; - int j; - unsigned short nz[4]; - unsigned retval = 0; - const unsigned short *input_cache = NULL; - const unsigned short *output_cache = NULL; - - memset(nz, 0, sizeof(nz)); - - for (i = 0; i < width; i++, out += 4, in += 3) - { - if (input_cache && short_eq(input_cache, in, 3)) - short_copy(out, output_cache, 4); - else - { - int c = in[0]; - int m = in[1]; - int y = in[2]; - int k = FMIN(c, FMIN(m, y)); - input_cache = in; - out[0] = 0; - for (j = 0; j < 3; j++) - out[j + 1] = in[j]; - if (k > 0) - { - out[0] = k; - out[1] -= k; - out[2] -= k; - out[3] -= k; - } - output_cache = out; - for (j = 0; j < 4; j++) - if (out[j]) - nz[j] = 1; - } - } - for (j = 0; j < 4; j++) - if (nz[j] == 0) - retval |= (1 << j); - return retval; + rgbout[0] ^= 65535; + rgbout[1] ^= 65535; + rgbout[2] ^= 65535; } #define GENERIC_COLOR_FUNC(fromname, toname) \ -static unsigned \ +CFUNC \ fromname##_to_##toname(const stp_vars_t *vars, const unsigned char *in, \ unsigned short *out) \ { \ @@ -435,203 +348,390 @@ fromname##_to_##toname(const stp_vars_t *vars, const unsigned char *in, \ return fromname##_16_to_##toname(vars, in, out); \ } -#define COLOR_TO_COLOR_FUNC(T, bits) \ -static unsigned \ -color_##bits##_to_color(const stp_vars_t *vars, const unsigned char *in, \ - unsigned short *out) \ -{ \ - int i; \ - double isat = 1.0; \ - double ssat = stp_get_float_parameter(vars, "Saturation"); \ - double sbright = stp_get_float_parameter(vars, "Brightness"); \ - int i0 = -1; \ - int i1 = -1; \ - int i2 = -1; \ - unsigned short o0 = 0; \ - unsigned short o1 = 0; \ - unsigned short o2 = 0; \ - unsigned short nz0 = 0; \ - unsigned short nz1 = 0; \ - unsigned short nz2 = 0; \ - const unsigned short *red; \ - const unsigned short *green; \ - const unsigned short *blue; \ - const unsigned short *brightness; \ - const unsigned short *contrast; \ - const T *s_in = (const T *) in; \ - lut_t *lut = (lut_t *)(stp_get_component_data(vars, "Color")); \ - int compute_saturation = ssat <= .99999 || ssat >= 1.00001; \ - int split_saturation = ssat > 1.4; \ - int bright_color_adjustment = 0; \ - int hue_only_color_adjustment = 0; \ - int do_user_adjustment = 0; \ - if (lut->color_correction->correction == COLOR_CORRECTION_BRIGHT) \ - bright_color_adjustment = 1; \ - if (lut->color_correction->correction == COLOR_CORRECTION_HUE) \ - hue_only_color_adjustment = 1; \ - if (sbright != 1) \ - do_user_adjustment = 1; \ - compute_saturation |= do_user_adjustment; \ - \ - for (i = CHANNEL_C; i <= CHANNEL_Y; i++) \ +#define BD(bits) (65535u / (unsigned) MAXB(bits)) + +#define COLOR_TO_COLOR_FUNC(T, bits) \ +CFUNC \ +color_##bits##_to_color(const stp_vars_t *vars, const unsigned char *in, \ + unsigned short *out) \ +{ \ + int i; \ + double isat = 1.0; \ + double ssat = stp_get_float_parameter(vars, "Saturation"); \ + double sbright = stp_get_float_parameter(vars, "Brightness"); \ + int i0 = -1; \ + int i1 = -1; \ + int i2 = -1; \ + unsigned short o0 = 0; \ + unsigned short o1 = 0; \ + unsigned short o2 = 0; \ + unsigned short nz0 = 0; \ + unsigned short nz1 = 0; \ + unsigned short nz2 = 0; \ + const unsigned short *red; \ + const unsigned short *green; \ + const unsigned short *blue; \ + const unsigned short *brightness; \ + const unsigned short *contrast; \ + const T *s_in = (const T *) in; \ + lut_t *lut = (lut_t *)(stp_get_component_data(vars, "Color")); \ + int compute_saturation = ssat <= .99999 || ssat >= 1.00001; \ + int split_saturation = ssat > 1.4; \ + int bright_color_adjustment = 0; \ + int hue_only_color_adjustment = 0; \ + int do_user_adjustment = 0; \ + if (lut->color_correction->correction == COLOR_CORRECTION_BRIGHT) \ + bright_color_adjustment = 1; \ + if (lut->color_correction->correction == COLOR_CORRECTION_HUE) \ + hue_only_color_adjustment = 1; \ + if (sbright != 1) \ + do_user_adjustment = 1; \ + compute_saturation |= do_user_adjustment; \ + \ + for (i = CHANNEL_C; i <= CHANNEL_Y; i++) \ stp_curve_resample(stp_curve_cache_get_curve(&(lut->channel_curves[i])), \ - 1 << bits); \ - stp_curve_resample \ - (stp_curve_cache_get_curve(&(lut->brightness_correction)), 65536); \ - stp_curve_resample \ - (stp_curve_cache_get_curve(&(lut->contrast_correction)), 1 << bits); \ - red = \ - stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_C])); \ - green = \ - stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_M])); \ - blue = \ - stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_Y])); \ - brightness= \ - stp_curve_cache_get_ushort_data(&(lut->brightness_correction)); \ - contrast = \ - stp_curve_cache_get_ushort_data(&(lut->contrast_correction)); \ - (void) stp_curve_cache_get_double_data(&(lut->hue_map)); \ - (void) stp_curve_cache_get_double_data(&(lut->lum_map)); \ - (void) stp_curve_cache_get_double_data(&(lut->sat_map)); \ - \ - if (split_saturation) \ - ssat = sqrt(ssat); \ - if (ssat > 1) \ - isat = 1.0 / ssat; \ - for (i = 0; i < lut->image_width; i++) \ - { \ - if (i0 == s_in[0] && i1 == s_in[1] && i2 == s_in[2]) \ - { \ - out[0] = o0; \ - out[1] = o1; \ - out[2] = o2; \ - } \ - else \ - { \ - i0 = s_in[0]; \ - i1 = s_in[1]; \ - i2 = s_in[2]; \ - out[0] = i0 * (65535u / (unsigned) ((1 << bits) - 1)); \ - out[1] = i1 * (65535u / (unsigned) ((1 << bits) - 1)); \ - out[2] = i2 * (65535u / (unsigned) ((1 << bits) - 1)); \ - lookup_rgb(lut, out, contrast, contrast, contrast, 1 << bits); \ - if ((compute_saturation)) \ - update_saturation_from_rgb(out, brightness, ssat, isat, \ - do_user_adjustment); \ - adjust_hsl(out, lut, ssat, isat, split_saturation, \ - hue_only_color_adjustment, bright_color_adjustment); \ - lookup_rgb(lut, out, red, green, blue, 1 << bits); \ - o0 = out[0]; \ - o1 = out[1]; \ - o2 = out[2]; \ - nz0 |= o0; \ - nz1 |= o1; \ - nz2 |= o2; \ - } \ - s_in += 3; \ - out += 3; \ - } \ - return (nz0 ? 0 : 1) + (nz1 ? 0 : 2) + (nz2 ? 0 : 4); \ + 1 << bits); \ + stp_curve_resample \ + (stp_curve_cache_get_curve(&(lut->brightness_correction)), 65536); \ + stp_curve_resample \ + (stp_curve_cache_get_curve(&(lut->contrast_correction)), 1 << bits); \ + red = \ + stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_C])); \ + green = \ + stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_M])); \ + blue = \ + stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_Y])); \ + brightness= \ + stp_curve_cache_get_ushort_data(&(lut->brightness_correction)); \ + contrast = \ + stp_curve_cache_get_ushort_data(&(lut->contrast_correction)); \ + (void) stp_curve_cache_get_double_data(&(lut->hue_map)); \ + (void) stp_curve_cache_get_double_data(&(lut->lum_map)); \ + (void) stp_curve_cache_get_double_data(&(lut->sat_map)); \ + const double *hue_map = CURVE_CACHE_FAST_DOUBLE(&(lut->hue_map)); \ + const double *lum_map = CURVE_CACHE_FAST_DOUBLE(&(lut->lum_map)); \ + const double *sat_map = CURVE_CACHE_FAST_DOUBLE(&(lut->sat_map)); \ + \ + if (split_saturation) \ + ssat = sqrt(ssat); \ + if (ssat > 1) \ + isat = 1.0 / ssat; \ + for (i = 0; i < lut->image_width; i++) \ + { \ + if (i0 == s_in[0] && i1 == s_in[1] && i2 == s_in[2]) \ + { \ + out[0] = o0; \ + out[1] = o1; \ + out[2] = o2; \ + } \ + else \ + { \ + i0 = s_in[0]; \ + i1 = s_in[1]; \ + i2 = s_in[2]; \ + out[0] = contrast[i0]; \ + out[1] = contrast[i1]; \ + out[2] = contrast[i2]; \ + if ((compute_saturation)) \ + update_saturation_from_rgb(out, brightness, ssat, isat, \ + do_user_adjustment); \ + if ((split_saturation || lum_map || hue_map || sat_map) && \ + (out[0] != out[1] || out[0] != out[2])) \ + adjust_hsl(out, lut, ssat, isat, split_saturation, \ + hue_only_color_adjustment, bright_color_adjustment); \ + out[0] = red[out[0] / BD(bits)]; \ + out[1] = green[out[1] / BD(bits)]; \ + out[2] = blue[out[2] / BD(bits)]; \ + o0 = out[0]; \ + o1 = out[1]; \ + o2 = out[2]; \ + nz0 |= o0; \ + nz1 |= o1; \ + nz2 |= o2; \ + } \ + s_in += 3; \ + out += 3; \ + } \ + return (nz0 ? 0 : 1) + (nz1 ? 0 : 2) + (nz2 ? 0 : 4); \ } -COLOR_TO_COLOR_FUNC(unsigned char, 8) -COLOR_TO_COLOR_FUNC(unsigned short, 16) +COLOR_TO_COLOR_FUNC(unsigned char, 8) // color_8_to_color +COLOR_TO_COLOR_FUNC(unsigned short, 16) // color_16_to_color GENERIC_COLOR_FUNC(color, color) +#define COLOR_TO_KCMY_FUNC(T, bits) \ +CFUNC \ +color_##bits##_to_kcmy(const stp_vars_t *vars, const unsigned char *in, \ + unsigned short *out) \ +{ \ + int i; \ + double isat = 1.0; \ + double ssat = stp_get_float_parameter(vars, "Saturation"); \ + double sbright = stp_get_float_parameter(vars, "Brightness"); \ + union { \ + unsigned short nz[4]; \ + unsigned long long nzl; \ + } nzx; \ + unsigned retval = 0; \ + const unsigned short *red; \ + const unsigned short *green; \ + const unsigned short *blue; \ + const unsigned short *brightness; \ + const unsigned short *contrast; \ + const T *s_in = (const T *) in; \ + lut_t *lut = (lut_t *)(stp_get_component_data(vars, "Color")); \ + int compute_saturation = ssat <= .99999 || ssat >= 1.00001; \ + int split_saturation = ssat > 1.4; \ + int bright_color_adjustment = 0; \ + int hue_only_color_adjustment = 0; \ + int do_user_adjustment = 0; \ + if (lut->color_correction->correction == COLOR_CORRECTION_BRIGHT) \ + bright_color_adjustment = 1; \ + if (lut->color_correction->correction == COLOR_CORRECTION_HUE) \ + hue_only_color_adjustment = 1; \ + if (sbright != 1) \ + do_user_adjustment = 1; \ + compute_saturation |= do_user_adjustment; \ + nzx.nzl = 0ull; \ + \ + for (i = CHANNEL_C; i <= CHANNEL_Y; i++) \ + stp_curve_resample(stp_curve_cache_get_curve(&(lut->channel_curves[i])), \ + 1 << bits); \ + stp_curve_resample \ + (stp_curve_cache_get_curve(&(lut->brightness_correction)), 65536); \ + stp_curve_resample \ + (stp_curve_cache_get_curve(&(lut->contrast_correction)), 1 << bits); \ + red = \ + stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_C])); \ + green = \ + stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_M])); \ + blue = \ + stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_Y])); \ + brightness= \ + stp_curve_cache_get_ushort_data(&(lut->brightness_correction)); \ + contrast = \ + stp_curve_cache_get_ushort_data(&(lut->contrast_correction)); \ + (void) stp_curve_cache_get_double_data(&(lut->hue_map)); \ + (void) stp_curve_cache_get_double_data(&(lut->lum_map)); \ + (void) stp_curve_cache_get_double_data(&(lut->sat_map)); \ + const double *hue_map = CURVE_CACHE_FAST_DOUBLE(&(lut->hue_map)); \ + const double *lum_map = CURVE_CACHE_FAST_DOUBLE(&(lut->lum_map)); \ + const double *sat_map = CURVE_CACHE_FAST_DOUBLE(&(lut->sat_map)); \ + \ + if (split_saturation) \ + ssat = sqrt(ssat); \ + if (ssat > 1) \ + isat = 1.0 / ssat; \ + for (i = 0; i < lut->image_width; i++, out += 4, s_in += 3) \ + { \ + out[1] = contrast[s_in[0]]; \ + out[2] = contrast[s_in[1]]; \ + out[3] = contrast[s_in[2]]; \ + if ((compute_saturation)) \ + update_saturation_from_rgb(out + 1, brightness, ssat, isat, \ + do_user_adjustment); \ + if ((split_saturation || lum_map || hue_map || sat_map) && \ + (out[1] != out[2] || out[1] != out[3])) \ + adjust_hsl(out + 1, lut, ssat, isat, split_saturation, \ + hue_only_color_adjustment, bright_color_adjustment); \ + out[1] = red[out[1] / BD(bits)]; \ + out[2] = green[out[2] / BD(bits)]; \ + out[3] = blue[out[3] / BD(bits)]; \ + out[0] = FMIN(out[1], FMIN(out[2], out[3])); \ + out[1] -= out[0]; \ + out[2] -= out[0]; \ + out[3] -= out[0]; \ + nzx.nzl |= *(unsigned long long *) out; \ + } \ + for (i = 0; i < 4; i++) \ + if (nzx.nz[i] == 0) \ + retval |= (1 << i); \ + return retval; \ +} + +COLOR_TO_KCMY_FUNC(unsigned char, 8) // color_8_to_kcmy +COLOR_TO_KCMY_FUNC(unsigned short, 16) // color_16_to_kcmy +GENERIC_COLOR_FUNC(color, kcmy) + /* * 'rgb_to_rgb()' - Convert rgb image data to RGB. */ -#define FAST_COLOR_TO_COLOR_FUNC(T, bits) \ -static unsigned \ +#define FAST_COLOR_TO_COLOR_FUNC(T, bits) \ +CFUNC \ color_##bits##_to_color_fast(const stp_vars_t *vars, const unsigned char *in, \ - unsigned short *out) \ -{ \ - int i; \ - int i0 = -1; \ - int i1 = -1; \ - int i2 = -1; \ - int o0 = 0; \ - int o1 = 0; \ - int o2 = 0; \ - int nz0 = 0; \ - int nz1 = 0; \ - int nz2 = 0; \ - const T *s_in = (const T *) in; \ - lut_t *lut = (lut_t *)(stp_get_component_data(vars, "Color")); \ - const unsigned short *red; \ - const unsigned short *green; \ - const unsigned short *blue; \ - const unsigned short *brightness; \ - const unsigned short *contrast; \ - double isat = 1.0; \ - double saturation = stp_get_float_parameter(vars, "Saturation"); \ - double sbright = stp_get_float_parameter(vars, "Brightness"); \ - int compute_saturation = saturation <= .99999 || saturation >= 1.00001; \ - int do_user_adjustment = 0; \ - if (sbright != 1) \ - do_user_adjustment = 1; \ - compute_saturation |= do_user_adjustment; \ - \ - for (i = CHANNEL_C; i <= CHANNEL_Y; i++) \ - stp_curve_resample(lut->channel_curves[i].curve, 65536); \ - stp_curve_resample \ - (stp_curve_cache_get_curve(&(lut->brightness_correction)), 65536); \ - stp_curve_resample \ - (stp_curve_cache_get_curve(&(lut->contrast_correction)), 1 << bits); \ - red = \ - stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_C])); \ - green = \ - stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_M])); \ - blue = \ - stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_Y])); \ - brightness= \ - stp_curve_cache_get_ushort_data(&(lut->brightness_correction)); \ - contrast = \ - stp_curve_cache_get_ushort_data(&(lut->contrast_correction)); \ - \ - if (saturation > 1) \ - isat = 1.0 / saturation; \ - for (i = 0; i < lut->image_width; i++) \ - { \ - if (i0 == s_in[0] && i1 == s_in[1] && i2 == s_in[2]) \ - { \ - out[0] = o0; \ - out[1] = o1; \ - out[2] = o2; \ - } \ - else \ - { \ - i0 = s_in[0]; \ - i1 = s_in[1]; \ - i2 = s_in[2]; \ - out[0] = contrast[s_in[0]]; \ - out[1] = contrast[s_in[1]]; \ - out[2] = contrast[s_in[2]]; \ - if ((compute_saturation)) \ + unsigned short *out) \ +{ \ + int i; \ + int i0 = -1; \ + int i1 = -1; \ + int i2 = -1; \ + int o0 = 0; \ + int o1 = 0; \ + int o2 = 0; \ + int nz0 = 0; \ + int nz1 = 0; \ + int nz2 = 0; \ + const T *s_in = (const T *) in; \ + lut_t *lut = (lut_t *)(stp_get_component_data(vars, "Color")); \ + const unsigned short *red; \ + const unsigned short *green; \ + const unsigned short *blue; \ + const unsigned short *brightness; \ + const unsigned short *contrast; \ + double isat = 1.0; \ + double saturation = stp_get_float_parameter(vars, "Saturation"); \ + double sbright = stp_get_float_parameter(vars, "Brightness"); \ + int compute_saturation = saturation <= .99999 || saturation >= 1.00001; \ + int do_user_adjustment = 0; \ + if (sbright != 1) \ + do_user_adjustment = 1; \ + compute_saturation |= do_user_adjustment; \ + \ + for (i = CHANNEL_C; i <= CHANNEL_Y; i++) \ + stp_curve_resample(lut->channel_curves[i].curve, 65536); \ + stp_curve_resample \ + (stp_curve_cache_get_curve(&(lut->brightness_correction)), 65536); \ + stp_curve_resample \ + (stp_curve_cache_get_curve(&(lut->contrast_correction)), 1 << bits); \ + red = \ + stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_C])); \ + green = \ + stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_M])); \ + blue = \ + stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_Y])); \ + brightness= \ + stp_curve_cache_get_ushort_data(&(lut->brightness_correction)); \ + contrast = \ + stp_curve_cache_get_ushort_data(&(lut->contrast_correction)); \ + \ + if (saturation > 1) \ + isat = 1.0 / saturation; \ + for (i = 0; i < lut->image_width; i++) \ + { \ + if (i0 == s_in[0] && i1 == s_in[1] && i2 == s_in[2]) \ + { \ + out[0] = o0; \ + out[1] = o1; \ + out[2] = o2; \ + } \ + else \ + { \ + i0 = s_in[0]; \ + i1 = s_in[1]; \ + i2 = s_in[2]; \ + out[0] = contrast[s_in[0]]; \ + out[1] = contrast[s_in[1]]; \ + out[2] = contrast[s_in[2]]; \ + if ((compute_saturation)) \ update_saturation_from_rgb(out, brightness, saturation, isat, 1); \ - out[0] = red[out[0]]; \ - out[1] = green[out[1]]; \ - out[2] = blue[out[2]]; \ - o0 = out[0]; \ - o1 = out[1]; \ - o2 = out[2]; \ - nz0 |= o0; \ - nz1 |= o1; \ - nz2 |= o2; \ - } \ - s_in += 3; \ - out += 3; \ - } \ - return (nz0 ? 0 : 1) + (nz1 ? 0 : 2) + (nz2 ? 0 : 4); \ + out[0] = red[out[0]]; \ + out[1] = green[out[1]]; \ + out[2] = blue[out[2]]; \ + o0 = out[0]; \ + o1 = out[1]; \ + o2 = out[2]; \ + nz0 |= o0; \ + nz1 |= o1; \ + nz2 |= o2; \ + } \ + s_in += 3; \ + out += 3; \ + } \ + return (nz0 ? 0 : 1) + (nz1 ? 0 : 2) + (nz2 ? 0 : 4); \ } -FAST_COLOR_TO_COLOR_FUNC(unsigned char, 8) -FAST_COLOR_TO_COLOR_FUNC(unsigned short, 16) +FAST_COLOR_TO_COLOR_FUNC(unsigned char, 8) // color_8_to_color_fast +FAST_COLOR_TO_COLOR_FUNC(unsigned short, 16) // color_16_to_color_fast GENERIC_COLOR_FUNC(color, color_fast) +#define FAST_COLOR_TO_KCMY_FUNC(T, bits) \ +CFUNC \ +color_##bits##_to_kcmy_fast(const stp_vars_t *vars, const unsigned char *in, \ + unsigned short *out) \ +{ \ + int i; \ + union { \ + unsigned short nz[4]; \ + unsigned long long nzl; \ + } nzx; \ + unsigned retval = 0; \ + unsigned short c, m, y, k; \ + const T *s_in = (const T *) in; \ + lut_t *lut = (lut_t *)(stp_get_component_data(vars, "Color")); \ + const unsigned short *red; \ + const unsigned short *green; \ + const unsigned short *blue; \ + const unsigned short *brightness; \ + const unsigned short *contrast; \ + double isat = 1.0; \ + double saturation = stp_get_float_parameter(vars, "Saturation"); \ + double sbright = stp_get_float_parameter(vars, "Brightness"); \ + int compute_saturation = saturation <= .99999 || saturation >= 1.00001; \ + int do_user_adjustment = 0; \ + if (sbright != 1) \ + do_user_adjustment = 1; \ + compute_saturation |= do_user_adjustment; \ + nzx.nzl = 0ull; \ + \ + for (i = CHANNEL_C; i <= CHANNEL_Y; i++) \ + stp_curve_resample(lut->channel_curves[i].curve, 65536); \ + stp_curve_resample \ + (stp_curve_cache_get_curve(&(lut->brightness_correction)), 65536); \ + stp_curve_resample \ + (stp_curve_cache_get_curve(&(lut->contrast_correction)), 1 << bits); \ + red = \ + stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_C])); \ + green = \ + stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_M])); \ + blue = \ + stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_Y])); \ + brightness= \ + stp_curve_cache_get_ushort_data(&(lut->brightness_correction)); \ + contrast = \ + stp_curve_cache_get_ushort_data(&(lut->contrast_correction)); \ + \ + if (saturation > 1) \ + isat = 1.0 / saturation; \ + for (i = 0; i < lut->image_width; i++, out += 4, s_in += 3) \ + { \ + c = contrast[s_in[0]]; \ + m = contrast[s_in[1]]; \ + y = contrast[s_in[2]]; \ + if (compute_saturation) \ + { \ + unsigned short tmp[3]; \ + tmp[0] = c; \ + tmp[1] = m; \ + tmp[2] = y; \ + update_saturation_from_rgb(tmp, brightness, saturation, \ + isat, 1); \ + c = tmp[0]; \ + m = tmp[1]; \ + y = tmp[2]; \ + } \ + c = red[c]; \ + m = green[m]; \ + y = blue[y]; \ + k = FMIN(c, FMIN(m, y)); \ + out[0] = k; \ + out[1] = c - k; \ + out[2] = m - k; \ + out[3] = y - k; \ + nzx.nzl |= *(unsigned long long *) out; \ + } \ + for (i = 0; i < 4; i++) \ + if (nzx.nz[i] == 0) \ + retval |= (1 << i); \ + return retval; \ +} + +FAST_COLOR_TO_KCMY_FUNC(unsigned char, 8) // color_8_to_kcmy_fast +FAST_COLOR_TO_KCMY_FUNC(unsigned short, 16) // color_16_to_color_fast +GENERIC_COLOR_FUNC(color, kcmy_fast) + #define RAW_COLOR_TO_COLOR_FUNC(T, bits) \ -static unsigned \ +CFUNC \ color_##bits##_to_color_raw(const stp_vars_t *vars, const unsigned char *in,\ unsigned short *out) \ { \ @@ -659,16 +759,56 @@ color_##bits##_to_color_raw(const stp_vars_t *vars, const unsigned char *in,\ return nz; \ } -RAW_COLOR_TO_COLOR_FUNC(unsigned char, 8) -RAW_COLOR_TO_COLOR_FUNC(unsigned short, 16) +RAW_COLOR_TO_COLOR_FUNC(unsigned char, 8) // color_8_to_color_raw +RAW_COLOR_TO_COLOR_FUNC(unsigned short, 16) // color_16_to_color_raw GENERIC_COLOR_FUNC(color, color_raw) +#define RAW_COLOR_TO_KCMY_FUNC(T, bits) \ +CFUNC \ +color_##bits##_to_kcmy_raw(const stp_vars_t *vars, const unsigned char *in, \ + unsigned short *out) \ +{ \ + int i; \ + union { \ + unsigned short nz[4]; \ + unsigned long long nzl; \ + } nzx; \ + unsigned retval = 0; \ + const T *s_in = (const T *) in; \ + lut_t *lut = (lut_t *)(stp_get_component_data(vars, "Color")); \ + unsigned mask = 0; \ + if (lut->invert_output) \ + mask = 0xffff; \ + nzx.nzl = 0ull; \ + \ + for (i = 0; i < lut->image_width; i++, out += 4, s_in += 3) \ + { \ + unsigned c = (s_in[0] * BD(bits)) ^ mask; \ + unsigned m = (s_in[1] * BD(bits)) ^ mask; \ + unsigned y = (s_in[2] * BD(bits)) ^ mask; \ + unsigned k = FMIN(c, FMIN(m, y)); \ + out[0] = k; \ + out[1] = c - k; \ + out[2] = m - k; \ + out[3] = y - k; \ + nzx.nzl |= *(unsigned long long *) out; \ + } \ + for (i = 0; i < 4; i++) \ + if (nzx.nz[i] == 0) \ + retval |= (1 << i); \ + return retval; \ +} + +RAW_COLOR_TO_KCMY_FUNC(unsigned char, 8) // color_8_to_kcmy_raw +RAW_COLOR_TO_KCMY_FUNC(unsigned short, 16) // color_16_to_kcmy_raw +GENERIC_COLOR_FUNC(color, kcmy_raw) + /* * 'gray_to_rgb()' - Convert gray image data to RGB. */ #define GRAY_TO_COLOR_FUNC(T, bits) \ -static unsigned \ +CFUNC \ gray_##bits##_to_color(const stp_vars_t *vars, const unsigned char *in, \ unsigned short *out) \ { \ @@ -727,12 +867,64 @@ gray_##bits##_to_color(const stp_vars_t *vars, const unsigned char *in, \ return (nz0 ? 0 : 1) + (nz1 ? 0 : 2) + (nz2 ? 0 : 4); \ } -GRAY_TO_COLOR_FUNC(unsigned char, 8) -GRAY_TO_COLOR_FUNC(unsigned short, 16) +GRAY_TO_COLOR_FUNC(unsigned char, 8) // gray_8_to_color +GRAY_TO_COLOR_FUNC(unsigned short, 16) // gray_16_to_color GENERIC_COLOR_FUNC(gray, color) +#define GRAY_TO_KCMY_FUNC(T, bits) \ +CFUNC \ +gray_##bits##_to_kcmy(const stp_vars_t *vars, const unsigned char *in, \ + unsigned short *out) \ +{ \ + int i; \ + union { \ + unsigned short nz[4]; \ + unsigned long long nzl; \ + } nzx; \ + unsigned retval = 0; \ + const T *s_in = (const T *) in; \ + lut_t *lut = (lut_t *)(stp_get_component_data(vars, "Color")); \ + const unsigned short *red; \ + const unsigned short *green; \ + const unsigned short *blue; \ + const unsigned short *user; \ + \ + for (i = CHANNEL_C; i <= CHANNEL_Y; i++) \ + stp_curve_resample(lut->channel_curves[i].curve, 65536); \ + stp_curve_resample \ + (stp_curve_cache_get_curve(&(lut->user_color_correction)), 1 << bits); \ + red = \ + stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_C])); \ + green = \ + stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_M])); \ + blue = \ + stp_curve_cache_get_ushort_data(&(lut->channel_curves[CHANNEL_Y])); \ + user = \ + stp_curve_cache_get_ushort_data(&(lut->user_color_correction)); \ + \ + for (i = 0; i < lut->image_width; i++, out += 4, s_in++) \ + { \ + out[1] = red[user[s_in[0]]]; \ + out[2] = green[user[s_in[0]]]; \ + out[3] = blue[user[s_in[0]]]; \ + out[0] = FMIN(out[1], FMIN(out[2], out[3])); \ + out[1] -= out[0]; \ + out[2] -= out[0]; \ + out[3] -= out[0]; \ + nzx.nzl |= *(unsigned long long *) out; \ + } \ + for (i = 0; i < 4; i++) \ + if (nzx.nz[i] == 0) \ + retval |= (1 << i); \ + return retval; \ +} + +GRAY_TO_KCMY_FUNC(unsigned char, 8) // gray_8_to_kcmy +GRAY_TO_KCMY_FUNC(unsigned short, 16) // gray_16_to_kcmy +GENERIC_COLOR_FUNC(gray, kcmy) + #define GRAY_TO_COLOR_RAW_FUNC(T, bits) \ -static unsigned \ +CFUNC \ gray_##bits##_to_color_raw(const stp_vars_t *vars, const unsigned char *in,\ unsigned short *out) \ { \ @@ -758,50 +950,42 @@ gray_##bits##_to_color_raw(const stp_vars_t *vars, const unsigned char *in,\ return nz; \ } -GRAY_TO_COLOR_RAW_FUNC(unsigned char, 8) -GRAY_TO_COLOR_RAW_FUNC(unsigned short, 16) +GRAY_TO_COLOR_RAW_FUNC(unsigned char, 8) // gray_8_to_color_raw +GRAY_TO_COLOR_RAW_FUNC(unsigned short, 16) // gray_16_to_color_raw GENERIC_COLOR_FUNC(gray, color_raw) -#define COLOR_TO_KCMY_FUNC(name, name2, name3, name4, bits) \ -static unsigned \ -name##_##bits##_to_##name2(const stp_vars_t *vars, const unsigned char *in, \ - unsigned short *out) \ -{ \ - lut_t *lut = (lut_t *)(stp_get_component_data(vars, "Color")); \ - size_t real_steps = lut->steps; \ - unsigned status; \ - if (!lut->cmy_tmp) \ - lut->cmy_tmp = stp_malloc(4 * 2 * lut->image_width); \ - name##_##bits##_to_##name3(vars, in, lut->cmy_tmp); \ - lut->steps = 65536; \ - status = name4##_cmy_to_kcmy(vars, lut->cmy_tmp, out); \ - lut->steps = real_steps; \ - return status; \ +#define GRAY_TO_KCMY_RAW_FUNC(T, bits) \ +CFUNC \ +gray_##bits##_to_kcmy_raw(const stp_vars_t *vars, const unsigned char *in, \ + unsigned short *out) \ +{ \ + int i; \ + int nz = 7; \ + const T *s_in = (const T *) in; \ + lut_t *lut = (lut_t *)(stp_get_component_data(vars, "Color")); \ + unsigned mask = 0; \ + if (lut->invert_output) \ + mask = 0xffff; \ + \ + for (i = 0; i < lut->image_width; i++, out += 4, s_in++) \ + { \ + unsigned outval = (s_in[0] * (65535 / (1 << bits))) ^ mask; \ + out[0] = outval; \ + out[1] = 0; \ + out[2] = 0; \ + out[3] = 0; \ + if (outval) \ + nz = 0; \ + } \ + return nz; \ } -COLOR_TO_KCMY_FUNC(gray, kcmy, color, raw, 8) -COLOR_TO_KCMY_FUNC(gray, kcmy, color, raw, 16) -GENERIC_COLOR_FUNC(gray, kcmy) - -COLOR_TO_KCMY_FUNC(gray, kcmy_raw, color_raw, raw, 8) -COLOR_TO_KCMY_FUNC(gray, kcmy_raw, color_raw, raw, 16) +GRAY_TO_KCMY_RAW_FUNC(unsigned char, 8) // gray_8_to_kcmy_raw +GRAY_TO_KCMY_RAW_FUNC(unsigned short, 16) // gray_16_to_kcmy_raw GENERIC_COLOR_FUNC(gray, kcmy_raw) -COLOR_TO_KCMY_FUNC(color, kcmy, color, raw, 8) -COLOR_TO_KCMY_FUNC(color, kcmy, color, raw, 16) -GENERIC_COLOR_FUNC(color, kcmy) - -COLOR_TO_KCMY_FUNC(color, kcmy_fast, color_fast, raw, 8) -COLOR_TO_KCMY_FUNC(color, kcmy_fast, color_fast, raw, 16) -GENERIC_COLOR_FUNC(color, kcmy_fast) - -COLOR_TO_KCMY_FUNC(color, kcmy_raw, color_raw, raw, 8) -COLOR_TO_KCMY_FUNC(color, kcmy_raw, color_raw, raw, 16) -GENERIC_COLOR_FUNC(color, kcmy_raw) - - #define COLOR_TO_KCMY_THRESHOLD_FUNC(T, name) \ -static unsigned \ +CFUNC \ name##_to_kcmy_threshold(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -853,12 +1037,12 @@ name##_to_kcmy_threshold(const stp_vars_t *vars, \ return z; \ } -COLOR_TO_KCMY_THRESHOLD_FUNC(unsigned char, color_8) -COLOR_TO_KCMY_THRESHOLD_FUNC(unsigned short, color_16) +COLOR_TO_KCMY_THRESHOLD_FUNC(unsigned char, color_8) // color_8_to_kcmy_threshold +COLOR_TO_KCMY_THRESHOLD_FUNC(unsigned short, color_16) // color_16_to_kcmy_threshold GENERIC_COLOR_FUNC(color, kcmy_threshold) #define CMYK_TO_KCMY_THRESHOLD_FUNC(T, name) \ -static unsigned \ +CFUNC \ name##_to_kcmy_threshold(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -900,12 +1084,12 @@ name##_to_kcmy_threshold(const stp_vars_t *vars, \ return z; \ } -CMYK_TO_KCMY_THRESHOLD_FUNC(unsigned char, cmyk_8) -CMYK_TO_KCMY_THRESHOLD_FUNC(unsigned short, cmyk_16) +CMYK_TO_KCMY_THRESHOLD_FUNC(unsigned char, cmyk_8) // cmyk_8_to_kcmy_threshold +CMYK_TO_KCMY_THRESHOLD_FUNC(unsigned short, cmyk_16) // cmyk_16_to_kcmy_threshodl GENERIC_COLOR_FUNC(cmyk, kcmy_threshold) #define KCMY_TO_KCMY_THRESHOLD_FUNC(T, name) \ -static unsigned \ +CFUNC \ name##_to_kcmy_threshold(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -940,12 +1124,12 @@ name##_to_kcmy_threshold(const stp_vars_t *vars, \ return z; \ } -KCMY_TO_KCMY_THRESHOLD_FUNC(unsigned char, kcmy_8) -KCMY_TO_KCMY_THRESHOLD_FUNC(unsigned short, kcmy_16) +KCMY_TO_KCMY_THRESHOLD_FUNC(unsigned char, kcmy_8) // kcmy_8_to_kcmy_threshold +KCMY_TO_KCMY_THRESHOLD_FUNC(unsigned short, kcmy_16) // kcmy_8_to_kcmy_threshold GENERIC_COLOR_FUNC(kcmy, kcmy_threshold) #define GRAY_TO_COLOR_THRESHOLD_FUNC(T, name, bits, channels) \ -static unsigned \ +CFUNC \ gray_##bits##_to_##name##_threshold(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -975,16 +1159,16 @@ gray_##bits##_to_##name##_threshold(const stp_vars_t *vars, \ } -GRAY_TO_COLOR_THRESHOLD_FUNC(unsigned char, color, 8, 3) -GRAY_TO_COLOR_THRESHOLD_FUNC(unsigned short, color, 16, 3) +GRAY_TO_COLOR_THRESHOLD_FUNC(unsigned char, color, 8, 3) // gray_8_to_color_threshold +GRAY_TO_COLOR_THRESHOLD_FUNC(unsigned short, color, 16, 3) // gray_16_to_color_threshold GENERIC_COLOR_FUNC(gray, color_threshold) -GRAY_TO_COLOR_THRESHOLD_FUNC(unsigned char, kcmy, 8, 4) -GRAY_TO_COLOR_THRESHOLD_FUNC(unsigned short, kcmy, 16, 4) +GRAY_TO_COLOR_THRESHOLD_FUNC(unsigned char, kcmy, 8, 4) // gray_8_to_kcmy_threshold +GRAY_TO_COLOR_THRESHOLD_FUNC(unsigned short, kcmy, 16, 4) // gray_16_to_kcmy_threshold GENERIC_COLOR_FUNC(gray, kcmy_threshold) #define COLOR_TO_COLOR_THRESHOLD_FUNC(T, name) \ -static unsigned \ +CFUNC \ name##_to_color_threshold(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1021,12 +1205,12 @@ name##_to_color_threshold(const stp_vars_t *vars, \ return z; \ } -COLOR_TO_COLOR_THRESHOLD_FUNC(unsigned char, color_8) -COLOR_TO_COLOR_THRESHOLD_FUNC(unsigned short, color_16) +COLOR_TO_COLOR_THRESHOLD_FUNC(unsigned char, color_8) // color_8_to_color_threshold +COLOR_TO_COLOR_THRESHOLD_FUNC(unsigned short, color_16) // color_8_to_color_threshold GENERIC_COLOR_FUNC(color, color_threshold) #define COLOR_TO_GRAY_THRESHOLD_FUNC(T, name, channels, max_channels) \ -static unsigned \ +CFUNC \ name##_to_gray_threshold(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1059,95 +1243,92 @@ name##_to_gray_threshold(const stp_vars_t *vars, \ return z; \ } -COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned char, cmyk_8, 4, 4) -COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned short, cmyk_16, 4, 4) +COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned char, cmyk_8, 4, 4) // cmyk_8_to_gray_threshold +COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned short, cmyk_16, 4, 4) // cmyk_16_to_gray_threshold GENERIC_COLOR_FUNC(cmyk, gray_threshold) -COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned char, kcmy_8, 4, 4) -COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned short, kcmy_16, 4, 4) +COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned char, kcmy_8, 4, 4) // kcmy_8_to_gray_threshold +COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned short, kcmy_16, 4, 4) // kcmy_16_to_gray_threshold GENERIC_COLOR_FUNC(kcmy, gray_threshold) -COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned char, color_8, 3, 3) -COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned short, color_16, 3, 3) +COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned char, color_8, 3, 3) // color_8_to_gray_threshold +COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned short, color_16, 3, 3) // color_16_to_gray_threshold GENERIC_COLOR_FUNC(color, gray_threshold) -COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned char, gray_8, 1, 1) -COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned short, gray_16, 1, 1) +COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned char, gray_8, 1, 1) // gray_8_to_gray_threshold +COLOR_TO_GRAY_THRESHOLD_FUNC(unsigned short, gray_16, 1, 1) // gray_16_to_gray_threshold GENERIC_COLOR_FUNC(gray, gray_threshold) -#define CMYK_TO_COLOR_FUNC(namein, name2, T, bits, offset) \ -static unsigned \ +#define CMYK_TO_COLOR_FUNC(namein, name2, T, bits, offset) \ +static unsigned \ namein##_##bits##_to_##name2(const stp_vars_t *vars, const unsigned char *in, \ - unsigned short *out) \ -{ \ - int i; \ - lut_t *lut = (lut_t *)(stp_get_component_data(vars, "Color")); \ - unsigned status; \ - size_t real_steps = lut->steps; \ - const T *s_in = (const T *) in; \ - unsigned short *tmp; \ - int width = lut->image_width; \ - unsigned mask = 0; \ - \ - if (!lut->cmy_tmp) \ - lut->cmy_tmp = stp_malloc(3 * 2 * lut->image_width); \ - tmp = lut->cmy_tmp; \ - memset(lut->cmy_tmp, 0, width * 3 * sizeof(unsigned short)); \ - if (lut->invert_output) \ - mask = 0xffff; \ - \ - for (i = 0; i < width; i++, tmp += 3, s_in += 4) \ - { \ - unsigned c = (s_in[0 + offset] + s_in[(3 + offset) % 4]) * \ - (65535 / ((1 << bits) - 1)); \ - unsigned m = (s_in[1 + offset] + s_in[(3 + offset) % 4]) * \ - (65535 / ((1 << bits) - 1)); \ - unsigned y = (s_in[2 + offset] + s_in[(3 + offset) % 4]) * \ - (65535 / ((1 << bits) - 1)); \ - if (c > 65535) \ - c = 65535; \ - if (m > 65535) \ - m = 65535; \ - if (y > 65535) \ - y = 65535; \ - tmp[0] = c ^ mask; \ - tmp[1] = m ^ mask; \ - tmp[2] = y ^ mask; \ - } \ - lut->steps = 65536; \ - status = \ - color_16_to_##name2(vars, (const unsigned char *) lut->cmy_tmp, out); \ - lut->steps = real_steps; \ - return status; \ + unsigned short *out) \ +{ \ + int i; \ + lut_t *lut = (lut_t *)(stp_get_component_data(vars, "Color")); \ + unsigned status; \ + size_t real_steps = lut->steps; \ + const T *s_in = (const T *) in; \ + unsigned short *tmp; \ + int width = lut->image_width; \ + \ + if (!lut->cmy_tmp) \ + lut->cmy_tmp = stp_malloc(3 * 2 * lut->image_width); \ + tmp = lut->cmy_tmp; \ + memset(lut->cmy_tmp, 0, width * 3 * sizeof(unsigned short)); \ + \ + for (i = 0; i < width; i++, tmp += 3, s_in += 4) \ + { \ + unsigned c = (s_in[0 + offset] + s_in[(3 + offset) % 4]) * \ + (65535 / MAXB(bits)); \ + unsigned m = (s_in[1 + offset] + s_in[(3 + offset) % 4]) * \ + (65535 / MAXB(bits)); \ + unsigned y = (s_in[2 + offset] + s_in[(3 + offset) % 4]) * \ + (65535 / MAXB(bits)); \ + if (c > MAXB(16)) \ + c = MAXB(16); \ + if (m > MAXB(16)) \ + m = MAXB(16); \ + if (y > MAXB(16)) \ + y = MAXB(16); \ + tmp[0] = c; \ + tmp[1] = m; \ + tmp[2] = y; \ + } \ + lut->steps = 65536; \ + status = \ + color_16_to_##name2(vars, (const unsigned char *) lut->cmy_tmp, out); \ + lut->steps = real_steps; \ + return status; \ } -CMYK_TO_COLOR_FUNC(cmyk, color, unsigned char, 8, 0) -CMYK_TO_COLOR_FUNC(cmyk, color, unsigned short, 16, 0) +CMYK_TO_COLOR_FUNC(cmyk, color, unsigned char, 8, 0) // cmyk_8_to_color +CMYK_TO_COLOR_FUNC(cmyk, color, unsigned short, 16, 0) // cmyk_16_to_color GENERIC_COLOR_FUNC(cmyk, color) -CMYK_TO_COLOR_FUNC(kcmy, color, unsigned char, 8, 1) -CMYK_TO_COLOR_FUNC(kcmy, color, unsigned short, 16, 1) +CMYK_TO_COLOR_FUNC(kcmy, color, unsigned char, 8, 1) // kcmy_8_to_color +CMYK_TO_COLOR_FUNC(kcmy, color, unsigned short, 16, 1) // kcmy_16_to_color GENERIC_COLOR_FUNC(kcmy, color) -CMYK_TO_COLOR_FUNC(cmyk, color_threshold, unsigned char, 8, 0) -CMYK_TO_COLOR_FUNC(cmyk, color_threshold, unsigned short, 16, 0) +CMYK_TO_COLOR_FUNC(cmyk, color_threshold, unsigned char, 8, 0) // cmyk_8_to_color_threshold +CMYK_TO_COLOR_FUNC(cmyk, color_threshold, unsigned short, 16, 0) // cmyk_16_to_color_threshold GENERIC_COLOR_FUNC(cmyk, color_threshold) -CMYK_TO_COLOR_FUNC(kcmy, color_threshold, unsigned char, 8, 1) -CMYK_TO_COLOR_FUNC(kcmy, color_threshold, unsigned short, 16, 1) +CMYK_TO_COLOR_FUNC(kcmy, color_threshold, unsigned char, 8, 1) // kcmy_8_to_color_threshold +CMYK_TO_COLOR_FUNC(kcmy, color_threshold, unsigned short, 16, 1) // kcmy_16_to_color_threshold GENERIC_COLOR_FUNC(kcmy, color_threshold) -CMYK_TO_COLOR_FUNC(cmyk, color_fast, unsigned char, 8, 0) -CMYK_TO_COLOR_FUNC(cmyk, color_fast, unsigned short, 16, 0) +CMYK_TO_COLOR_FUNC(cmyk, color_fast, unsigned char, 8, 0) // cmyk_8_to_color_fast +CMYK_TO_COLOR_FUNC(cmyk, color_fast, unsigned short, 16, 0) // cmyk_16_to_color_fast GENERIC_COLOR_FUNC(cmyk, color_fast) -CMYK_TO_COLOR_FUNC(kcmy, color_fast, unsigned char, 8, 1) -CMYK_TO_COLOR_FUNC(kcmy, color_fast, unsigned short, 16, 1) +CMYK_TO_COLOR_FUNC(kcmy, color_fast, unsigned char, 8, 1) // kcmy_8_to_color_fast +CMYK_TO_COLOR_FUNC(kcmy, color_fast, unsigned short, 16, 1) // kcmy_16_to_color_fast GENERIC_COLOR_FUNC(kcmy, color_fast) -CMYK_TO_COLOR_FUNC(cmyk, color_raw, unsigned char, 8, 0) -CMYK_TO_COLOR_FUNC(cmyk, color_raw, unsigned short, 16, 0) +CMYK_TO_COLOR_FUNC(cmyk, color_raw, unsigned char, 8, 0) // cmyk_8_to_color_raw +CMYK_TO_COLOR_FUNC(cmyk, color_raw, unsigned short, 16, 0) // cmyk_16_to_color_raw GENERIC_COLOR_FUNC(cmyk, color_raw) -CMYK_TO_COLOR_FUNC(kcmy, color_raw, unsigned char, 8, 1) -CMYK_TO_COLOR_FUNC(kcmy, color_raw, unsigned short, 16, 1) +CMYK_TO_COLOR_FUNC(kcmy, color_raw, unsigned char, 8, 1) // kcmy_8_to_color_raw +CMYK_TO_COLOR_FUNC(kcmy, color_raw, unsigned short, 16, 1) // kcmy_16_to_color_raw GENERIC_COLOR_FUNC(kcmy, color_raw) #define CMYK_TO_KCMY_FUNC(T, size) \ -static unsigned \ +CFUNC \ cmyk_##size##_to_kcmy(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1187,12 +1368,12 @@ cmyk_##size##_to_kcmy(const stp_vars_t *vars, \ return retval; \ } -CMYK_TO_KCMY_FUNC(unsigned char, 8) -CMYK_TO_KCMY_FUNC(unsigned short, 16) +CMYK_TO_KCMY_FUNC(unsigned char, 8) // cmyk_8_to_kcmy +CMYK_TO_KCMY_FUNC(unsigned short, 16) // cmyk_16_to_kcmy GENERIC_COLOR_FUNC(cmyk, kcmy) #define KCMY_TO_KCMY_FUNC(T, size) \ -static unsigned \ +CFUNC \ kcmy_##size##_to_kcmy(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1231,13 +1412,13 @@ kcmy_##size##_to_kcmy(const stp_vars_t *vars, \ return retval; \ } -KCMY_TO_KCMY_FUNC(unsigned char, 8) -KCMY_TO_KCMY_FUNC(unsigned short, 16) +KCMY_TO_KCMY_FUNC(unsigned char, 8) // kcmy_8_to_kcmy +KCMY_TO_KCMY_FUNC(unsigned short, 16) // kcmy_16_to_kcmy GENERIC_COLOR_FUNC(kcmy, kcmy) #define GRAY_TO_GRAY_FUNC(T, bits) \ -static unsigned \ +CFUNC \ gray_##bits##_to_gray(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1276,12 +1457,12 @@ gray_##bits##_to_gray(const stp_vars_t *vars, \ return nz == 0; \ } -GRAY_TO_GRAY_FUNC(unsigned char, 8) -GRAY_TO_GRAY_FUNC(unsigned short, 16) +GRAY_TO_GRAY_FUNC(unsigned char, 8) // gray_8_to_gray +GRAY_TO_GRAY_FUNC(unsigned short, 16) // gray_16_to_gray GENERIC_COLOR_FUNC(gray, gray) #define COLOR_TO_GRAY_FUNC(T, bits) \ -static unsigned \ +CFUNC \ color_##bits##_to_gray(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1332,13 +1513,13 @@ color_##bits##_to_gray(const stp_vars_t *vars, \ return nz == 0; \ } -COLOR_TO_GRAY_FUNC(unsigned char, 8) -COLOR_TO_GRAY_FUNC(unsigned short, 16) +COLOR_TO_GRAY_FUNC(unsigned char, 8) // color_8_to_gray +COLOR_TO_GRAY_FUNC(unsigned short, 16) // color_16_to_gray GENERIC_COLOR_FUNC(color, gray) #define CMYK_TO_GRAY_FUNC(T, bits) \ -static unsigned \ +CFUNC \ cmyk_##bits##_to_gray(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1393,12 +1574,12 @@ cmyk_##bits##_to_gray(const stp_vars_t *vars, \ return nz ? 0 : 1; \ } -CMYK_TO_GRAY_FUNC(unsigned char, 8) -CMYK_TO_GRAY_FUNC(unsigned short, 16) +CMYK_TO_GRAY_FUNC(unsigned char, 8) // cmyk_8_to_gray +CMYK_TO_GRAY_FUNC(unsigned short, 16) // cmyk_16_to_gray GENERIC_COLOR_FUNC(cmyk, gray) #define KCMY_TO_GRAY_FUNC(T, bits) \ -static unsigned \ +CFUNC \ kcmy_##bits##_to_gray(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1453,12 +1634,12 @@ kcmy_##bits##_to_gray(const stp_vars_t *vars, \ return nz ? 0 : 1; \ } -KCMY_TO_GRAY_FUNC(unsigned char, 8) -KCMY_TO_GRAY_FUNC(unsigned short, 16) +KCMY_TO_GRAY_FUNC(unsigned char, 8) // kcmy_8_to_gray +KCMY_TO_GRAY_FUNC(unsigned short, 16) // kcmy_16_to_gray GENERIC_COLOR_FUNC(kcmy, gray) #define GRAY_TO_GRAY_RAW_FUNC(T, bits) \ -static unsigned \ +CFUNC \ gray_##bits##_to_gray_raw(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1484,12 +1665,12 @@ gray_##bits##_to_gray_raw(const stp_vars_t *vars, \ return nz == 0; \ } -GRAY_TO_GRAY_RAW_FUNC(unsigned char, 8) -GRAY_TO_GRAY_RAW_FUNC(unsigned short, 16) +GRAY_TO_GRAY_RAW_FUNC(unsigned char, 8) // gray_8_to_gray_raw +GRAY_TO_GRAY_RAW_FUNC(unsigned short, 16) // gray_16_to_gray_raw GENERIC_COLOR_FUNC(gray, gray_raw) #define COLOR_TO_GRAY_RAW_FUNC(T, bits, invertable, name2) \ -static unsigned \ +CFUNC \ color_##bits##_to_gray_##name2(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1536,15 +1717,16 @@ color_##bits##_to_gray_##name2(const stp_vars_t *vars, \ return nz == 0; \ } -COLOR_TO_GRAY_RAW_FUNC(unsigned char, 8, 1, raw) -COLOR_TO_GRAY_RAW_FUNC(unsigned short, 16, 1, raw) +COLOR_TO_GRAY_RAW_FUNC(unsigned char, 8, 1, raw) // color_8_to_gray_raw +COLOR_TO_GRAY_RAW_FUNC(unsigned short, 16, 1, raw) // color_16_to_gray_raw GENERIC_COLOR_FUNC(color, gray_raw) -COLOR_TO_GRAY_RAW_FUNC(unsigned char, 8, 0, noninvert) -COLOR_TO_GRAY_RAW_FUNC(unsigned short, 16, 0, noninvert) +COLOR_TO_GRAY_RAW_FUNC(unsigned char, 8, 0, noninvert) // color_8_to_gray_noninvert +COLOR_TO_GRAY_RAW_FUNC(unsigned short, 16, 0, noninvert) // color_16_to_gray_noninvert +// GENERIC_COLOR_FUNC(color, gray_noninvert) #define CMYK_TO_GRAY_RAW_FUNC(T, bits, invertable, name2) \ -static unsigned \ +CFUNC \ cmyk_##bits##_to_gray_##name2(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1596,14 +1778,15 @@ cmyk_##bits##_to_gray_##name2(const stp_vars_t *vars, \ return nz ? 0 : 1; \ } -CMYK_TO_GRAY_RAW_FUNC(unsigned char, 8, 1, raw) -CMYK_TO_GRAY_RAW_FUNC(unsigned short, 16, 1, raw) +CMYK_TO_GRAY_RAW_FUNC(unsigned char, 8, 1, raw) // cmyk_8_to_gray_raw +CMYK_TO_GRAY_RAW_FUNC(unsigned short, 16, 1, raw) // cmyk_16_to_gray_raw GENERIC_COLOR_FUNC(cmyk, gray_raw) -CMYK_TO_GRAY_RAW_FUNC(unsigned char, 8, 0, noninvert) -CMYK_TO_GRAY_RAW_FUNC(unsigned short, 16, 0, noninvert) +CMYK_TO_GRAY_RAW_FUNC(unsigned char, 8, 0, noninvert) // cmyk_8_to_gray_noninvert +CMYK_TO_GRAY_RAW_FUNC(unsigned short, 16, 0, noninvert) // cmyk_16_to_gray_noninvert +// GENERIC_COLOR_FUNC(cmyk, gray_noninvert) #define KCMY_TO_GRAY_RAW_FUNC(T, bits, invertable, name2) \ -static unsigned \ +CFUNC \ kcmy_##bits##_to_gray_##name2(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1655,14 +1838,15 @@ kcmy_##bits##_to_gray_##name2(const stp_vars_t *vars, \ return nz ? 0 : 1; \ } -KCMY_TO_GRAY_RAW_FUNC(unsigned char, 8, 1, raw) -KCMY_TO_GRAY_RAW_FUNC(unsigned short, 16, 1, raw) +KCMY_TO_GRAY_RAW_FUNC(unsigned char, 8, 1, raw) // kcmy_8_to_gray_raw +KCMY_TO_GRAY_RAW_FUNC(unsigned short, 16, 1, raw) // kcmy_16_to_gray_raw GENERIC_COLOR_FUNC(kcmy, gray_raw) -KCMY_TO_GRAY_RAW_FUNC(unsigned char, 8, 0, noninvert) -KCMY_TO_GRAY_RAW_FUNC(unsigned short, 16, 0, noninvert) +KCMY_TO_GRAY_RAW_FUNC(unsigned char, 8, 0, noninvert) // kcmy_8_to_gray_noninvert +KCMY_TO_GRAY_RAW_FUNC(unsigned short, 16, 0, noninvert) // kcmy_16_to_gray_noninvert +// GENERIC_COLOR_FUNC(kcmy, gray_noninvert) #define CMYK_TO_KCMY_RAW_FUNC(T, bits) \ -static unsigned \ +CFUNC \ cmyk_##bits##_to_kcmy_raw(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1692,12 +1876,12 @@ cmyk_##bits##_to_kcmy_raw(const stp_vars_t *vars, \ return retval; \ } -CMYK_TO_KCMY_RAW_FUNC(unsigned char, 8) -CMYK_TO_KCMY_RAW_FUNC(unsigned short, 16) +CMYK_TO_KCMY_RAW_FUNC(unsigned char, 8) // cmyk_8_to_kcmy_raw +CMYK_TO_KCMY_RAW_FUNC(unsigned short, 16) // cmyk_16_to_kcmy_raw GENERIC_COLOR_FUNC(cmyk, kcmy_raw) #define KCMY_TO_KCMY_RAW_FUNC(T, bits) \ -static unsigned \ +CFUNC \ kcmy_##bits##_to_kcmy_raw(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1726,12 +1910,12 @@ kcmy_##bits##_to_kcmy_raw(const stp_vars_t *vars, \ return retval; \ } -KCMY_TO_KCMY_RAW_FUNC(unsigned char, 8) -KCMY_TO_KCMY_RAW_FUNC(unsigned short, 16) +KCMY_TO_KCMY_RAW_FUNC(unsigned char, 8) // kcmy_8_to_kcmy_raw +KCMY_TO_KCMY_RAW_FUNC(unsigned short, 16) // kcmy_16_to_kcmy_raw GENERIC_COLOR_FUNC(kcmy, kcmy_raw) #define DESATURATED_FUNC(name, name2, bits) \ -static unsigned \ +CFUNC \ name##_##bits##_to_##name2##_desaturated(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1748,29 +1932,29 @@ name##_##bits##_to_##name2##_desaturated(const stp_vars_t *vars, \ return status; \ } -DESATURATED_FUNC(color, color, 8) -DESATURATED_FUNC(color, color, 16) +DESATURATED_FUNC(color, color, 8) // color_8_to_color_desaturated +DESATURATED_FUNC(color, color, 16) // color_16_to_color_desaturated GENERIC_COLOR_FUNC(color, color_desaturated) -DESATURATED_FUNC(color, kcmy, 8) -DESATURATED_FUNC(color, kcmy, 16) +DESATURATED_FUNC(color, kcmy, 8) // color_8_to_kcmy_desaturated +DESATURATED_FUNC(color, kcmy, 16) // color_8_to_kcmy_desaturated GENERIC_COLOR_FUNC(color, kcmy_desaturated) -DESATURATED_FUNC(cmyk, color, 8) -DESATURATED_FUNC(cmyk, color, 16) +DESATURATED_FUNC(cmyk, color, 8) // cmyk_8_to_color_desaturated +DESATURATED_FUNC(cmyk, color, 16) // cmyk_16_to_color_desaturated GENERIC_COLOR_FUNC(cmyk, color_desaturated) -DESATURATED_FUNC(cmyk, kcmy, 8) -DESATURATED_FUNC(cmyk, kcmy, 16) +DESATURATED_FUNC(cmyk, kcmy, 8) // cmyk_8_to_kcmy_desaturated +DESATURATED_FUNC(cmyk, kcmy, 16) // cmyk_16_to_kcmy_desaturated GENERIC_COLOR_FUNC(cmyk, kcmy_desaturated) -DESATURATED_FUNC(kcmy, color, 8) -DESATURATED_FUNC(kcmy, color, 16) +DESATURATED_FUNC(kcmy, color, 8) // kcmy_8_to_color_desaturated +DESATURATED_FUNC(kcmy, color, 16) // kcmy_16_to_kcmy_desaturated GENERIC_COLOR_FUNC(kcmy, color_desaturated) -DESATURATED_FUNC(kcmy, kcmy, 8) -DESATURATED_FUNC(kcmy, kcmy, 16) +DESATURATED_FUNC(kcmy, kcmy, 8) // kcmy_8_to_color_desaturated +DESATURATED_FUNC(kcmy, kcmy, 16) // kcmy_16_to_kcmy_desaturated GENERIC_COLOR_FUNC(kcmy, kcmy_desaturated) #define CMYK_DISPATCH(name) \ -static unsigned \ +CFUNC \ CMYK_to_##name(const stp_vars_t *vars, const unsigned char *in, \ unsigned short *out) \ { \ @@ -1787,21 +1971,21 @@ CMYK_to_##name(const stp_vars_t *vars, const unsigned char *in, \ } \ } -CMYK_DISPATCH(color) -CMYK_DISPATCH(color_raw) -CMYK_DISPATCH(color_fast) -CMYK_DISPATCH(color_threshold) -CMYK_DISPATCH(color_desaturated) -CMYK_DISPATCH(kcmy) -CMYK_DISPATCH(kcmy_raw) -CMYK_DISPATCH(kcmy_threshold) -CMYK_DISPATCH(kcmy_desaturated) -CMYK_DISPATCH(gray) -CMYK_DISPATCH(gray_raw) -CMYK_DISPATCH(gray_threshold) +CMYK_DISPATCH(color) /* CMYK_to_color */ +CMYK_DISPATCH(color_raw) /* CMYK_to_color_raw */ +CMYK_DISPATCH(color_fast) /* CMYK_to_color_fast */ +CMYK_DISPATCH(color_threshold) /* CMYK_to_color_threshold */ +CMYK_DISPATCH(color_desaturated) /* CMYK_to_color_desaturated */ +CMYK_DISPATCH(kcmy) /* CMYK_to_kcmy */ +CMYK_DISPATCH(kcmy_raw) /* CMYK_to_kcmy_raw */ +CMYK_DISPATCH(kcmy_threshold) /* CMYK_to_kcmy_threshold */ +CMYK_DISPATCH(kcmy_desaturated) /* CMYK_to_kcmy_desaturated */ +CMYK_DISPATCH(gray) /* CMYK_to_gray */ +CMYK_DISPATCH(gray_raw) /* CMYK_to_gray_raw */ +CMYK_DISPATCH(gray_threshold) /* CMYK_to_gray_threshold */ #define RAW_TO_RAW_THRESHOLD_FUNC(T, name) \ -static unsigned \ +CFUNC \ name##_to_raw_threshold(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1836,12 +2020,12 @@ name##_to_raw_threshold(const stp_vars_t *vars, \ return z; \ } -RAW_TO_RAW_THRESHOLD_FUNC(unsigned char, raw_8) -RAW_TO_RAW_THRESHOLD_FUNC(unsigned short, raw_16) +RAW_TO_RAW_THRESHOLD_FUNC(unsigned char, raw_8) // raw_8_to_raw_threshold +RAW_TO_RAW_THRESHOLD_FUNC(unsigned short, raw_16) // raw_16_to_raw_threshold GENERIC_COLOR_FUNC(raw, raw_threshold) #define RAW_TO_RAW_FUNC(T, size) \ -static unsigned \ +CFUNC \ raw_##size##_to_raw(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1880,13 +2064,13 @@ raw_##size##_to_raw(const stp_vars_t *vars, \ return retval; \ } -RAW_TO_RAW_FUNC(unsigned char, 8) -RAW_TO_RAW_FUNC(unsigned short, 16) +RAW_TO_RAW_FUNC(unsigned char, 8) // raw_8_to_raw +RAW_TO_RAW_FUNC(unsigned short, 16) // raw_8_to_raw GENERIC_COLOR_FUNC(raw, raw) #define RAW_TO_RAW_RAW_FUNC(T, bits) \ -static unsigned \ +CFUNC \ raw_##bits##_to_raw_raw(const stp_vars_t *vars, \ const unsigned char *in, \ unsigned short *out) \ @@ -1916,68 +2100,86 @@ raw_##bits##_to_raw_raw(const stp_vars_t *vars, \ return retval; \ } -RAW_TO_RAW_RAW_FUNC(unsigned char, 8) -RAW_TO_RAW_RAW_FUNC(unsigned short, 16) +RAW_TO_RAW_RAW_FUNC(unsigned char, 8) // raw_8_to_raw_raw +RAW_TO_RAW_RAW_FUNC(unsigned short, 16) // raw_16_to_raw_raw GENERIC_COLOR_FUNC(raw, raw_raw) -#define CONVERSION_FUNCTION_WITH_FAST(from, to, from2) \ -static unsigned \ -generic_##from##_to_##to(const stp_vars_t *v, \ - const unsigned char *in, \ - unsigned short *out) \ -{ \ - lut_t *lut = (lut_t *)(stp_get_component_data(v, "Color")); \ - switch (lut->color_correction->correction) \ - { \ - case COLOR_CORRECTION_UNCORRECTED: \ - return from2##_to_##to##_fast(v, in, out); \ - case COLOR_CORRECTION_ACCURATE: \ - case COLOR_CORRECTION_BRIGHT: \ - case COLOR_CORRECTION_HUE: \ - return from2##_to_##to(v, in, out); \ - case COLOR_CORRECTION_DESATURATED: \ - return from2##_to_##to##_desaturated(v, in, out); \ - case COLOR_CORRECTION_THRESHOLD: \ - case COLOR_CORRECTION_PREDITHERED: \ - return from2##_to_##to##_threshold(v, in, out); \ - case COLOR_CORRECTION_DENSITY: \ - case COLOR_CORRECTION_RAW: \ - return from2##_to_##to##_raw(v, in, out); \ - default: \ - return (unsigned) -1; \ - } \ +#define CONVERSION_FUNCTION_WITH_FAST(from, to, from2) \ +CFUNC \ +generic_##from##_to_##to(const stp_vars_t *v, \ + const unsigned char *in, \ + unsigned short *out) \ +{ \ + lut_t *lut = (lut_t *)(stp_get_component_data(v, "Color")); \ + switch (lut->color_correction->correction) \ + { \ + case COLOR_CORRECTION_UNCORRECTED: \ + stp_dprintf(STP_DBG_COLORFUNC, v, \ + "Colorfunc: %s_to_%s_fast\n", #from2, #to); \ + return from2##_to_##to##_fast(v, in, out); \ + case COLOR_CORRECTION_ACCURATE: \ + case COLOR_CORRECTION_BRIGHT: \ + case COLOR_CORRECTION_HUE: \ + stp_dprintf(STP_DBG_COLORFUNC, v, \ + "Colorfunc: %s_to_%s\n", #from2, #to); \ + return from2##_to_##to(v, in, out); \ + case COLOR_CORRECTION_DESATURATED: \ + stp_dprintf(STP_DBG_COLORFUNC, v, \ + "Colorfunc: %s_to_%s_desaturated\n", #from2, #to); \ + return from2##_to_##to##_desaturated(v, in, out); \ + case COLOR_CORRECTION_THRESHOLD: \ + case COLOR_CORRECTION_PREDITHERED: \ + stp_dprintf(STP_DBG_COLORFUNC, v, \ + "Colorfunc: %s_to_%s_threshold\n", #from2, #to); \ + return from2##_to_##to##_threshold(v, in, out); \ + case COLOR_CORRECTION_DENSITY: \ + case COLOR_CORRECTION_RAW: \ + stp_dprintf(STP_DBG_COLORFUNC, v, \ + "Colorfunc: %s_to_%s_raw\n", #from2, #to); \ + return from2##_to_##to##_raw(v, in, out); \ + default: \ + return (unsigned) -1; \ + } \ } -#define CONVERSION_FUNCTION_WITHOUT_FAST(from, to, from2) \ -static unsigned \ -generic_##from##_to_##to(const stp_vars_t *v, \ - const unsigned char *in, \ - unsigned short *out) \ -{ \ - lut_t *lut = (lut_t *)(stp_get_component_data(v, "Color")); \ - switch (lut->color_correction->correction) \ - { \ - case COLOR_CORRECTION_UNCORRECTED: \ - case COLOR_CORRECTION_ACCURATE: \ - case COLOR_CORRECTION_BRIGHT: \ - case COLOR_CORRECTION_HUE: \ - return from2##_to_##to(v, in, out); \ - case COLOR_CORRECTION_DESATURATED: \ - return from2##_to_##to##_desaturated(v, in, out); \ - case COLOR_CORRECTION_THRESHOLD: \ - case COLOR_CORRECTION_PREDITHERED: \ - return from2##_to_##to##_threshold(v, in, out); \ - case COLOR_CORRECTION_DENSITY: \ - case COLOR_CORRECTION_RAW: \ - return from2##_to_##to##_raw(v, in, out); \ - default: \ - return (unsigned) -1; \ - } \ +#define CONVERSION_FUNCTION_WITHOUT_FAST(from, to, from2) \ +CFUNC \ +generic_##from##_to_##to(const stp_vars_t *v, \ + const unsigned char *in, \ + unsigned short *out) \ +{ \ + lut_t *lut = (lut_t *)(stp_get_component_data(v, "Color")); \ + switch (lut->color_correction->correction) \ + { \ + case COLOR_CORRECTION_UNCORRECTED: \ + case COLOR_CORRECTION_ACCURATE: \ + case COLOR_CORRECTION_BRIGHT: \ + case COLOR_CORRECTION_HUE: \ + stp_dprintf(STP_DBG_COLORFUNC, v, \ + "Colorfunc: %s_to_%s\n", #from2, #to); \ + return from2##_to_##to(v, in, out); \ + case COLOR_CORRECTION_DESATURATED: \ + stp_dprintf(STP_DBG_COLORFUNC, v, \ + "Colorfunc: %s_to_%s_desaturated\n", #from2, #to); \ + return from2##_to_##to##_desaturated(v, in, out); \ + case COLOR_CORRECTION_THRESHOLD: \ + case COLOR_CORRECTION_PREDITHERED: \ + stp_dprintf(STP_DBG_COLORFUNC, v, \ + "Colorfunc: %s_to_%s_threshold\n", #from2, #to); \ + return from2##_to_##to##_threshold(v, in, out); \ + case COLOR_CORRECTION_DENSITY: \ + case COLOR_CORRECTION_RAW: \ + stp_dprintf(STP_DBG_COLORFUNC, v, \ + "Colorfunc: %s_to_%s_raw\n", #from2, #to); \ + return from2##_to_##to##_raw(v, in, out); \ + default: \ + return (unsigned) -1; \ + } \ } #define CONVERSION_FUNCTION_WITHOUT_DESATURATED(from, to, from2) \ -static unsigned \ +CFUNC \ generic_##from##_to_##to(const stp_vars_t *v, \ const unsigned char *in, \ unsigned short *out) \ @@ -1990,27 +2192,33 @@ generic_##from##_to_##to(const stp_vars_t *v, \ case COLOR_CORRECTION_BRIGHT: \ case COLOR_CORRECTION_HUE: \ case COLOR_CORRECTION_DESATURATED: \ + stp_dprintf(STP_DBG_COLORFUNC, v, \ + "Colorfunc: %s_to_%s\n", #from2, #to); \ return from2##_to_##to(v, in, out); \ case COLOR_CORRECTION_THRESHOLD: \ case COLOR_CORRECTION_PREDITHERED: \ + stp_dprintf(STP_DBG_COLORFUNC, v, \ + "Colorfunc: %s_to_%s_threshold\n", #from2, #to); \ return from2##_to_##to##_threshold(v, in, out); \ case COLOR_CORRECTION_DENSITY: \ case COLOR_CORRECTION_RAW: \ + stp_dprintf(STP_DBG_COLORFUNC, v, \ + "Colorfunc: %s_to_%s_raw\n", #from2, #to); \ return from2##_to_##to##_raw(v, in, out); \ default: \ return (unsigned) -1; \ } \ } -CONVERSION_FUNCTION_WITH_FAST(cmyk, color, CMYK) -CONVERSION_FUNCTION_WITH_FAST(color, color, color) -CONVERSION_FUNCTION_WITH_FAST(color, kcmy, color) -CONVERSION_FUNCTION_WITHOUT_FAST(cmyk, kcmy, CMYK) -CONVERSION_FUNCTION_WITHOUT_DESATURATED(cmyk, gray, CMYK) -CONVERSION_FUNCTION_WITHOUT_DESATURATED(color, gray, color) -CONVERSION_FUNCTION_WITHOUT_DESATURATED(gray, gray, gray) -CONVERSION_FUNCTION_WITHOUT_DESATURATED(gray, color, gray) -CONVERSION_FUNCTION_WITHOUT_DESATURATED(gray, kcmy, gray) +CONVERSION_FUNCTION_WITH_FAST(cmyk, color, CMYK) // generic_cmyk_to_color +CONVERSION_FUNCTION_WITH_FAST(color, color, color) // generic_color_to_color +CONVERSION_FUNCTION_WITH_FAST(color, kcmy, color) // generic_color_to_kcmy +CONVERSION_FUNCTION_WITHOUT_FAST(cmyk, kcmy, CMYK) // generic_cmyk_to_kcmy +CONVERSION_FUNCTION_WITHOUT_DESATURATED(cmyk, gray, CMYK) // generic_cmyk_to_gray +CONVERSION_FUNCTION_WITHOUT_DESATURATED(color, gray, color) // generic_color_to_gray +CONVERSION_FUNCTION_WITHOUT_DESATURATED(gray, gray, gray) // generic_gray_to_gray +CONVERSION_FUNCTION_WITHOUT_DESATURATED(gray, color, gray) // generic_gray_to_color +CONVERSION_FUNCTION_WITHOUT_DESATURATED(gray, kcmy, gray) // generic_gray_to_kcmy unsigned stpi_color_convert_to_gray(const stp_vars_t *v, @@ -2088,16 +2296,19 @@ stpi_color_convert_raw(const stp_vars_t *v, { case COLOR_CORRECTION_THRESHOLD: case COLOR_CORRECTION_PREDITHERED: + stp_dprintf(STP_DBG_COLORFUNC, v, "Colorfunc: raw_to_raw_threshold\n"); return raw_to_raw_threshold(v, in, out); case COLOR_CORRECTION_UNCORRECTED: case COLOR_CORRECTION_BRIGHT: case COLOR_CORRECTION_HUE: case COLOR_CORRECTION_ACCURATE: case COLOR_CORRECTION_DESATURATED: + stp_dprintf(STP_DBG_COLORFUNC, v, "Colorfunc: raw_to_raw_desaturated\n"); return raw_to_raw(v, in, out); case COLOR_CORRECTION_RAW: case COLOR_CORRECTION_DEFAULT: case COLOR_CORRECTION_DENSITY: + stp_dprintf(STP_DBG_COLORFUNC, v, "Colorfunc: raw_to_raw_raw\n"); return raw_to_raw_raw(v, in, out); default: return (unsigned) -1; diff --git a/src/main/color.c b/src/main/color.c index c84653e..579c87e 100644 --- a/src/main/color.c +++ b/src/main/color.c @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* diff --git a/src/main/curve-cache.c b/src/main/curve-cache.c index ed28423..f09861c 100644 --- a/src/main/curve-cache.c +++ b/src/main/curve-cache.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* diff --git a/src/main/curve.c b/src/main/curve.c index a833376..2aeb15e 100644 --- a/src/main/curve.c +++ b/src/main/curve.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H @@ -386,6 +385,25 @@ stpi_curve_set_points(stp_curve_t *curve, size_t points) return 1; } +static int +stpi_curve_set_data(stp_curve_t *curve, size_t points, const double *data) +{ + if (points < 2) + return 0; + if (points > curve_point_limit || + (curve->wrap_mode == STP_CURVE_WRAP_AROUND && + points > curve_point_limit - 1)) + return 0; + clear_curve_data(curve); + if (curve->wrap_mode == STP_CURVE_WRAP_AROUND) + points++; + if (curve->piecewise) + points *= 2; + if ((stp_sequence_set_data(curve->seq, points, data)) == 0) + return 0; + return 1; +} + /* * Create a default curve */ @@ -553,7 +571,7 @@ int stp_curve_set_interpolation_type(stp_curve_t *curve, stp_curve_type_t itype) { CHECK_CURVE(curve); - if (itype < 0 || itype >= stpi_curve_type_count) + if (itype >= stpi_curve_type_count) return 0; curve->curve_type = itype; return 1; @@ -1031,7 +1049,7 @@ interpolate_gamma_internal(const stp_curve_t *curve, double where) double blo, bhi; size_t real_point_count; - real_point_count = get_real_point_count(curve);; + real_point_count = get_real_point_count(curve); if (real_point_count) where /= (real_point_count - 1); @@ -1232,20 +1250,61 @@ stp_curve_resample(stp_curve_t *curve, size_t points) } curve->piecewise = 0; } + else if (curve->gamma) + { + double fgamma = curve->gamma; + double blo, bhi; + int negative_gamma = 0; + stp_sequence_get_bounds(curve->seq, &blo, &bhi); + if (fgamma > 0) + { + fgamma = -fgamma; + negative_gamma = 1; + } + for (i = 0; i < limit; i++) + { + double where = ((double) i * (double) old / (double) (limit - 1)); + if (negative_gamma) + where = 1.0 - where; + new_vec[i] = blo + ((bhi - blo) * pow(where, fgamma)); + } + } else { + double blo, bhi; + const double *seq_data; + size_t seq_count; + size_t point_count = get_point_count(curve); + stp_sequence_get_data(curve->seq, &seq_count, &seq_data); + stp_sequence_get_bounds(curve->seq, &blo, &bhi); + if (curve->recompute_interval) + compute_intervals((stpi_cast_safe(curve))); for (i = 0; i < limit; i++) - if (curve->gamma) - new_vec[i] = - interpolate_gamma_internal(curve, ((double) i * (double) old / - (double) (limit - 1))); - else - new_vec[i] = - interpolate_point_internal(curve, ((double) i * (double) old / - (double) (limit - 1))); - } - stpi_curve_set_points(curve, points); - stp_sequence_set_subrange(curve->seq, 0, limit, new_vec); + { + double where = ((double) i * (double) old / (double) (limit - 1)); + int iwhere = (int) where; + double frac = where - (double) iwhere; + if (frac == 0.0) + new_vec[i] = seq_data[iwhere]; + else if (curve->curve_type == STP_CURVE_TYPE_LINEAR) + new_vec[i] = seq_data[iwhere] + (frac * curve->interval[iwhere]); + else + { + int iwhere1 = iwhere + 1; + while (iwhere1 > point_count) + iwhere1 -= point_count; + new_vec[i] = + do_interpolate_spline(seq_data[iwhere], seq_data[iwhere1], + frac, curve->interval[iwhere], + curve->interval[iwhere1], 1.0); + if (new_vec[i] > bhi) + new_vec[i] = bhi; + else if (new_vec[i] < blo) + new_vec[i] = blo; + } + } + } + stpi_curve_set_data(curve, points, new_vec); curve->recompute_interval = 1; stp_free(new_vec); return 1; @@ -1447,6 +1506,9 @@ stp_curve_create_from_xmltree(stp_mxml_node_t *curve) /* The curve node */ int piecewise = 0; stp_xml_init(); + /* FIXME Need protection against unlimited recursion */ + if ((stmp = stp_mxmlElementGetAttr(curve, "src")) != NULL) + return stp_curve_create_from_file(stmp); /* Get curve type */ stmp = stp_mxmlElementGetAttr(curve, "type"); if (stmp) @@ -1518,7 +1580,7 @@ stp_curve_create_from_xmltree(stp_mxml_node_t *curve) /* The curve node */ ret = stp_curve_create(wrap_mode); stp_curve_set_interpolation_type(ret, curve_type); - child = stp_mxmlFindElement(curve, curve, "sequence", NULL, NULL, STP_MXML_DESCEND); + child = stp_xml_get_node(curve, "sequence", NULL); if (child) seq = stp_sequence_create_from_xmltree(child); @@ -1590,6 +1652,11 @@ stp_curve_create_from_xmltree(stp_mxml_node_t *curve) /* The curve node */ error: stp_deprintf(STP_DBG_CURVE_ERRORS, "stp_curve_create_from_xmltree: error during curve read\n"); + if (seq) + { + stp_sequence_destroy(seq); + seq = NULL; + } if (ret) stp_curve_destroy(ret); stp_xml_exit(); @@ -1862,7 +1929,20 @@ stp_curve_create_from_file(const char* file) { stp_curve_t *curve = NULL; stp_mxml_node_t *doc; - FILE *fp = fopen(file, "r"); + FILE *fp = NULL; + if (file[0] != '/' && strncmp(file, "./", 2) && strncmp(file, "../", 3)) + { + char *fn = stp_path_find_file(NULL, file); + if (fn) + { + fp = fopen(file, "r"); + free(fn); + } + } + else if (file) + { + fp = fopen(file, "r"); + } if (!fp) { stp_deprintf(STP_DBG_CURVE_ERRORS, diff --git a/src/main/dither-ed.c b/src/main/dither-ed.c index 7b8ce89..3bf31af 100644 --- a/src/main/dither-ed.c +++ b/src/main/dither-ed.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Revision History: * diff --git a/src/main/dither-eventone.c b/src/main/dither-eventone.c index 121c5fa..b0a03d5 100644 --- a/src/main/dither-eventone.c +++ b/src/main/dither-eventone.c @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * This code uses the Eventone dither algorithm. This is described * at the website http://www.artofcode.com/eventone/ diff --git a/src/main/dither-impl.h b/src/main/dither-impl.h index a2a26f2..70a5189 100644 --- a/src/main/dither-impl.h +++ b/src/main/dither-impl.h @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Revision History: * @@ -38,8 +37,10 @@ extern "C" { #include <limits.h> #ifdef __GNUC__ +#ifndef inline #define inline __inline__ #endif +#endif #define D_FLOYD_HYBRID 0 #define D_ADAPTIVE_BASE 4 diff --git a/src/main/dither-inks.c b/src/main/dither-inks.c index 4c1250d..68ac9f7 100644 --- a/src/main/dither-inks.c +++ b/src/main/dither-inks.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Revision History: * diff --git a/src/main/dither-inlined-functions.h b/src/main/dither-inlined-functions.h index ac93a02..0f5d2b9 100644 --- a/src/main/dither-inlined-functions.h +++ b/src/main/dither-inlined-functions.h @@ -17,8 +17,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Revision History: * diff --git a/src/main/dither-main.c b/src/main/dither-main.c index 240d80d..12b79c6 100644 --- a/src/main/dither-main.c +++ b/src/main/dither-main.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Revision History: * diff --git a/src/main/dither-ordered.c b/src/main/dither-ordered.c index 6e9b533..4588e2b 100644 --- a/src/main/dither-ordered.c +++ b/src/main/dither-ordered.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Revision History: * diff --git a/src/main/dither-predithered.c b/src/main/dither-predithered.c index ed5bdcd..5befe6d 100644 --- a/src/main/dither-predithered.c +++ b/src/main/dither-predithered.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Revision History: * diff --git a/src/main/dither-very-fast.c b/src/main/dither-very-fast.c index db89ce2..f7e7765 100644 --- a/src/main/dither-very-fast.c +++ b/src/main/dither-very-fast.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Revision History: * diff --git a/src/main/escp2-channels.c b/src/main/escp2-channels.c index 1fcfb37..9e3b4e7 100644 --- a/src/main/escp2-channels.c +++ b/src/main/escp2-channels.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H @@ -396,70 +395,56 @@ load_inklist(stp_mxml_node_t *node, stp_mxml_node_t *root, inklist_t *ikl) } } +/* + * This is structured differently from the other XML loaders because of + * the default black inkset + */ static inkgroup_t * load_inkgroup(const char *name) { - stp_list_t *dirlist = stpi_data_path(); - stp_list_item_t *item; - inkgroup_t *igl = NULL; - item = stp_list_get_start(dirlist); - while (item) + inkgroup_t *igl = (inkgroup_t *) stp_refcache_find_item("escp2Inkgroup", name); + if (! igl) { - const char *dn = (const char *) stp_list_item_get_data(item); - char *ffn = stpi_path_merge(dn, name); - stp_mxml_node_t *inkgroup = - stp_mxmlLoadFromFile(NULL, ffn, STP_MXML_NO_CALLBACK); - stp_free(ffn); - if (inkgroup) + stp_mxml_node_t *node = + stp_xml_parse_file_from_path_uncached_safe(name, "escp2InkGroup", NULL); + stp_mxml_node_t *child = node->child; + igl = stp_zalloc(sizeof(inkgroup_t)); + stp_refcache_add_item("escpInkgroup", name, igl); + size_t count = 0; + while (child) { - int count = 0; - stp_mxml_node_t *node = stp_mxmlFindElement(inkgroup, inkgroup, - "escp2InkGroup", NULL, - NULL, STP_MXML_DESCEND); - if (node) - { - stp_mxml_node_t *child = node->child; - igl = stp_zalloc(sizeof(inkgroup_t)); - while (child) - { - if (child->type == STP_MXML_ELEMENT && - !strcmp(child->value.element.name, "InkList")) - count++; - child = child->next; - } - igl->n_inklists = count; - if (stp_mxmlElementGetAttr(node, "name")) - igl->name = stp_strdup(stp_mxmlElementGetAttr(node, "name")); - else - igl->name = stp_strdup(name); - igl->inklists = stp_zalloc(sizeof(inklist_t) * count); - child = node->child; - count = 0; - while (child) - { - if (child->type == STP_MXML_ELEMENT && - !strcmp(child->value.element.name, "InkList")) - load_inklist(child, node, &(igl->inklists[count++])); - child = child->next; - } - } - stp_mxmlDelete(inkgroup); - break; + if (child->type == STP_MXML_ELEMENT && + !strcmp(child->value.element.name, "InkList")) + count++; + child = child->next; + } + igl->n_inklists = count; + if (stp_mxmlElementGetAttr(node, "name")) + igl->name = stp_strdup(stp_mxmlElementGetAttr(node, "name")); + else + igl->name = stp_strdup(name); + igl->inklists = stp_zalloc(sizeof(inklist_t) * count); + child = node->child; + count = 0; + while (child) + { + if (child->type == STP_MXML_ELEMENT && + !strcmp(child->value.element.name, "InkList")) + load_inklist(child, node, &(igl->inklists[count++])); + child = child->next; } - item = stp_list_item_next(item); + stp_xml_free_parsed_file(node); } - stp_list_destroy(dirlist); return igl; } int -stp_escp2_load_inkgroup(const stp_vars_t *v, const char *name) +stpi_escp2_load_inkgroup(const stp_vars_t *v, const char *name) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); inkgroup_t *igl = load_inkgroup(name); - STPI_ASSERT(igl, v); printdef->inkgroup = igl; - return (igl != NULL); + return 1; } const inkname_t * diff --git a/src/main/escp2-driver.c b/src/main/escp2-driver.c index f3c8d51..13c39e7 100644 --- a/src/main/escp2-driver.c +++ b/src/main/escp2-driver.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* diff --git a/src/main/escp2-papers.c b/src/main/escp2-papers.c index 5eebc49..19d1b98 100644 --- a/src/main/escp2-papers.c +++ b/src/main/escp2-papers.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H @@ -32,42 +31,23 @@ static stp_mxml_node_t * get_media_size_xml(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return printdef->media_sizes; } int -stp_escp2_load_media_sizes(const stp_vars_t *v, const char *name) +stpi_escp2_load_media_sizes(const stp_vars_t *v, const char *name) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); - stp_list_t *dirlist = stpi_data_path(); - stp_list_item_t *item; - int found = 0; - item = stp_list_get_start(dirlist); - while (item) - { - const char *dn = (const char *) stp_list_item_get_data(item); - char *ffn = stpi_path_merge(dn, name); - stp_mxml_node_t *sizes = - stp_mxmlLoadFromFile(NULL, ffn, STP_MXML_NO_CALLBACK); - stp_free(ffn); - if (sizes) - { - stp_mxml_node_t **xnode = - (stp_mxml_node_t **) &(printdef->media_sizes); - *xnode = sizes; - found = 1; - break; - } - item = stp_list_item_next(item); - } - stp_list_destroy(dirlist); - STPI_ASSERT(found, v); - return found; + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); + stp_mxml_node_t *node = + stp_xml_parse_file_from_path_safe(name, "escp2MediaSizes", NULL); + stp_mxml_node_t **xnode = (stp_mxml_node_t **) &(printdef->media_sizes); + *xnode = node; + return 1; } void -stp_escp2_set_media_size(stp_vars_t *v, const stp_vars_t *src) +stpi_escp2_set_media_size(stp_vars_t *v, const stp_vars_t *src) { const char *name = stp_get_string_parameter(src, "PageSize"); if (name) @@ -98,74 +78,59 @@ paper_namefunc(const void *item) } int -stp_escp2_load_media(const stp_vars_t *v, const char *name) +stpi_escp2_load_media(const stp_vars_t *v, const char *name) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); - stp_list_t *dirlist = stpi_data_path(); - stp_list_item_t *item; - int found = 0; - item = stp_list_get_start(dirlist); - while (item) + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); + stp_mxml_node_t *node = + stp_xml_parse_file_from_path_safe(name, "escp2Papers", NULL); + stp_mxml_node_t **xnode = (stp_mxml_node_t **) &(printdef->media); + stp_list_t **xcache = (stp_list_t **) &(printdef->media_cache); + stp_string_list_t **xpapers = (stp_string_list_t **) &(printdef->papers); + static const char *xcache_cache = "escp2Papers_xcache"; + static const char *xpapers_cache = "escp2Papers_xpapers"; + *xnode = node->parent; + *xcache = (stp_list_t *) stp_refcache_find_item(xcache_cache, name); + if (! *xcache) { - const char *dn = (const char *) stp_list_item_get_data(item); - char *ffn = stpi_path_merge(dn, name); - stp_mxml_node_t *media = - stp_mxmlLoadFromFile(NULL, ffn, STP_MXML_NO_CALLBACK); - stp_free(ffn); - if (media) + *xcache = stp_list_create(); + stp_list_set_namefunc(*xcache, paper_namefunc); + stp_refcache_add_item(xcache_cache, name, *xcache); + } + *xpapers = (stp_string_list_t *) stp_refcache_find_item(xpapers_cache, name); + if (! *xpapers) + { + *xpapers = stp_string_list_create(); + stp_refcache_add_item(xpapers_cache, name, *xpapers); + node = node->child; + while (node) { - stp_mxml_node_t **xnode = - (stp_mxml_node_t **) &(printdef->media); - stp_list_t **xlist = - (stp_list_t **) &(printdef->media_cache); - stp_string_list_t **xpapers = - (stp_string_list_t **) &(printdef->papers); - stp_mxml_node_t *node = stp_mxmlFindElement(media, media, - "escp2Papers", NULL, - NULL, STP_MXML_DESCEND); - *xnode = media; - *xlist = stp_list_create(); - stp_list_set_namefunc(*xlist, paper_namefunc); - *xpapers = stp_string_list_create(); - if (node) - { - node = node->child; - while (node) - { - if (node->type == STP_MXML_ELEMENT && - strcmp(node->value.element.name, "paper") == 0) - stp_string_list_add_string(*xpapers, - stp_mxmlElementGetAttr(node, "name"), - stp_mxmlElementGetAttr(node, "text")); - node = node->next; - } - } - found = 1; - break; + if (node->type == STP_MXML_ELEMENT && + strcmp(node->value.element.name, "paper") == 0) + stp_string_list_add_string(*xpapers, + stp_mxmlElementGetAttr(node, "name"), + stp_mxmlElementGetAttr(node, "text")); + node = node->next; } - item = stp_list_item_next(item); } - stp_list_destroy(dirlist); - STPI_ASSERT(found, v); - return found; + return 1; } static stp_mxml_node_t * get_media_xml(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return printdef->media; } static stp_list_t * get_media_cache(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return printdef->media_cache; } int -stp_escp2_has_media_feature(const stp_vars_t *v, const char *name) +stpi_escp2_has_media_feature(const stp_vars_t *v, const char *name) { stp_mxml_node_t *doc = get_media_xml(v); if (doc) @@ -246,10 +211,10 @@ get_media_type_named(const stp_vars_t *v, const char *name, { paper_t *answer = NULL; int i; - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); const stp_string_list_t *p = printdef->papers; - const res_t *res = ignore_res ? NULL : stp_escp2_find_resolution(v); - const inklist_t *inklist = stp_escp2_inklist(v); + const res_t *res = ignore_res ? NULL : stpi_escp2_find_resolution(v); + const inklist_t *inklist = stpi_escp2_inklist(v); char *media_id = build_media_id(name, inklist, res); stp_list_t *cache = get_media_cache(v); stp_list_item_t *li = stp_list_get_item_by_name(cache, media_id); @@ -265,15 +230,9 @@ get_media_type_named(const stp_vars_t *v, const char *name, { if (!strcmp(name, stp_string_list_param(p, i)->name)) { -#ifdef HAVE_LOCALE_H - char *locale = stp_strdup(setlocale(LC_ALL, NULL)); - setlocale(LC_ALL, "C"); -#endif + stp_xml_init(); answer = build_media_type(v, name, inklist, res); -#ifdef HAVE_LOCALE_H - setlocale(LC_ALL, locale); - stp_free(locale); -#endif + stp_xml_exit(); break; } } @@ -287,9 +246,9 @@ get_media_type_named(const stp_vars_t *v, const char *name, } const paper_t * -stp_escp2_get_media_type(const stp_vars_t *v, int ignore_res) +stpi_escp2_get_media_type(const stp_vars_t *v, int ignore_res) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); const stp_string_list_t *p = printdef->papers; if (p) { @@ -301,9 +260,9 @@ stp_escp2_get_media_type(const stp_vars_t *v, int ignore_res) } const paper_t * -stp_escp2_get_default_media_type(const stp_vars_t *v) +stpi_escp2_get_default_media_type(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); const stp_string_list_t *p = printdef->papers; if (p) { @@ -323,69 +282,56 @@ slots_namefunc(const void *item) } int -stp_escp2_load_input_slots(const stp_vars_t *v, const char *name) +stpi_escp2_load_input_slots(const stp_vars_t *v, const char *name) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); - stp_list_t *dirlist = stpi_data_path(); - stp_list_item_t *item; - int found = 0; - item = stp_list_get_start(dirlist); - while (item) + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); + stp_mxml_node_t *node = + stp_xml_parse_file_from_path_safe(name, "escp2InputSlots", NULL); + stp_mxml_node_t **xnode = (stp_mxml_node_t **) &(printdef->slots); + stp_list_t **xcache = (stp_list_t **) &(printdef->slots_cache); + stp_string_list_t **xslots = (stp_string_list_t **) &(printdef->input_slots); + static const char *xcache_cache = "escp2InputSlots_xcache"; + static const char *xslots_cache = "escp2InputSlots_slots"; + + *xnode = node->parent; + *xcache = (stp_list_t *) stp_refcache_find_item(xcache_cache, name); + if (! *xcache) + { + *xcache = stp_list_create(); + stp_list_set_namefunc(*xcache, slots_namefunc); + stp_refcache_add_item(xcache_cache, name, *xcache); + } + + *xslots = (stp_string_list_t *) stp_refcache_find_item(xslots_cache, name); + if (! *xslots) { - const char *dn = (const char *) stp_list_item_get_data(item); - char *ffn = stpi_path_merge(dn, name); - stp_mxml_node_t *slots = - stp_mxmlLoadFromFile(NULL, ffn, STP_MXML_NO_CALLBACK); - stp_free(ffn); - if (slots) + *xslots = stp_string_list_create(); + stp_refcache_add_item(xslots_cache, name, *xslots); + node = node->child; + while (node) { - stp_mxml_node_t **xnode = - (stp_mxml_node_t **) &(printdef->slots); - stp_list_t **xlist = - (stp_list_t **) &(printdef->slots_cache); - stp_string_list_t **xslots = - (stp_string_list_t **) &(printdef->input_slots); - stp_mxml_node_t *node = stp_mxmlFindElement(slots, slots, - "escp2InputSlots", NULL, - NULL, STP_MXML_DESCEND); - *xnode = slots; - *xlist = stp_list_create(); - stp_list_set_namefunc(*xlist, slots_namefunc); - *xslots = stp_string_list_create(); - if (node) - { - node = node->child; - while (node) - { - if (node->type == STP_MXML_ELEMENT && - strcmp(node->value.element.name, "slot") == 0) - stp_string_list_add_string(*xslots, - stp_mxmlElementGetAttr(node, "name"), - stp_mxmlElementGetAttr(node, "text")); - node = node->next; - } - } - found = 1; - break; + if (node->type == STP_MXML_ELEMENT && + strcmp(node->value.element.name, "slot") == 0) + stp_string_list_add_string(*xslots, + stp_mxmlElementGetAttr(node, "name"), + stp_mxmlElementGetAttr(node, "text")); + node = node->next; } - item = stp_list_item_next(item); } - stp_list_destroy(dirlist); - STPI_ASSERT(found, v); - return found; + return 1; } static stp_mxml_node_t * get_slots_xml(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return printdef->slots; } static stp_list_t * get_slots_cache(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return printdef->slots_cache; } @@ -403,65 +349,65 @@ build_input_slot(const stp_vars_t *v, const char *name) answer = stp_zalloc(sizeof(input_slot_t)); answer->name = stp_mxmlElementGetAttr(node, "name"); answer->text = gettext(stp_mxmlElementGetAttr(node, "text")); - n1 = stp_mxmlFindElement(node, node, "CD", NULL, NULL, STP_MXML_DESCEND); + n1 = stp_xml_get_node(node, "CD", NULL); if (n1) answer->is_cd = 1; - n1 = stp_mxmlFindElement(node, node, "RollFeed", NULL, NULL, STP_MXML_DESCEND); + n1 = stp_xml_get_node(node, "RollFeed", NULL); if (n1) { answer->is_roll_feed = 1; - if (stp_mxmlFindElement(n1, n1, "CutAll", NULL, NULL, STP_MXML_DESCEND)) + if (stp_xml_get_node(n1, "CutAll", NULL)) answer->roll_feed_cut_flags |= ROLL_FEED_CUT_ALL; - if (stp_mxmlFindElement(n1, n1, "CutLast", NULL, NULL, STP_MXML_DESCEND)) + if (stp_xml_get_node(n1, "CutLast", NULL)) answer->roll_feed_cut_flags |= ROLL_FEED_CUT_LAST; - if (stp_mxmlFindElement(n1, n1, "DontEject", NULL, NULL, STP_MXML_DESCEND)) + if (stp_xml_get_node(n1, "DontEject", NULL)) answer->roll_feed_cut_flags |= ROLL_FEED_DONT_EJECT; } - n1 = stp_mxmlFindElement(node, node, "Duplex", NULL, NULL, STP_MXML_DESCEND); + n1 = stp_xml_get_node(node, "Duplex", NULL); if (n1) { - if (stp_mxmlFindElement(n1, n1, "Tumble", NULL, NULL, STP_MXML_DESCEND)) + if (stp_xml_get_node(n1, "Tumble", NULL)) answer->duplex |= DUPLEX_TUMBLE; - if (stp_mxmlFindElement(n1, n1, "NoTumble", NULL, NULL, STP_MXML_DESCEND)) + if (stp_xml_get_node(n1, "NoTumble", NULL)) answer->duplex |= DUPLEX_NO_TUMBLE; } - n1 = stp_mxmlFindElement(node, node, "InitSequence", NULL, NULL, STP_MXML_DESCEND); + n1 = stp_xml_get_node(node, "InitSequence", NULL); if (n1 && n1->child && n1->child->type == STP_MXML_TEXT) answer->init_sequence = stp_xmlstrtoraw(n1->child->value.text.string); - n1 = stp_mxmlFindElement(node, node, "DeinitSequence", NULL, NULL, STP_MXML_DESCEND); + n1 = stp_xml_get_node(node, "DeinitSequence", NULL); if (n1 && n1->child && n1->child->type == STP_MXML_TEXT) answer->deinit_sequence = stp_xmlstrtoraw(n1->child->value.text.string); - n1 = stp_mxmlFindElement(node, node, "ExtraHeight", NULL, NULL, STP_MXML_DESCEND); + n1 = stp_xml_get_node(node, "ExtraHeight", NULL); if (n1 && n1->child && n1->child->type == STP_MXML_TEXT) answer->extra_height = stp_xmlstrtoul(n1->child->value.text.string); return answer; } int -stp_escp2_printer_supports_rollfeed(const stp_vars_t *v) +stpi_escp2_printer_supports_rollfeed(const stp_vars_t *v) { stp_mxml_node_t *node = get_slots_xml(v); - if (stp_mxmlFindElement(node, node, "RollFeed", NULL, NULL, STP_MXML_DESCEND)) + if (stp_xml_get_node(node, "RollFeed", NULL)) return 1; else return 0; } int -stp_escp2_printer_supports_print_to_cd(const stp_vars_t *v) +stpi_escp2_printer_supports_print_to_cd(const stp_vars_t *v) { stp_mxml_node_t *node = get_slots_xml(v); - if (stp_mxmlFindElement(node, node, "CD", NULL, NULL, STP_MXML_DESCEND)) + if (stp_xml_get_node(node, "CD", NULL)) return 1; else return 0; } int -stp_escp2_printer_supports_duplex(const stp_vars_t *v) +stpi_escp2_printer_supports_duplex(const stp_vars_t *v) { stp_mxml_node_t *node = get_slots_xml(v); - if (stp_mxmlFindElement(node, node, "Duplex", NULL, NULL, STP_MXML_DESCEND)) + if (stp_xml_get_node(node, "Duplex", NULL)) return 1; else return 0; @@ -472,7 +418,7 @@ get_input_slot_named(const stp_vars_t *v, const char *name) { input_slot_t *answer = NULL; int i; - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); const stp_string_list_t *p = printdef->input_slots; stp_list_t *cache = get_slots_cache(v); stp_list_item_t *li = stp_list_get_item_by_name(cache, name); @@ -485,15 +431,9 @@ get_input_slot_named(const stp_vars_t *v, const char *name) { if (!strcmp(name, stp_string_list_param(p, i)->name)) { -#ifdef HAVE_LOCALE_H - char *locale = stp_strdup(setlocale(LC_ALL, NULL)); - setlocale(LC_ALL, "C"); -#endif + stp_xml_init(); answer = build_input_slot(v, name); -#ifdef HAVE_LOCALE_H - setlocale(LC_ALL, locale); - stp_free(locale); -#endif + stp_xml_exit(); break; } } @@ -504,9 +444,9 @@ get_input_slot_named(const stp_vars_t *v, const char *name) } const input_slot_t * -stp_escp2_get_input_slot(const stp_vars_t *v) +stpi_escp2_get_input_slot(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); const stp_string_list_t *p = printdef->input_slots; if (p) { diff --git a/src/main/escp2-resolutions.c b/src/main/escp2-resolutions.c index 27798e4..f099907 100644 --- a/src/main/escp2-resolutions.c +++ b/src/main/escp2-resolutions.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H @@ -29,11 +28,9 @@ #include "print-escp2.h" -int -stp_escp2_load_printer_weaves_from_xml(const stp_vars_t *v, - stp_mxml_node_t *node) +static printer_weave_list_t * +stpi_escp2_load_printer_weaves_from_xml(stp_mxml_node_t *node) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); printer_weave_list_t *xpw = stp_malloc(sizeof(printer_weave_list_t)); int count = 0; stp_mxml_node_t *child = node->child; @@ -44,7 +41,6 @@ stp_escp2_load_printer_weaves_from_xml(const stp_vars_t *v, count++; child = child->next; } - printdef->printer_weaves = xpw; if (stp_mxmlElementGetAttr(node, "name")) xpw->name = stp_strdup(stp_mxmlElementGetAttr(node, "name")); xpw->n_printer_weaves = count; @@ -69,45 +65,35 @@ stp_escp2_load_printer_weaves_from_xml(const stp_vars_t *v, } child = child->next; } - return 1; + return xpw; } int -stp_escp2_load_printer_weaves(const stp_vars_t *v, const char *name) +stpi_escp2_load_printer_weaves(const stp_vars_t *v, const char *name) { - stp_list_t *dirlist = stpi_data_path(); - stp_list_item_t *item; - int found = 0; - item = stp_list_get_start(dirlist); - while (item) + static const char *weave_cache = "escp2PrinterWeaves"; + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); + printer_weave_list_t *pw = + (printer_weave_list_t *) stp_refcache_find_item(weave_cache, name); + if(! pw) { - const char *dn = (const char *) stp_list_item_get_data(item); - char *ffn = stpi_path_merge(dn, name); - stp_mxml_node_t *weaves = - stp_mxmlLoadFromFile(NULL, ffn, STP_MXML_NO_CALLBACK); - stp_free(ffn); - if (weaves) - { - stp_mxml_node_t *node = stp_mxmlFindElement(weaves, weaves, - "escp2PrinterWeaves", NULL, - NULL, STP_MXML_DESCEND); - if (node) - stp_escp2_load_printer_weaves_from_xml(v, node); - stp_mxmlDelete(weaves); - found = 1; - break; - } - item = stp_list_item_next(item); + stp_mxml_node_t *node = + stp_xml_parse_file_from_path_uncached_safe(name, "escp2PrinterWeaves", NULL); + stp_dprintf(STP_DBG_ESCP2_XML, v, + ">>>Loading printer weave data from %s (%p)...", name, (void *) node); + stp_xml_init(); + pw = stpi_escp2_load_printer_weaves_from_xml(node); + stp_xml_exit(); + stp_refcache_add_item(weave_cache, name, pw); + stp_xml_free_parsed_file(node); } - stp_list_destroy(dirlist); - STPI_ASSERT(found, v); - return found; + printdef->printer_weaves = pw; + return 1; } -int -stp_escp2_load_resolutions_from_xml(const stp_vars_t *v, stp_mxml_node_t *node) +static resolution_list_t * +stpi_escp2_load_resolutions_from_xml(stp_mxml_node_t *node) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); resolution_list_t *xrs = stp_malloc(sizeof(resolution_list_t)); int count = 0; stp_mxml_node_t *child = node->child; @@ -115,10 +101,11 @@ stp_escp2_load_resolutions_from_xml(const stp_vars_t *v, stp_mxml_node_t *node) { if (child->type == STP_MXML_ELEMENT && !strcmp(child->value.element.name, "resolution")) - count++; + { + count++; + } child = child->next; } - printdef->resolutions = xrs; if (stp_mxmlElementGetAttr(node, "name")) xrs->name = stp_strdup(stp_mxmlElementGetAttr(node, "name")); xrs->n_resolutions = count; @@ -184,45 +171,54 @@ stp_escp2_load_resolutions_from_xml(const stp_vars_t *v, stp_mxml_node_t *node) } child = child->next; } - return 1; + return xrs; } int -stp_escp2_load_resolutions(const stp_vars_t *v, const char *name) +stpi_escp2_load_resolutions(const stp_vars_t *v, const char *name, + stp_mxml_node_t *node) { - stp_list_t *dirlist = stpi_data_path(); - stp_list_item_t *item; + stp_dprintf(STP_DBG_ESCP2_XML, v, + ">>>Loading resolutions from %s (%p)...", name, (void *) node); + static const char *res_cache = "escp2Resolutions"; + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); + resolution_list_t *pr = + (resolution_list_t *) stp_refcache_find_item(res_cache, name); int found = 0; - item = stp_list_get_start(dirlist); - while (item) + if (pr) + stp_dprintf(STP_DBG_ESCP2_XML, v, "cached!"); + if(! pr) { - const char *dn = (const char *) stp_list_item_get_data(item); - char *ffn = stpi_path_merge(dn, name); - stp_mxml_node_t *resolutions = - stp_mxmlLoadFromFile(NULL, ffn, STP_MXML_NO_CALLBACK); - stp_free(ffn); - if (resolutions) + stp_mxml_node_t *parent = NULL; + if (! node) { - stp_mxml_node_t *node = stp_mxmlFindElement(resolutions, resolutions, - "escp2Resolutions", NULL, - NULL, STP_MXML_DESCEND); - if (node) - stp_escp2_load_resolutions_from_xml(v, node); - stp_mxmlDelete(resolutions); - found = 1; - break; + parent = stp_xml_parse_file_from_path_uncached_safe(name, "escp2Resolutions", NULL); + node = parent->child; } - item = stp_list_item_next(item); + while (node) + { + if (node->type == STP_MXML_ELEMENT && + !strcmp(node->value.element.name, "resolutions")) + { + stp_xml_init(); + pr = stpi_escp2_load_resolutions_from_xml(node); + stp_refcache_add_item(res_cache, name, pr); + stp_xml_exit(); + found = 1; + break; + } + node = node->next; + } + stp_xml_free_parsed_file(parent); } - stp_list_destroy(dirlist); - STPI_ASSERT(found, v); + printdef->resolutions = pr; + stp_dprintf(STP_DBG_ESCP2_XML, v, "(%p) done!", (void *) pr); return found; } -int -stp_escp2_load_quality_presets_from_xml(const stp_vars_t *v, stp_mxml_node_t *node) +static quality_list_t * +stpi_escp2_load_quality_presets_from_xml(stp_mxml_node_t *node) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); quality_list_t *qpw = stp_malloc(sizeof(quality_list_t)); int count = 0; stp_mxml_node_t *child = node->child; @@ -233,7 +229,6 @@ stp_escp2_load_quality_presets_from_xml(const stp_vars_t *v, stp_mxml_node_t *no count++; child = child->next; } - printdef->quality_list = qpw; if (stp_mxmlElementGetAttr(node, "name")) qpw->name = stp_strdup(stp_mxmlElementGetAttr(node, "name")); qpw->n_quals = count; @@ -286,37 +281,31 @@ stp_escp2_load_quality_presets_from_xml(const stp_vars_t *v, stp_mxml_node_t *no } child = child->next; } - return 1; + return qpw; } int -stp_escp2_load_quality_presets(const stp_vars_t *v, const char *name) +stpi_escp2_load_quality_presets(const stp_vars_t *v, const char *name) { - stp_list_t *dirlist = stpi_data_path(); - stp_list_item_t *item; - int found = 0; - item = stp_list_get_start(dirlist); - while (item) + stp_dprintf(STP_DBG_ESCP2_XML, v, + ">>>Loading quality presets from %s...", name); + static const char *quality_cache = "escp2QualityPresets"; + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); + quality_list_t *qpw = + (quality_list_t *) stp_refcache_find_item(quality_cache, name); + if (qpw) + stp_dprintf(STP_DBG_ESCP2_XML, v, "cached!"); + if(! qpw) { - const char *dn = (const char *) stp_list_item_get_data(item); - char *ffn = stpi_path_merge(dn, name); - stp_mxml_node_t *qualities = - stp_mxmlLoadFromFile(NULL, ffn, STP_MXML_NO_CALLBACK); - stp_free(ffn); - if (qualities) - { - stp_mxml_node_t *node = stp_mxmlFindElement(qualities, qualities, - "escp2QualityPresets", NULL, - NULL, STP_MXML_DESCEND); - if (node) - stp_escp2_load_quality_presets_from_xml(v, node); - stp_mxmlDelete(qualities); - found = 1; - break; - } - item = stp_list_item_next(item); + stp_mxml_node_t *node = + stp_xml_parse_file_from_path_uncached_safe(name, "escp2QualityPresets", NULL); + stp_xml_init(); + qpw = stpi_escp2_load_quality_presets_from_xml(node); + stp_refcache_add_item(quality_cache, name, qpw); + stp_xml_free_parsed_file(node); + stp_xml_exit(); } - stp_list_destroy(dirlist); - STPI_ASSERT(found, v); - return found; + printdef->quality_list = qpw; + stp_dprintf(STP_DBG_ESCP2_XML, v, "(%p) done!", (void *) qpw); + return 1; } diff --git a/src/main/generic-options.c b/src/main/generic-options.c index f87d23d..054ba55 100644 --- a/src/main/generic-options.c +++ b/src/main/generic-options.c @@ -13,8 +13,7 @@ * 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 02111STP_CHANNEL_NONE307, USA. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H diff --git a/src/main/generic-options.h b/src/main/generic-options.h index 7782b7f..6149fbb 100644 --- a/src/main/generic-options.h +++ b/src/main/generic-options.h @@ -13,8 +13,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifndef GUTENPRINT_INTERNAL_GENERIC_OPTIONS_H diff --git a/src/main/gutenprint-internal.h b/src/main/gutenprint-internal.h index 5460213..ce45910 100644 --- a/src/main/gutenprint-internal.h +++ b/src/main/gutenprint-internal.h @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Revision History: * @@ -40,6 +39,7 @@ extern "C" { #endif #include <gutenprint/gutenprint-module.h> +#include <time.h> /** * Utility functions (internal). @@ -51,7 +51,6 @@ extern "C" { extern void stpi_init_paper(void); extern void stpi_init_dither(void); extern void stpi_init_printer(void); -extern void stpi_vars_print_error(const stp_vars_t *v, const char *prefix); #define BUFFER_FLAG_FLIP_X 0x1 #define BUFFER_FLAG_FLIP_Y 0x2 extern stp_image_t* stpi_buffer_image(stp_image_t* image, unsigned int flags); @@ -67,13 +66,188 @@ do \ stp_erprintf("\nERROR: ***Gutenprint %s assertion %s failed!" \ " file %s, line %d. %s\n", PACKAGE_VERSION, \ #x, __FILE__, __LINE__, "Please report this bug!"); \ - if ((v)) stpi_vars_print_error((v), "ERROR"); \ + if ((v)) stp_vars_print_error((v), "ERROR"); \ stp_abort(); \ } \ } while (0) /** @} */ +/* Internal printer stuff, moved from printers.h */ +typedef struct +{ + stp_parameter_list_t (*list_parameters)(const stp_vars_t *v); + void (*parameters)(const stp_vars_t *v, const char *name, + stp_parameter_t *); + void (*media_size)(const stp_vars_t *v, stp_dimension_t *width, + stp_dimension_t *height); + void (*imageable_area)(const stp_vars_t *v, stp_dimension_t *left, + stp_dimension_t *right, stp_dimension_t *bottom, + stp_dimension_t *top); + void (*maximum_imageable_area)(const stp_vars_t *v, stp_dimension_t *left, + stp_dimension_t *right, stp_dimension_t *bottom, + stp_dimension_t *top); + void (*limit)(const stp_vars_t *v, stp_dimension_t *max_width, + stp_dimension_t *max_height, stp_dimension_t *min_width, + stp_dimension_t *min_height); + int (*print)(const stp_vars_t *v, stp_image_t *image); + void (*describe_resolution)(const stp_vars_t *v, stp_resolution_t *x, + stp_resolution_t *y); + const char *(*describe_output)(const stp_vars_t *v); + int (*verify)(stp_vars_t *v); + int (*start_job)(const stp_vars_t *v, stp_image_t *image); + int (*end_job)(const stp_vars_t *v, stp_image_t *image); + stp_string_list_t *(*get_external_options)(const stp_vars_t *v); + const stp_papersize_t *(*describe_papersize)(const stp_vars_t *v, + const char *name); +} stp_printfuncs_t; + +typedef struct stp_family +{ + const stp_printfuncs_t *printfuncs; /* printfuncs for the printer */ + stp_list_t *printer_list; /* list of printers */ +} stp_family_t; + +extern int stpi_family_register(stp_list_t *family); +extern int stpi_family_unregister(stp_list_t *family); + + +/* + * Paper size functions + */ + +typedef stp_list_t stp_papersize_list_t; +typedef stp_list_item_t stp_papersize_list_item_t; +#define stpi_papersize_list_get_start stp_list_get_start +#define stpi_papersize_list_get_end stp_list_get_end +#define stpi_paperlist_item_next stp_list_item_next +#define stpi_paperlist_item_prev stp_list_item_prev +#define stpi_paperlist_item_get_data(item) (stp_papersize_t *) (stp_list_item_get_data((item))) + +/** + * Get a named list of paper sizes + * @param name the list of paper sizes to find + * @param file name of the file to load (relative to $STP_XML_PATH) + * if the list does not exist. Empty filename indicates that the system + * should identify the file; NULL indicates that the list should not be + * created if it does not exist. + * @returns a static pointer to the papersize list, or NULL on failure + */ +extern const stp_papersize_list_t *stpi_get_papersize_list_named(const char *name, + const char *file); + +/** + * Create a new list of paper sizes without loading from a file. + * @param name the list of paper sizes to create + * @returns a static pointer to the (mutable) papersize list, + * or NULL if the list already exists + */ +extern stp_papersize_list_t *stpi_new_papersize_list(const char *name); + +/** + * Find an existing papersize list, if it exists + * @param name the list of paper sizes to find + * @returns a static pointer to the (mutable) papersize list, + * or NULL if the list does not exist + */ +extern stp_papersize_list_t *stpi_find_papersize_list_named(const char *name); + +/** + * Get the standard papersize list. + * @returns a static const pointer to the standard paper list. + */ +extern const stp_papersize_list_t *stpi_get_standard_papersize_list(void); + +/** + * Create and return a new paper list + * @returns a pointer to the new paper list + */ +extern stp_papersize_list_t *stpi_create_papersize_list(void); + +/** + * Get a papersize by its name from a list of papersizes Paper sizes + * @param list the list of papers to search + * @param name the name of the paper to search for + * @returns a static pointer to the papersize, or NULL on failure. + */ +extern const stp_papersize_t *stpi_get_papersize_by_name(const stp_papersize_list_t *list, + const char *name); + +/** + * Dispatch to printer-specific call to describe paper size + * @param v the Gutenprint vars object + * @param name the name of the paper size + * @returns a static pointer to the papersize, or NULL on failure. + */ +extern const stp_papersize_t *stpi_printer_describe_papersize(const stp_vars_t *v, + const char *name); + + +/** + * Get a papersize by its name from the standard list of papersizes + * @param v the Gutenprint vars object + * @param name the name of the paper size + * @returns a static pointer to the papersize, or NULL on failure. + */ +extern const stp_papersize_t *stpi_standard_describe_papersize(const stp_vars_t *v, + const char *name); + +/** + * Add a new papersize to a list + * @param list the name of the list to search + * @param papersize the stp_papersize_t to add + * @returns 1 on success, 0 on failure (e. g. already exists) + */ +extern int stpi_papersize_create(stp_papersize_list_t *list, + stp_papersize_t *p); + +/** + * Get a papersize by its name from a list + * @param list the name of the list to search + * @param name the name of the paper size + * @returns a static pointer to the papersize, or NULL on failure. + */ +extern const stp_papersize_t *stpi_get_listed_papersize(const char *list, + const char *name); + +/** + * Get the number of available papersizes. + * @param list the paper size list + * @returns the number of papersizes. + */ +extern int stpi_papersize_count(const stp_list_t *paper_size_list); + +/** + * Get a papersize by size. + * The nearest available size to the size requested will be found. + * Only paper sizes within 5 points of width and height will be considered. + * @param v the Gutenprint vars object + * @param length the length of the paper. + * @param width the width of the paper + * @returns a static pointer to the papersize, or NULL on failure. + */ +extern const stp_papersize_t *stpi_get_papersize_by_size(const stp_papersize_list_t *l, + stp_dimension_t length, + stp_dimension_t width); + +/** + * Get a papersize by size if an exact match is found. + * @param v the Gutenprint vars object + * @param length the length of the paper. + * @param width the width of the paper + * @returns a static pointer to the papersize, or NULL on failure. + */ +extern const stp_papersize_t *stpi_get_papersize_by_size_exact(const stp_papersize_list_t *l, + stp_dimension_t length, + stp_dimension_t width); + +/** + * Check for duplicate printers. Abort if any duplicates are found. + */ +extern void stpi_find_duplicate_printers(void); + +extern time_t stpi_time(time_t *t); + #define CAST_IS_SAFE GCC_DIAG_OFF(cast-qual) #define CAST_IS_UNSAFE GCC_DIAG_ON(cast-qual) diff --git a/src/main/image.c b/src/main/image.c index 3033da9..885ef6b 100644 --- a/src/main/image.c +++ b/src/main/image.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H diff --git a/src/main/libgutenprint.sym b/src/main/libgutenprint.sym index 702349a..31bb143 100644 --- a/src/main/libgutenprint.sym +++ b/src/main/libgutenprint.sym @@ -3,6 +3,7 @@ stp_allocate_component_data stp_array_copy stp_array_create stp_array_create_copy +stp_array_create_from_file stp_array_create_from_xmltree stp_array_destroy stp_array_get_data @@ -12,34 +13,55 @@ stp_array_get_size stp_array_set_data stp_array_set_point stp_array_set_size +stp_array_write +stp_array_write_string stp_asprintf +stp_binary_age stp_catprintf stp_channel_add stp_channel_convert +stp_channel_get_black_channel +stp_channel_get_curve +stp_channel_get_cutoff_adjustment +stp_channel_get_density_adjustment +stp_channel_get_gcr_curve +stp_channel_get_gloss_channel +stp_channel_get_gloss_limit +stp_channel_get_ink_limit stp_channel_get_input stp_channel_get_output +stp_channel_get_output_8bit +stp_channel_get_value stp_channel_initialize stp_channel_reset stp_channel_reset_channel stp_channel_set_black_channel +stp_channel_set_curve stp_channel_set_cutoff_adjustment stp_channel_set_density_adjustment +stp_channel_set_gcr_curve +stp_channel_set_gloss_channel +stp_channel_set_gloss_limit stp_channel_set_ink_limit stp_check_array_parameter stp_check_boolean_parameter stp_check_curve_parameter +stp_check_dimension_parameter stp_check_file_parameter stp_check_float_parameter stp_check_int_parameter +stp_check_parameter stp_check_raw_parameter stp_check_string_parameter stp_check_version stp_clear_array_parameter stp_clear_boolean_parameter stp_clear_curve_parameter +stp_clear_dimension_parameter stp_clear_file_parameter stp_clear_float_parameter stp_clear_int_parameter +stp_clear_parameter stp_clear_raw_parameter stp_clear_string_parameter stp_color_count @@ -53,6 +75,8 @@ stp_color_register stp_color_unregister stp_compute_tiff_linewidth stp_compute_uncompressed_linewidth +stp_copy_vars_from +stp_current_interface stp_curve_cache_copy stp_curve_cache_curve_data stp_curve_cache_curve_invalidate @@ -71,6 +95,7 @@ stp_curve_create_from_file stp_curve_create_from_stream stp_curve_create_from_string stp_curve_create_from_xmltree +stp_curve_create_reverse stp_curve_destroy stp_curve_free_curve_cache stp_curve_get_bounds @@ -94,6 +119,7 @@ stp_curve_interpolate_value stp_curve_is_piecewise stp_curve_resample stp_curve_rescale +stp_curve_reverse stp_curve_set_bounds stp_curve_set_data stp_curve_set_data_points @@ -110,10 +136,12 @@ stp_curve_set_ulong_data stp_curve_set_ushort_data stp_curve_write stp_curve_write_string +stp_data_path stp_default_media_size stp_default_settings stp_deprintf stp_describe_output +stp_describe_papersize stp_describe_parameter stp_describe_resolution stp_destroy_component_data @@ -152,8 +180,6 @@ stp_end_job stp_eprintf stp_erprintf stp_erputc -stp_family_register -stp_family_unregister stp_fill_parameter_settings stp_fill_tiff stp_fill_uncompressed @@ -161,7 +187,12 @@ stp_find_standard_dither_array stp_flush_all stp_flush_debug_messages stp_fold +stp_fold_3bit +stp_fold_3bit_323 +stp_fold_4bit +stp_fold_8bit stp_free +stp_generate_path stp_get_array_parameter stp_get_array_parameter_active stp_get_boolean_parameter @@ -174,9 +205,12 @@ stp_get_component_data stp_get_curve_parameter stp_get_curve_parameter_active stp_get_debug_level +stp_get_dimension_parameter +stp_get_dimension_parameter_active stp_get_driver stp_get_errdata stp_get_errfunc +stp_get_external_options stp_get_file_parameter stp_get_file_parameter_active stp_get_float_parameter @@ -190,29 +224,31 @@ stp_get_lineactive_by_pass stp_get_linebases_by_pass stp_get_linecount_by_pass stp_get_lineoffsets_by_pass +stp_get_maximum_imageable_area stp_get_media_size stp_get_model_id stp_get_outdata stp_get_outfunc stp_get_page_height stp_get_page_width -stp_get_papersize_by_index -stp_get_papersize_by_name -stp_get_papersize_by_size +stp_get_parameter_active stp_get_parameter_list stp_get_pass_by_pass stp_get_printer +stp_get_printer_by_device_id stp_get_printer_by_driver stp_get_printer_by_index stp_get_printer_by_long_name stp_get_printer_index_by_driver stp_get_raw_parameter stp_get_raw_parameter_active +stp_get_release_version stp_get_size_limit stp_get_string_parameter stp_get_string_parameter_active stp_get_top stp_get_verified +stp_get_version stp_get_width stp_image_conclude stp_image_get_appname @@ -225,10 +261,16 @@ stp_init stp_init_debug_messages stp_initialize_printer_defaults stp_initialize_weave -stp_known_papersizes +stp_interface_age +stp_list_array_parameters +stp_list_boolean_parameters stp_list_copy stp_list_create +stp_list_curve_parameters stp_list_destroy +stp_list_dimension_parameters +stp_list_file_parameters +stp_list_float_parameters stp_list_generic_parameters stp_list_get_copyfunc stp_list_get_end @@ -241,6 +283,7 @@ stp_list_get_long_namefunc stp_list_get_namefunc stp_list_get_sortfunc stp_list_get_start +stp_list_int_parameters stp_list_item_create stp_list_item_destroy stp_list_item_get_data @@ -248,14 +291,20 @@ stp_list_item_next stp_list_item_prev stp_list_item_set_data stp_list_node_free_data +stp_list_parameters +stp_list_raw_parameters stp_list_set_copyfunc stp_list_set_freefunc stp_list_set_long_namefunc stp_list_set_namefunc stp_list_set_sortfunc +stp_list_string_parameters +stp_major_version stp_malloc stp_malloc_func stp_merge_printvars +stp_micro_version +stp_minor_version stp_module_close stp_module_exit stp_module_get_class @@ -268,16 +317,20 @@ stp_mxmlElementGetAttr stp_mxmlElementSetAttr stp_mxmlFindElement stp_mxmlLoadFile +stp_mxmlLoadFromFile stp_mxmlLoadString +stp_mxmlNewDimension stp_mxmlNewElement stp_mxmlNewInteger stp_mxmlNewOpaque stp_mxmlNewReal stp_mxmlNewText +stp_mxmlParent stp_mxmlRemove stp_mxmlSaveAllocString stp_mxmlSaveFile stp_mxmlSaveString +stp_mxmlSaveToFile stp_mxmlWalkNext stp_mxmlWalkPrev stp_pack_tiff @@ -285,6 +338,9 @@ stp_pack_uncompressed stp_parameter_description_destroy stp_parameter_find stp_parameter_find_in_settings +stp_parameter_get_categories +stp_parameter_get_category +stp_parameter_has_category_value stp_parameter_list_add_param stp_parameter_list_append stp_parameter_list_copy @@ -292,11 +348,14 @@ stp_parameter_list_count stp_parameter_list_create stp_parameter_list_destroy stp_parameter_list_param +stp_path_find_file stp_path_search stp_path_split stp_print stp_printer_describe_parameter +stp_printer_get_comment stp_printer_get_defaults +stp_printer_get_device_id stp_printer_get_driver stp_printer_get_family stp_printer_get_long_name @@ -304,15 +363,26 @@ stp_printer_get_manufacturer stp_printer_get_model stp_printer_list_parameters stp_printer_model_count +stp_prtraw stp_prune_inactive_options stp_put16_be stp_put16_le stp_put32_be stp_put32_le stp_putc +stp_putraw stp_puts +stp_rawtoxmlstr stp_read_and_compose_curves stp_realloc +stp_refcache_add_item +stp_refcache_create +stp_refcache_destroy +stp_refcache_find_item +stp_refcache_list_cache_items +stp_refcache_list_caches +stp_refcache_remove_item +stp_refcache_replace_item stp_register_xml_parser stp_register_xml_preload stp_scale_float_parameter @@ -321,6 +391,7 @@ stp_sequence_copy stp_sequence_create stp_sequence_create_copy stp_sequence_create_from_xmltree +stp_sequence_create_reverse stp_sequence_destroy stp_sequence_get_bounds stp_sequence_get_data @@ -334,6 +405,7 @@ stp_sequence_get_size stp_sequence_get_uint_data stp_sequence_get_ulong_data stp_sequence_get_ushort_data +stp_sequence_reverse stp_sequence_set_bounds stp_sequence_set_data stp_sequence_set_float_data @@ -357,6 +429,7 @@ stp_set_curve_parameter_active stp_set_default_array_parameter stp_set_default_boolean_parameter stp_set_default_curve_parameter +stp_set_default_dimension_parameter stp_set_default_file_parameter stp_set_default_file_parameter_n stp_set_default_float_parameter @@ -364,6 +437,8 @@ stp_set_default_int_parameter stp_set_default_raw_parameter stp_set_default_string_parameter stp_set_default_string_parameter_n +stp_set_dimension_parameter +stp_set_dimension_parameter_active stp_set_driver stp_set_driver_n stp_set_errdata @@ -382,7 +457,9 @@ stp_set_outfunc stp_set_output_codeset stp_set_page_height stp_set_page_width +stp_set_parameter_active stp_set_printer_defaults +stp_set_printer_defaults_soft stp_set_raw_parameter stp_set_raw_parameter_active stp_set_string_parameter @@ -391,11 +468,13 @@ stp_set_string_parameter_n stp_set_top stp_set_verified stp_set_width +stp_split stp_split_2 stp_split_4 stp_start_job stp_strdup stp_string_list_add_string +stp_string_list_add_string_unsafe stp_string_list_count stp_string_list_create stp_string_list_create_copy @@ -407,6 +486,9 @@ stp_string_list_param stp_string_list_remove_string stp_strlen stp_strndup +stp_strtoxmlstr +stp_unpack +stp_unpack_16 stp_unpack_2 stp_unpack_4 stp_unpack_8 @@ -415,26 +497,40 @@ stp_unregister_xml_preload stp_vars_copy stp_vars_create stp_vars_create_copy +stp_vars_create_from_xmltree +stp_vars_create_from_xmltree_ref stp_vars_destroy +stp_vars_fill_from_xmltree +stp_vars_fill_from_xmltree_ref +stp_vars_print_error stp_verify stp_verify_parameter stp_verify_printer_params stp_weave_parameters_by_row +stp_write_raw stp_write_weave stp_xml_exit +stp_xml_free_parsed_file stp_xml_get_node stp_xml_init stp_xml_init_defaults stp_xml_parse_file +stp_xml_parse_file_from_path +stp_xml_parse_file_from_path_safe +stp_xml_parse_file_from_path_uncached +stp_xml_parse_file_from_path_uncached_safe stp_xml_parse_file_named stp_xml_preinit stp_xmldoc_create_generic stp_xmlstrtod +stp_xmlstrtodim stp_xmlstrtol +stp_xmlstrtoraw stp_xmlstrtoul stp_xmltree_create_from_array stp_xmltree_create_from_curve stp_xmltree_create_from_sequence +stp_xmltree_create_from_vars stp_zalloc stp_zfwrite stp_zprintf diff --git a/src/main/module.c b/src/main/module.c index 5d223bf..89f395a 100644 --- a/src/main/module.c +++ b/src/main/module.c @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H @@ -31,6 +30,7 @@ #include <libgen.h> #include <errno.h> #include <unistd.h> +#include <sys/param.h> typedef struct stpi_internal_module_class @@ -46,10 +46,13 @@ static int stp_module_register(stp_module_t *module); static void *stp_dlsym(void *handle, const char *symbol, const char *modulename); #endif -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-const-variable" +#ifdef __GNUC__ +#define UNUSED __attribute__ ((unused)) +#else +#define UNUSED +#endif -static const stpi_internal_module_class_t module_classes[] = +static const stpi_internal_module_class_t UNUSED module_classes[] = { {STP_MODULE_CLASS_MISC, N_("Miscellaneous (unclassified)")}, {STP_MODULE_CLASS_FAMILY, N_("Family driver")}, @@ -57,7 +60,6 @@ static const stpi_internal_module_class_t module_classes[] = {STP_MODULE_CLASS_DITHER, N_("Dither algorithm")}, {STP_MODULE_CLASS_INVALID, NULL} /* Must be last */ }; -#pragma GCC diagnostic pop #if !defined(MODULE) extern stp_module_t print_canon_LTX_stp_module_data; @@ -317,6 +319,13 @@ static int stp_module_register(stp_module_t *module /* Module to register */) if (stp_list_item_create(module_list, NULL, module)) return 1; + if (module->class == STP_MODULE_CLASS_FAMILY) + { + char buf[MAXPATHLEN+1]; + (void) snprintf(buf, MAXPATHLEN, "printers/%s.xml", module->name); + stp_deprintf(STP_DBG_MODULE, "stp-module: attempting to load: %s\n", buf); + stp_xml_parse_file_named(buf); + } stp_deprintf(STP_DBG_MODULE, "stp-module: register: %s\n", module->name); return 0; } @@ -347,6 +356,7 @@ int stp_module_init(void) } module_item = stp_list_item_next(module_item); } + stpi_find_duplicate_printers(); return 0; } diff --git a/src/main/mxml-node.c b/src/main/mxml-node.c index b050fe2..176c2e0 100644 --- a/src/main/mxml-node.c +++ b/src/main/mxml-node.c @@ -240,6 +240,15 @@ stp_mxmlDelete(stp_mxml_node_t *node) /* I - Node to delete */ free(node); } +/* + * 'stp_mxmlParent()' - Return the parent of a node or NULL if none. + */ + +stp_mxml_node_t * +stp_mxmlParent(stp_mxml_node_t *node) /* I - node to return parent from */ +{ + return node->parent; +} /* * 'stp_mxmlNewElement()' - Create a new element node. diff --git a/src/main/path.c b/src/main/path.c index 817874c..8a0ec1b 100644 --- a/src/main/path.c +++ b/src/main/path.c @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #include <gutenprint/gutenprint.h> @@ -148,23 +147,29 @@ stpi_path_check(const struct dirent *module, /* File to check */ } stp_list_t * -stpi_data_path(void) +stp_generate_path(const char *path) { stp_list_t *dir_list; /* List of directories to scan */ if (!(dir_list = stp_list_create())) return NULL; stp_list_set_freefunc(dir_list, stp_list_node_free_data); + stp_path_split(dir_list, path); + return dir_list; +} + +stp_list_t * +stp_data_path(void) +{ if (getenv("STP_DATA_PATH")) - stp_path_split(dir_list, getenv("STP_DATA_PATH")); + return stp_generate_path(getenv("STP_DATA_PATH")); else - stp_path_split(dir_list, PKGXMLDATADIR); - return dir_list; + return stp_generate_path(PKGXMLDATADIR); } stp_list_t * stpi_list_files_on_data_path(const char *name) { - stp_list_t *dir_list = stpi_data_path(); /* List of directories to scan */ + stp_list_t *dir_list = stp_data_path(); /* List of directories to scan */ stp_list_t *file_list = stp_path_search(dir_list, name); stp_list_destroy(dir_list); return file_list; @@ -175,7 +180,7 @@ stpi_list_files_on_data_path(const char *name) */ char * stpi_path_merge(const char *path, /* Path */ - const char *file) /* Filename */ + const char *file) /* Filename */ { char *filename; /* Filename to return */ int namelen = strlen(path) + strlen(file) + 2; @@ -187,6 +192,38 @@ stpi_path_merge(const char *path, /* Path */ return filename; } +/* + * Find the first occurrence of <file> on <path>. + * File must be a plain file and readable. + * Return value must be freed + */ +char * +stp_path_find_file(const char *path, /* Path, or NULL for STP_DATA_PATH */ + const char *file) /* File/relative pathname */ +{ + stp_list_t *path_to_search; + stp_list_item_t *dir; + if (path) + path_to_search = stp_generate_path(path); + else + path_to_search = stp_data_path(); + dir = stp_list_get_start(path_to_search); + while (dir) + { + struct stat modstat; /* stat() output */ + const char *check_path = (const char *) stp_list_item_get_data(dir); + char *filename = stpi_path_merge(check_path, file); + if (!stat(filename, &modstat) && S_ISREG(modstat.st_mode)) + { + stp_list_destroy(path_to_search); + return filename; + } + stp_free(filename); + dir = stp_list_item_next(dir); + } + stp_list_destroy(path_to_search); + return NULL; +} /* * Split a PATH-type string (colon-delimited) into separate diff --git a/src/main/print-canon.c b/src/main/print-canon.c index 4405fae..6ba401a 100644 --- a/src/main/print-canon.c +++ b/src/main/print-canon.c @@ -19,8 +19,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -259,18 +258,18 @@ typedef struct double cd_outer_radius; } canon_privdata_t; -const canon_modeuse_t* select_media_modes(stp_vars_t *v, const canon_paper_t* media_type,const canon_modeuselist_t* mlist); -int compare_mode_valid(stp_vars_t *v,const canon_mode_t* mode,const canon_modeuse_t* muse, const canon_modeuselist_t* mlist); -const canon_mode_t* suitable_mode_monochrome(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,int quality,const char *duplex_mode); -const canon_mode_t* find_first_matching_mode_monochrome(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,const char *duplex_mode); -const canon_mode_t* find_first_matching_mode(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,const char *duplex_mode); -const canon_mode_t* suitable_mode_color(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,int quality,const char *duplex_mode); -const canon_mode_t* find_first_matching_mode_color(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,const char *duplex_mode); -const canon_mode_t* suitable_mode_photo(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,int quality,const char *duplex_mode); -const canon_mode_t* find_first_matching_mode_photo(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,const char *duplex_mode); -const canon_mode_t* suitable_mode_general(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,int quality,const char *duplex_mode); -const char* find_ink_type(stp_vars_t *v,const canon_mode_t* mode,const char *printing_mode); -const canon_mode_t* canon_check_current_mode(stp_vars_t *v); +static const canon_modeuse_t* select_media_modes(stp_vars_t *v, const canon_paper_t* media_type,const canon_modeuselist_t* mlist); +static int compare_mode_valid(stp_vars_t *v,const canon_mode_t* mode,const canon_modeuse_t* muse, const canon_modeuselist_t* mlist); +static const canon_mode_t* suitable_mode_monochrome(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,int quality,const char *duplex_mode); +static const canon_mode_t* find_first_matching_mode_monochrome(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,const char *duplex_mode); +static const canon_mode_t* find_first_matching_mode(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,const char *duplex_mode); +static const canon_mode_t* suitable_mode_color(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,int quality,const char *duplex_mode); +static const canon_mode_t* find_first_matching_mode_color(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,const char *duplex_mode); +static const canon_mode_t* suitable_mode_photo(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,int quality,const char *duplex_mode); +static const canon_mode_t* find_first_matching_mode_photo(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,const char *duplex_mode); +static const canon_mode_t* suitable_mode_general(stp_vars_t *v,const canon_modeuse_t* muse,const canon_cap_t *caps,int quality,const char *duplex_mode); +static const char* find_ink_type(stp_vars_t *v,const canon_mode_t* mode,const char *printing_mode); +static const canon_mode_t* canon_check_current_mode(stp_vars_t *v); static void canon_write_line(stp_vars_t *v); @@ -547,6 +546,8 @@ static const char* canon_families[] = { "PIXMA MPC", /* 16 */ "PIXMA G", /* 17 */ "PIXMA TS", /* 18 */ + "PIXMA TR", /* 19 */ + "PIXMA XK", /* 20 */ }; /* canon model ids look like the following @@ -2555,15 +2556,17 @@ canon_printhead_colors(const stp_vars_t*v) static unsigned char canon_size_type(const stp_vars_t *v, const canon_cap_t * caps) { - const stp_papersize_t *pp = stp_get_papersize_by_size(stp_get_page_height(v), + const stp_papersize_list_t *list = stpi_get_standard_papersize_list(); + const stp_papersize_t *pp = stpi_get_papersize_by_size(list, + stp_get_page_height(v), stp_get_page_width(v)); - stp_deprintf(STP_DBG_CANON,"canon: entered canon_size_type\n"); + stp_dprintf(STP_DBG_CANON, v,"canon: entered canon_size_type\n"); if (pp) { const char *name = pp->name; - stp_deprintf(STP_DBG_CANON,"canon: in canon_size_type is pp->name: '%s'\n",name); + stp_dprintf(STP_DBG_CANON, v,"canon: in canon_size_type is pp->name: '%s'\n",name); /* used internally: do not translate */ /* built ins: Japanese driver notation */ if (!strcmp(name,"A5")) return 0x01; @@ -2664,9 +2667,9 @@ canon_size_type(const stp_vars_t *v, const canon_cap_t * caps) /* custom */ - stp_deprintf(STP_DBG_CANON,"canon: Unknown paper size '%s' - using custom\n",name); + stp_dprintf(STP_DBG_CANON, v,"canon: Unknown paper size '%s' - using custom\n",name); } else { - stp_deprintf(STP_DBG_CANON,"canon: Couldn't look up paper size %fx%f - " + stp_dprintf(STP_DBG_CANON, v,"canon: Couldn't look up paper size %fx%f - " "using custom\n",stp_get_page_height(v), stp_get_page_width(v)); } return 0; @@ -2861,7 +2864,6 @@ canon_parameters(const stp_vars_t *v, const char *name, { const char* input_slot = stp_get_string_parameter(v, "InputSlot"); unsigned int height_limit, width_limit; - int papersizes = stp_known_papersizes(); description->bounds.str = stp_string_list_create(); width_limit = caps->max_width; @@ -2875,17 +2877,23 @@ canon_parameters(const stp_vars_t *v, const char *name, stp_string_list_add_string (description->bounds.str, "CDCustom", _("CD - Custom")); }else{ - for (i = 0; i < papersizes; i++) { - const stp_papersize_t *pt = stp_get_papersize_by_index(i); - if (pt->paper_size_type != PAPERSIZE_TYPE_STANDARD && - pt->paper_size_type != PAPERSIZE_TYPE_ENVELOPE) - continue; - if (strlen(pt->name) > 0 && - pt->width <= width_limit && pt->height <= height_limit){ - stp_string_list_add_string(description->bounds.str, - pt->name, gettext(pt->text)); - } - } + const stp_papersize_list_t *paper_sizes = + stpi_get_standard_papersize_list(); + const stp_papersize_list_item_t *ptli = + stpi_papersize_list_get_start(paper_sizes); + while (ptli) + { + const stp_papersize_t *pt = stpi_paperlist_item_get_data(ptli); + if (pt->paper_size_type == PAPERSIZE_TYPE_STANDARD || + pt->paper_size_type == PAPERSIZE_TYPE_ENVELOPE) { + if (strlen(pt->name) > 0 && + pt->width <= width_limit && pt->height <= height_limit){ + stp_string_list_add_string(description->bounds.str, + pt->name, gettext(pt->text)); + } + } + ptli = stpi_paperlist_item_next(ptli); + } } description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; @@ -2959,7 +2967,7 @@ canon_parameters(const stp_vars_t *v, const char *name, #endif stp_string_list_add_string(description->bounds.str, caps->modelist->modes[i].name, gettext(caps->modelist->modes[i].text)); - stp_deprintf(STP_DBG_CANON,"supports mode '%s'\n", + stp_dprintf(STP_DBG_CANON, v,"supports mode '%s'\n", caps->modelist->modes[i].name); if(i == caps->modelist->default_mode) description->deflt.str=caps->modelist->modes[i].name; @@ -3310,7 +3318,7 @@ internal_imageable_area(const stp_vars_t *v, /* I */ const canon_cap_t * caps= canon_get_model_capabilities(v); if (media_size) - pt = stp_get_papersize_by_name(media_size); + pt = stp_describe_papersize(v, media_size); if(input_slot && !strcmp(input_slot,"CD")) cd = 1; @@ -3473,7 +3481,7 @@ canon_cmd(const stp_vars_t *v, /* I - the printer */ stp_free(buffer); } -#define PUT(WHAT,VAL,RES) stp_deprintf(STP_DBG_CANON,"canon: "WHAT\ +#define PUT(V,WHAT,VAL,RES) stp_dprintf(STP_DBG_CANON,V,"canon: "WHAT \ " is %04x =% 5d = %f\" = %f mm\n",(VAL),(VAL),(VAL)/(1.*RES),(VAL)/(RES/25.4)) #define ESC28 "\033\050" @@ -3573,10 +3581,24 @@ canon_init_setColor(const stp_vars_t *v, const canon_privdata_t *init) if (init->used_inks == CANON_INK_K) arg_63[0]|= 0x01; /* PRINT_COLOUR */ - arg_63[1] = ((init->pt ? init->pt->media_code_c : 0) << 4) /* PRINT_MEDIA */ - + 1; /* hardcode to High quality for now */ /* PRINT_QUALITY */ - canon_cmd(v,ESC28,0x63, 2, arg_63[0], arg_63[1]); +// if ( (!strcmp(init->caps->name,"85")) || (!strcmp(init->caps->name,"1000")) ) /* BJC-85, BJC-1000 */ +// arg_63[1] = (init->pt) ? init->pt->media_code_c : 0; /* print media type */ +// else /* original, not sure which models follow this at all */ + arg_63[1] = ((init->pt ? init->pt->media_code_c : 0) << 4) /* PRINT_MEDIA */ + + 1; /* hardcode to High quality for now */ /* PRINT_QUALITY */ + + if (!strcmp(init->caps->name,"2100")) { /* BJC-2100: ESC (c command length is 3 */ + if (!strcmp(init->mode->name,"720x360dpi")) + arg_63[1] = 0x00; + else if (!strcmp(init->mode->name,"360x360dpi_draft")) + arg_63[1] = 0x00; + else if (!strcmp(init->mode->name,"180x180dpi")) + arg_63[1] = 0x02; + /* else keep at 01 hard-coded as above - logic unknown */ + canon_cmd(v,ESC28,0x63, 3, arg_63[0], arg_63[1], 0x00); + } else /* length 2 in legacy code */ + canon_cmd(v,ESC28,0x63, 2, arg_63[0], arg_63[1]); break; case 2: /* are any models using this? */ @@ -3694,7 +3716,19 @@ canon_init_setTray(const stp_vars_t *v, const canon_privdata_t *init) if ( (!strcmp(init->caps->name,"PIXMA MP710")) || (!strcmp(init->caps->name,"PIXMA MP740")) ) arg_6c_3 = 0x10; - if (init->pt) arg_6c_2 = init->pt->media_code_l; + switch ( init->caps->model_id ) { + case 0: + break; + case 1: + if (init->pt) arg_6c_2 = ((init->pt ? init->pt->media_code_l : 0) << 4); /* PRINT_MEDIA */ + break; + case 2: + break; + case 3: + if (init->pt) arg_6c_2 = init->pt->media_code_l; /* PRINT_MEDIA */ + break; + } + /* select between length 2 and 3 byte variations of command */ /*if(init->caps->model_id >= 3)*/ if(init->caps->ESC_l_len == 3) @@ -4426,7 +4460,7 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init) return; /* if (media_size) - pt = stp_get_papersize_by_name(media_size); */ + pt = stp_describe_papersize(v, media_size); */ stp_default_media_size(v, &width, &length); if (tray_upper || tray_lower) tray_user_select=1; @@ -4440,7 +4474,7 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init) user_ESCP_9=0x00; /* fall-through setting, but this value is not used */ arg_ESCP_1 = (init->pt) ? canon_size_type(v,init->caps): 0x03; /* media size: set to A4 size as default */ - stp_deprintf(STP_DBG_CANON,"canon: ESCP (P code read paper size, resulting arg_ESCP_1: '%x'\n",arg_ESCP_1); + stp_dprintf(STP_DBG_CANON, v,"canon: ESCP (P code read paper size, resulting arg_ESCP_1: '%x'\n",arg_ESCP_1); arg_ESCP_2 = (init->pt) ? init->pt->media_code_P: 0x00; /* media type: set to plain as default */ arg_ESCP_5 = 0x01; /* default for portrait orientation */ arg_ESCP_6 = 0x00; /* default for portrait orientation */ @@ -4589,7 +4623,7 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init) if ( !(strcmp(init->caps->name,"PIXMA TS8000")) ) { arg_ESCP_1 = 0xbc; } - + } } /* 850i: CD Tray custom: none --- no ESC (P */ @@ -4876,7 +4910,7 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init) canon_cmd( v,ESC28,0x50,2,0x00,arg_ESCP_1 ); } else /* error in definition */ - stp_deprintf(STP_DBG_CANON,"SEVERE BUG IN print-canon.c::canon_init_setESC_P() " + stp_dprintf(STP_DBG_CANON, v,"SEVERE BUG IN print-canon.c::canon_init_setESC_P() " "ESC_P_len=%d!!\n",init->caps->ESC_P_len); } @@ -5054,7 +5088,7 @@ canon_init_setX72(const stp_vars_t *v, const canon_privdata_t *init) canon_cmd(v,ESC28,0x72, 3, 0x63, 1, 0); /* whatever for - S200 needs it */ /* probably to set the print direction of the head */ } - else if ( !(strcmp(init->caps->name,"S820")) || !(strcmp(init->caps->name,"S900")) || !(strcmp(init->caps->name,"i950")) || !(strcmp(init->caps->name,"i960")) || !(strcmp(init->caps->name,"i9100")) || !(strcmp(init->caps->name,"i9900")) || !(strcmp(init->caps->name,"PIXMA iP7100")) || !(strcmp(init->caps->name,"PIXMA iP8100")) || !(strcmp(init->caps->name,"PIXMA iP8500")) || !(strcmp(init->caps->name,"PIXMA iP8600")) || !(strcmp(init->caps->name,"PIXMA iP9910")) || !(strcmp(init->caps->name,"PIXMA MP900")) || !(strcmp(init->caps->name,"PIXMA Pro9000")) || !(strcmp(init->caps->name,"PIXMA Pro9002")) || !(strcmp(init->caps->name,"PIXMA Pro9500")) || !(strcmp(init->caps->name,"PIXMA Pro9502")) ) { + else if ( !(strcmp(init->caps->name,"S820")) || !(strcmp(init->caps->name,"S900")) || !(strcmp(init->caps->name,"S9000")) || !(strcmp(init->caps->name,"i950")) || !(strcmp(init->caps->name,"i960")) || !(strcmp(init->caps->name,"i9100")) || !(strcmp(init->caps->name,"i9900")) || !(strcmp(init->caps->name,"PIXMA iP7100")) || !(strcmp(init->caps->name,"PIXMA iP8100")) || !(strcmp(init->caps->name,"PIXMA iP8500")) || !(strcmp(init->caps->name,"PIXMA iP8600")) || !(strcmp(init->caps->name,"PIXMA iP9910")) || !(strcmp(init->caps->name,"PIXMA MP900")) || !(strcmp(init->caps->name,"PIXMA Pro9000")) || !(strcmp(init->caps->name,"PIXMA Pro9002")) || !(strcmp(init->caps->name,"PIXMA Pro9500")) || !(strcmp(init->caps->name,"PIXMA Pro9502")) ) { canon_cmd(v,ESC28,0x72, 2, 0x62, 0); /* 2 bytes */ } /* CD mode only */ @@ -5705,7 +5739,8 @@ static void setup_page(stp_vars_t* v,canon_privdata_t* privdata){ #if 0 /* needed in workaround for Oufuku Hagaki */ - const stp_papersize_t *pp = stp_get_papersize_by_size(stp_get_page_height(v), + const stp_papersize_t *pp = stpi_get_papersize_by_size(v, + stp_get_page_height(v), stp_get_page_width(v)); if (pp) @@ -5745,8 +5780,8 @@ static void setup_page(stp_vars_t* v,canon_privdata_t* privdata){ privdata->out_width = stp_get_width(v); /* check Epson: page_true_width */ privdata->out_height = stp_get_height(v); /* check Epson: page_true_height */ - stp_deprintf(STP_DBG_CANON,"stp_get_width: privdata->out_width is %i\n",privdata->out_width); - stp_deprintf(STP_DBG_CANON,"stp_get_height: privdata->out_height is %i\n",privdata->out_height); + stp_dprintf(STP_DBG_CANON, v,"stp_get_width: privdata->out_width is %i\n",privdata->out_width); + stp_dprintf(STP_DBG_CANON, v,"stp_get_height: privdata->out_height is %i\n",privdata->out_height); /* Don't use full bleed mode if the paper itself has a margin */ if (privdata->left > 0 || privdata->top > 0) @@ -6017,21 +6052,21 @@ canon_do_print(stp_vars_t *v, stp_image_t *image) * Convert image size to printer resolution... */ #if 0 - stp_deprintf(STP_DBG_CANON,"canon_do_print: unused image_width is %i pts(?)\n",image_width); + stp_dprintf(STP_DBG_CANON, v,"canon_do_print: unused image_width is %i pts(?)\n",image_width); #endif - stp_deprintf(STP_DBG_CANON,"canon_do_print: privdata.out_width is %i pts\n",privdata.out_width); - stp_deprintf(STP_DBG_CANON,"canon_do_print: privdata.out_height is %i pts\n",privdata.out_height); - stp_deprintf(STP_DBG_CANON,"canon_do_print: privdata.left is %i pts\n",privdata.left); + stp_dprintf(STP_DBG_CANON, v,"canon_do_print: privdata.out_width is %i pts\n",privdata.out_width); + stp_dprintf(STP_DBG_CANON, v,"canon_do_print: privdata.out_height is %i pts\n",privdata.out_height); + stp_dprintf(STP_DBG_CANON, v,"canon_do_print: privdata.left is %i pts\n",privdata.left); privdata.out_width = privdata.mode->xdpi * privdata.out_width / 72; privdata.out_height = privdata.mode->ydpi * privdata.out_height / 72; privdata.left = privdata.mode->xdpi * privdata.left / 72; - stp_deprintf(STP_DBG_CANON,"canon_do_print: privdata.out_width is %i dots\n",privdata.out_width); - stp_deprintf(STP_DBG_CANON,"canon_do_print: privdata.out_height is %i dots\n",privdata.out_height); - stp_deprintf(STP_DBG_CANON,"canon_do_print: privdata.left is %i dots\n",privdata.left); + stp_dprintf(STP_DBG_CANON, v,"canon_do_print: privdata.out_width is %i dots\n",privdata.out_width); + stp_dprintf(STP_DBG_CANON, v,"canon_do_print: privdata.out_height is %i dots\n",privdata.out_height); + stp_dprintf(STP_DBG_CANON, v,"canon_do_print: privdata.left is %i dots\n",privdata.left); - stp_deprintf(STP_DBG_CANON,"density is %f\n", + stp_dprintf(STP_DBG_CANON, v,"density is %f\n", stp_get_float_parameter(v, "Density")); /* @@ -6055,7 +6090,7 @@ canon_do_print(stp_vars_t *v, stp_image_t *image) stp_scale_float_parameter(v, "Gamma", 1.25); stp_scale_float_parameter( v, "Gamma", privdata.mode->gamma ); - stp_deprintf(STP_DBG_CANON,"density is %f\n", + stp_dprintf(STP_DBG_CANON, v,"density is %f\n", stp_get_float_parameter(v, "Density")); if(privdata.used_inks & CANON_INK_CMYK_MASK) @@ -6070,23 +6105,23 @@ canon_do_print(stp_vars_t *v, stp_image_t *image) privdata.length = (privdata.out_width + 7) / 8; - stp_deprintf(STP_DBG_CANON,"privdata.length is %i\n",privdata.length); - stp_deprintf(STP_DBG_CANON,"canon_do_print: privdata.num_channels is %i\n",privdata.num_channels); + stp_dprintf(STP_DBG_CANON, v,"privdata.length is %i\n",privdata.length); + stp_dprintf(STP_DBG_CANON, v,"canon_do_print: privdata.num_channels is %i\n",privdata.num_channels); stp_dither_init(v, image, privdata.out_width, privdata.mode->xdpi, privdata.mode->ydpi); - stp_deprintf(STP_DBG_CANON,"privdata.out_width is %i (after stp_dither_init)\n",privdata.out_width); - stp_deprintf(STP_DBG_CANON,"privdata.length is %i (after stp_dither_init)\n",privdata.length); - stp_deprintf(STP_DBG_CANON,"canon_do_print: privdata.num_channels is %i (after stp_dither_init)\n",privdata.num_channels); + stp_dprintf(STP_DBG_CANON, v,"privdata.out_width is %i (after stp_dither_init)\n",privdata.out_width); + stp_dprintf(STP_DBG_CANON, v,"privdata.length is %i (after stp_dither_init)\n",privdata.length); + stp_dprintf(STP_DBG_CANON, v,"canon_do_print: privdata.num_channels is %i (after stp_dither_init)\n",privdata.num_channels); canon_setup_channels(v,&privdata); - stp_deprintf(STP_DBG_CANON,"privdata.out_width is %i (after canon_setup_channels)\n",privdata.out_width); - stp_deprintf(STP_DBG_CANON,"privdata.length is %i (after canon_setup_channels)\n",privdata.length); - stp_deprintf(STP_DBG_CANON,"canon_do_print: privdata.num_channels is %i (after canon_setup_channels)\n",privdata.num_channels); + stp_dprintf(STP_DBG_CANON, v,"privdata.out_width is %i (after canon_setup_channels)\n",privdata.out_width); + stp_dprintf(STP_DBG_CANON, v,"privdata.length is %i (after canon_setup_channels)\n",privdata.length); + stp_dprintf(STP_DBG_CANON, v,"canon_do_print: privdata.num_channels is %i (after canon_setup_channels)\n",privdata.num_channels); - stp_deprintf(STP_DBG_CANON, + stp_dprintf(STP_DBG_CANON, v, "canon: driver will use colors %s\n",privdata.channel_order); /* Allocate compression buffer */ @@ -6134,9 +6169,9 @@ canon_do_print(stp_vars_t *v, stp_image_t *image) else privdata.physical_xdpi = 720; - stp_deprintf(STP_DBG_CANON,"canon: adjust leftskip: old=%d,\n", privdata.left); + stp_dprintf(STP_DBG_CANON, v,"canon: adjust leftskip: old=%d,\n", privdata.left); privdata.left = (int)( (float)privdata.left * (float)privdata.physical_xdpi / (float)privdata.mode->xdpi ); /* adjust left margin */ - stp_deprintf(STP_DBG_CANON,"canon: adjust leftskip: new=%d,\n", privdata.left); + stp_dprintf(STP_DBG_CANON, v,"canon: adjust leftskip: new=%d,\n", privdata.left); privdata.ncolors = 4; privdata.head_offset = stp_zalloc(sizeof(int) * privdata.ncolors); @@ -6180,7 +6215,7 @@ canon_do_print(stp_vars_t *v, stp_image_t *image) privdata.bidirectional = 1; /* 1: bidirectional; 0: unidirectional printing */ privdata.direction = 1; stp_allocate_component_data(v, "Driver", NULL, NULL, &privdata); - stp_deprintf(STP_DBG_CANON,"canon: initializing weaving: nozzles=%d, nozzle_separation=%d,\n" + stp_dprintf(STP_DBG_CANON, v,"canon: initializing weaving: nozzles=%d, nozzle_separation=%d,\n" "horizontal_passes=%d, vertical_passes=%d,vertical_oversample=%d,\n" "ncolors=%d, out_width=%d, out_height=%d\n" "weave_top=%d, weave_page_height=%d \n" @@ -6205,7 +6240,7 @@ canon_do_print(stp_vars_t *v, stp_image_t *image) canon_flush_pass, stp_fill_uncompressed, stp_pack_uncompressed, - stp_compute_uncompressed_linewidth); + stp_compute_tiff_linewidth); privdata.last_pass_offset = 0; if (stp_get_debug_level() & STP_DBG_CANON) { @@ -6327,7 +6362,7 @@ canon_do_print(stp_vars_t *v, stp_image_t *image) */ if (privdata.delay_max) { - stp_deprintf(STP_DBG_CANON,"\ncanon: flushing %d possibly delayed buffers\n", + stp_dprintf(STP_DBG_CANON, v,"\ncanon: flushing %d possibly delayed buffers\n", privdata.delay_max); for (y= 0; y<privdata.delay_max; y++) { @@ -6377,7 +6412,6 @@ canon_print(const stp_vars_t *v, stp_image_t *image) { int status; stp_vars_t *nv = stp_vars_create_copy(v); - stp_prune_inactive_options(nv); status = canon_do_print(nv, image); stp_vars_destroy(nv); return status; @@ -6397,7 +6431,8 @@ static const stp_printfuncs_t print_canon_printfuncs = stp_verify_printer_params, canon_start_job, canon_end_job, - NULL + NULL, + stpi_standard_describe_papersize }; static void @@ -6506,7 +6541,7 @@ static int canon_compress(stp_vars_t *v, canon_privdata_t *pd, unsigned char* li in_ptr[0] = 0; } else - stp_deprintf(STP_DBG_CANON,"SEVERE BUG IN print-canon.c::canon_write() " + stp_dprintf(STP_DBG_CANON, v,"SEVERE BUG IN print-canon.c::canon_write() " "bitoffset=%d!!\n",bitoffset); } @@ -6661,7 +6696,7 @@ canon_advance_paper(stp_vars_t *v, int advance) if ( advance > 0 ) { int a0, a1, a2, a3; - stp_deprintf(STP_DBG_CANON," --advance paper %d\n", advance); + stp_dprintf(STP_DBG_CANON, v," --advance paper %d\n", advance); a0 = advance & 0xff; a1 = (advance >> 8) & 0xff; a2 = (advance >> 16) & 0xff; @@ -6684,7 +6719,7 @@ canon_flush_pass(stp_vars_t *v, int passno, int vertical_subpass) int color, line, written = 0, linelength = 0, lines = 0; int idx[4]={3, 0, 1, 2}; /* color numbering is different between canon_write and weaving */ - stp_deprintf(STP_DBG_CANON,"canon_flush_pass: ----pass=%d,---- \n", passno); + stp_dprintf(STP_DBG_CANON, v,"canon_flush_pass: ----pass=%d,---- \n", passno); (pd->emptylines) = 0; for ( color = 0; color < pd->ncolors; color++ ) /* find max. linecount */ @@ -6695,7 +6730,7 @@ canon_flush_pass(stp_vars_t *v, int passno, int vertical_subpass) for ( line = 0; line < lines; line++ ) /* go through each nozzle f that pass */ { - stp_deprintf(STP_DBG_CANON," --line=%d\n", line); + stp_dprintf(STP_DBG_CANON, v," --line=%d\n", line); if ( written > 0 ) canon_cmd(v,ESC28,0x65, 2, 0, 1); /* go to next nozzle*/ @@ -6709,7 +6744,7 @@ canon_flush_pass(stp_vars_t *v, int passno, int vertical_subpass) if ( lineactive[0].v[color] > 0 ) { linelength = lineoffs[0].v[color] / linecount[0].v[color]; -/* stp_deprintf(STP_DBG_CANON,"canon_flush_pass: linelength=%d, bufs[0].v[color]=%p," +/* stp_dprintf(STP_DBG_CANON, v,"canon_flush_pass: linelength=%d, bufs[0].v[color]=%p," "bufs[0].v[color]+line * linelength=%p, empty=%d \n", linelength, bufs[0].v[color], bufs[0].v[color] + line * linelength, (pd->emptylines)); */ @@ -6721,7 +6756,7 @@ canon_flush_pass(stp_vars_t *v, int passno, int vertical_subpass) { pd->direction = (pd->direction +1) & 1; canon_set_X72(v, pd->direction); - stp_deprintf(STP_DBG_CANON," --set direction %d\n", pd->direction); + stp_dprintf(STP_DBG_CANON, v," --set direction %d\n", pd->direction); } } @@ -6730,7 +6765,7 @@ canon_flush_pass(stp_vars_t *v, int passno, int vertical_subpass) linelength, idx[color], &(pd->emptylines), pd->out_width, pd->left, pd->weave_bits[color],0); - if (written) stp_deprintf(STP_DBG_CANON," --written color %d,\n", color); + if (written) stp_dprintf(STP_DBG_CANON, v," --written color %d,\n", color); } } @@ -6745,7 +6780,7 @@ canon_flush_pass(stp_vars_t *v, int passno, int vertical_subpass) lineoffs[0].v[color] = 0; linecount[0].v[color] = 0; } - stp_deprintf(STP_DBG_CANON," --ended-- with empty=%d \n", (pd->emptylines)); + stp_dprintf(STP_DBG_CANON, v," --ended-- with empty=%d \n", (pd->emptylines)); } static stp_family_t print_canon_module_data = @@ -6758,14 +6793,14 @@ static stp_family_t print_canon_module_data = static int print_canon_module_init(void) { - return stp_family_register(print_canon_module_data.printer_list); + return stpi_family_register(print_canon_module_data.printer_list); } static int print_canon_module_exit(void) { - return stp_family_unregister(print_canon_module_data.printer_list); + return stpi_family_unregister(print_canon_module_data.printer_list); } diff --git a/src/main/print-canon.h b/src/main/print-canon.h index 0382446..b282991 100644 --- a/src/main/print-canon.h +++ b/src/main/print-canon.h @@ -17,8 +17,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifndef GUTENPRINT_INTERNAL_CANON_H @@ -666,8 +665,8 @@ static const unsigned char twelve2eight2[] = 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>"; +static 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>"; +static 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>"; #endif diff --git a/src/main/print-color.c b/src/main/print-color.c index 23ff8cb..793b402 100644 --- a/src/main/print-color.c +++ b/src/main/print-color.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -887,6 +886,8 @@ compute_gcr_curve(const stp_vars_t *vars) k_lower = stp_get_float_parameter(vars, "GCRLower"); if (stp_check_float_parameter(vars, "BlackTrans", STP_PARAMETER_DEFAULTED)) k_trans = stp_get_float_parameter(vars, "BlackTrans"); + if (k_lower >= 1) + return NULL; k_upper *= lut->steps; k_lower *= lut->steps; stp_dprintf(STP_DBG_LUT, vars, " k_lower %.3f\n", k_lower); @@ -1392,6 +1393,7 @@ stpi_compute_lut(stp_vars_t *v) { int i; lut_t *lut = (lut_t *)(stp_get_component_data(v, "Color")); + double app_gamma_scale = 4.0; stp_curve_t *curve; stp_dprintf(STP_DBG_LUT, v, "stpi_compute_lut\n"); @@ -1422,9 +1424,11 @@ stpi_compute_lut(stp_vars_t *v) if (stp_check_float_parameter(v, "AppGamma", STP_PARAMETER_ACTIVE)) lut->app_gamma = stp_get_float_parameter(v, "AppGamma"); + if (stp_check_float_parameter(v, "AppGammaScale", STP_PARAMETER_ACTIVE)) + app_gamma_scale = stp_get_float_parameter(v, "AppGammaScale"); if (stp_check_boolean_parameter(v, "SimpleGamma", STP_PARAMETER_ACTIVE)) lut->simple_gamma_correction = stp_get_boolean_parameter(v, "SimpleGamma"); - lut->screen_gamma = lut->app_gamma / 4.0; /* "Empirical" */ + lut->screen_gamma = lut->app_gamma / app_gamma_scale; /* "Empirical" */ curve = stp_curve_create_copy(color_curve_bounds); stp_curve_rescale(curve, 65535.0, STP_CURVE_COMPOSE_MULTIPLY, STP_CURVE_BOUNDS_RESCALE); @@ -1507,9 +1511,17 @@ stpi_color_traditional_init(stp_vars_t *v, size_t total_channel_bits; if (steps != 256 && steps != 65536) - return -1; + { + stp_eprintf(v, + "stpi_color_traditional_init: Invalid color steps %lu (must be 256 or 65536)\n", + (unsigned long) steps); + return -1; + } if (!channel_depth) - return -1; + { + stp_eprintf(v, "stpi_color_traditional_init: ChannelBitDepth not set\n"); + return -1; + } lut = allocate_lut(); lut->input_color_description = @@ -1519,6 +1531,7 @@ stpi_color_traditional_init(stp_vars_t *v, if (!lut->input_color_description || !lut->output_color_description) { + stp_eprintf(v, "stpi_color_traditional_init: input/output types not specified\n"); free_lut(lut); return -1; } @@ -1527,6 +1540,7 @@ stpi_color_traditional_init(stp_vars_t *v, { if (stp_verify_parameter(v, "STPIRawChannels", 1) != PARAMETER_OK) { + stp_eprintf(v, "stpi_color_traditional_init: raw printing requested but STPIRawChannels not set\n"); free_lut(lut); return -1; } diff --git a/src/main/print-dither-matrices.c b/src/main/print-dither-matrices.c index 021fa70..7047f5e 100644 --- a/src/main/print-dither-matrices.c +++ b/src/main/print-dither-matrices.c @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. * * Revision History: * @@ -33,6 +32,7 @@ #include <stdlib.h> #include <stdio.h> #include "dither-impl.h" +#include <sys/param.h> #ifdef __GNUC__ #define inline __inline__ @@ -580,7 +580,7 @@ stpi_dither_array_create_from_xmltree(stp_mxml_node_t *dm, int x, int y) /* Dith } /* Now read in the array */ - child = stp_mxmlFindElement(dm, dm, "array", NULL, NULL, STP_MXML_DESCEND); + child = stp_xml_get_node(dm, "array", NULL); if (child) return stp_array_create_from_xmltree(child); else @@ -665,8 +665,8 @@ stp_xml_get_dither_array(int x, int y) if (!cachedval) { - char buf[1024]; - (void) sprintf(buf, "dither-matrix-%dx%d.xml", x, y); + char buf[MAXPATHLEN+1]; + (void) snprintf(buf, MAXPATHLEN, "dither/matrix-%dx%d.xml", x, y); stp_xml_parse_file_named(buf); cachedval = stp_xml_dither_cache_get(x, y); if (cachedval == NULL || cachedval->filename == NULL) diff --git a/src/main/print-dpl.c b/src/main/print-dpl.c index e8f27e8..d4fe616 100644 --- a/src/main/print-dpl.c +++ b/src/main/print-dpl.c @@ -19,8 +19,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -567,7 +566,8 @@ static const int float_parameter_count = */ static const char * -dpl_val_to_string (int code, /* I: Code */ +dpl_val_to_string (const stp_vars_t *v, + int code, /* I: Code */ const dpl_t * options, /* I: Options */ int num_options) /* I: Num options */ { @@ -588,13 +588,14 @@ dpl_val_to_string (int code, /* I: Code */ } } - stp_deprintf (STP_DBG_DPL, "Code: %d, String: %s\n", code, string); + stp_dprintf (STP_DBG_DPL, v, "Code: %d, String: %s\n", code, string); return (string); } static const char * -dpl_val_to_text (int code, /* I: Code */ +dpl_val_to_text (const stp_vars_t *v, + int code, /* I: Code */ const dpl_t * options, /* I: Options */ int num_options) /* I: Num options */ { @@ -615,7 +616,7 @@ dpl_val_to_text (int code, /* I: Code */ } } - stp_deprintf (STP_DBG_DPL, "Code: %d, String: %s\n", code, string); + stp_dprintf (STP_DBG_DPL, v, "Code: %d, String: %s\n", code, string); return (string); } @@ -625,9 +626,10 @@ dpl_val_to_text (int code, /* I: Code */ */ static const dpl_cap_t * /* O: Capabilities */ -dpl_get_model_capabilities (int model) /* I: Model */ +dpl_get_model_capabilities (const stp_vars_t *v) /* I: Model */ { int i; + int model = stp_get_model_id(v); int models = sizeof (dpl_model_capabilities) / sizeof (dpl_cap_t); for (i = 0; i < models; i++) { @@ -636,7 +638,7 @@ dpl_get_model_capabilities (int model) /* I: Model */ return &(dpl_model_capabilities[i]); } } - stp_erprintf ("dpl: model %d not found in capabilities list.\n", model); + stp_eprintf (v, "dpl: model %d not found in capabilities list.\n", model); return &(dpl_model_capabilities[0]); } @@ -679,8 +681,7 @@ dpl_get_multiplier (const stp_vars_t * v) int multiplier; int i; int max_dpi; - int model = stp_get_model_id (v); - const dpl_cap_t *caps = dpl_get_model_capabilities (model); + const dpl_cap_t *caps = dpl_get_model_capabilities (v); for (i = 0; i < NUM_RESOLUTIONS; i++) { @@ -737,9 +738,9 @@ static const stp_param_string_t label_separator_types[] = { */ static int -dpl_papersize_valid (const stp_papersize_t * pt, int model) +dpl_papersize_valid (const stp_vars_t *v, const stp_papersize_t * pt) { - const dpl_cap_t *caps = dpl_get_model_capabilities (model); + const dpl_cap_t *caps = dpl_get_model_capabilities (v); unsigned int pwidth = pt->width; unsigned int pheight = pt->height; @@ -807,16 +808,16 @@ dpl_parameters (const stp_vars_t * v, const char *name, if (name == NULL) return; - stp_deprintf (STP_DBG_DPL, "dpl_parameters(): Name = %s\n", name); + stp_dprintf (STP_DBG_DPL, v, "dpl_parameters(): Name = %s\n", name); - caps = dpl_get_model_capabilities (model); + caps = dpl_get_model_capabilities (v); - stp_deprintf (STP_DBG_DPL, "Printer model = %d\n", model); - stp_deprintf (STP_DBG_DPL, "PageWidth = %d, PageHeight = %d\n", + stp_dprintf (STP_DBG_DPL, v, "Printer model = %d\n", model); + stp_dprintf (STP_DBG_DPL, v, "PageWidth = %d, PageHeight = %d\n", caps->custom_max_width, caps->custom_max_height); - stp_deprintf (STP_DBG_DPL, "MinPageWidth = %d, MinPageHeight = %d\n", + stp_dprintf (STP_DBG_DPL, v, "MinPageWidth = %d, MinPageHeight = %d\n", caps->custom_min_width, caps->custom_min_height); - stp_deprintf (STP_DBG_DPL, "Resolutions: %d\n", caps->resolutions); + stp_dprintf (STP_DBG_DPL, v, "Resolutions: %d\n", caps->resolutions); for (i = 0; i < the_parameter_count; i++) if (strcmp (name, the_parameters[i].name) == 0) @@ -839,14 +840,18 @@ dpl_parameters (const stp_vars_t * v, const char *name, if (strcmp (name, "PageSize") == 0) { - int papersizes = stp_known_papersizes (); + const stp_papersize_list_t *paper_sizes = + stpi_get_papersize_list_named("labels", ""); + const stp_papersize_list_item_t *ptli = + stpi_papersize_list_get_start(paper_sizes); description->bounds.str = stp_string_list_create (); - for (i = 0; i < papersizes; i++) + while (ptli) { - const stp_papersize_t *pt = stp_get_papersize_by_index (i); - if (strlen (pt->name) > 0 && dpl_papersize_valid (pt, model)) - stp_string_list_add_string (description->bounds.str, - pt->name, gettext (pt->text)); + const stp_papersize_t *pt = stpi_paperlist_item_get_data(ptli); + if (strlen (pt->name) > 0 && dpl_papersize_valid (v, pt)) + stp_string_list_add_string(description->bounds.str, + pt->name, gettext(pt->text)); + ptli = stpi_paperlist_item_next(ptli); } description->deflt.str = stp_string_list_param (description->bounds.str, 0)->name; @@ -855,16 +860,16 @@ dpl_parameters (const stp_vars_t * v, const char *name, { description->bounds.str = stp_string_list_create (); description->deflt.str = - dpl_val_to_string (caps->max_resolution, dpl_resolutions, + dpl_val_to_string (v, caps->max_resolution, dpl_resolutions, NUM_RESOLUTIONS); for (i = 0; i < NUM_RESOLUTIONS; i++) if (caps->resolutions & dpl_resolutions[i].dpl_code) { stp_string_list_add_string (description->bounds.str, - dpl_val_to_string (dpl_resolutions[i].dpl_code, + dpl_val_to_string (v, dpl_resolutions[i].dpl_code, dpl_resolutions, NUM_RESOLUTIONS), - dpl_val_to_text (dpl_resolutions[i].dpl_code, + dpl_val_to_text (v, dpl_resolutions[i].dpl_code, dpl_resolutions, NUM_RESOLUTIONS)); } } @@ -965,7 +970,7 @@ static void dpl_limit (const stp_vars_t * v, /* I */ stp_dimension_t *width, stp_dimension_t *height, stp_dimension_t *min_width, stp_dimension_t *min_height) { - const dpl_cap_t *caps = dpl_get_model_capabilities (stp_get_model_id (v)); + const dpl_cap_t *caps = dpl_get_model_capabilities (v); *width = caps->custom_max_width; *height = caps->custom_max_height; *min_width = caps->custom_min_width; @@ -978,6 +983,12 @@ dpl_describe_output (const stp_vars_t * v) return "Grayscale"; } +static const stp_papersize_t * +dpl_describe_papersize(const stp_vars_t *v, const char *name) +{ + return stpi_get_listed_papersize(name, "labels"); +} + static void pcx_header (stp_vars_t * v, stp_image_t * image) { @@ -1092,8 +1103,7 @@ dpl_do_print (stp_vars_t * v, stp_image_t * image) unsigned zero_mask; int image_height; int image_width; - int model = stp_get_model_id (v); - const dpl_cap_t *caps = dpl_get_model_capabilities (model); + const dpl_cap_t *caps = dpl_get_model_capabilities (v); const char *speed = stp_get_string_parameter(v, "Speed"); if (!stp_verify (v)) @@ -1120,7 +1130,7 @@ dpl_do_print (stp_vars_t * v, stp_image_t * image) dpl_describe_resolution (v, &xdpi, &ydpi); - stp_deprintf (STP_DBG_DPL, "dpl: resolution=%dx%d\n", (int) xdpi, (int) ydpi); + stp_dprintf (STP_DBG_DPL, v, "dpl: resolution=%dx%d\n", (int) xdpi, (int) ydpi); if (xdpi <= 0 || ydpi <= 0) { stp_eprintf (v, "No resolution found; cannot print.\n"); @@ -1260,7 +1270,7 @@ dpl_do_print (stp_vars_t * v, stp_image_t * image) pcx_header (v, image); - stp_deprintf (STP_DBG_DPL, "Normal init\n"); + stp_dprintf (STP_DBG_DPL, v, "Normal init\n"); /* * Allocate memory for the raster data... @@ -1348,7 +1358,8 @@ static const stp_printfuncs_t print_dpl_printfuncs = { stp_verify_printer_params, NULL, NULL, - NULL + NULL, + dpl_describe_papersize }; @@ -1366,8 +1377,7 @@ dpl_pcx (stp_vars_t * v, /* I - Print file or command */ int in = 0; int out = 0; stp_resolution_t xdpi, ydpi; - int model = stp_get_model_id (v); - const dpl_cap_t *caps = dpl_get_model_capabilities (model); + const dpl_cap_t *caps = dpl_get_model_capabilities (v); int i; int max_dpi; int dpi_adjust; @@ -1447,14 +1457,14 @@ static stp_family_t print_dpl_module_data = { static int print_dpl_module_init (void) { - return stp_family_register (print_dpl_module_data.printer_list); + return stpi_family_register (print_dpl_module_data.printer_list); } static int print_dpl_module_exit (void) { - return stp_family_unregister (print_dpl_module_data.printer_list); + return stpi_family_unregister (print_dpl_module_data.printer_list); } diff --git a/src/main/print-olympus.c b/src/main/print-dyesub.c index 26ce9c8..70fcc39 100644 --- a/src/main/print-olympus.c +++ b/src/main/print-dyesub.c @@ -4,7 +4,7 @@ * * Copyright 2003-2006 Michael Mraka (Michael.Mraka@linux.cz) * - * Copyright 2007-2017 Solomon Peachy (pizza@shaftnet.org) + * Copyright 2007-2018 Solomon Peachy (pizza@shaftnet.org) * * The plug-in is based on the code of the RAW plugin for the GIMP of * Michael Sweet (mike@easysw.com) and Robert Krawitz (rlk@alum.mit.edu) @@ -20,8 +20,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -42,9 +41,7 @@ #define inline __inline__ #endif -#define MITSU70X_8BPP //#define S6145_YMC -//#define CANONSELPHYNEO_CMY #define DYESUB_FEATURE_NONE 0x00000000 #define DYESUB_FEATURE_FULL_WIDTH 0x00000001 @@ -55,18 +52,17 @@ #define DYESUB_FEATURE_PLANE_INTERLACE 0x00000020 #define DYESUB_FEATURE_PLANE_LEFTTORIGHT 0x00000040 #define DYESUB_FEATURE_ROW_INTERLACE 0x00000080 -#define DYESUB_FEATURE_12BPP 0x00000100 -#define DYESUB_FEATURE_16BPP 0x00000200 -#define DYESUB_FEATURE_BIGENDIAN 0x00000400 #define DYESUB_FEATURE_DUPLEX 0x00000800 #define DYESUB_FEATURE_MONOCHROME 0x00001000 -#ifndef CANONSELPHYNEO_CMY -#define DYESUB_FEATURE_RGBtoYCBCR 0x00002000 -#endif +#define DYESUB_FEATURE_NATIVECOPIES 0x00002000 #define DYESUB_PORTRAIT 0 #define DYESUB_LANDSCAPE 1 +#define OP_JOB_START 1 +#define OP_JOB_PRINT 2 +#define OP_JOB_END 4 + #ifndef MIN # define MIN(a,b) (((a) < (b)) ? (a) : (b)) #endif /* !MIN */ @@ -83,18 +79,11 @@ } #define MAX_INK_CHANNELS 3 -#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; @@ -120,17 +109,30 @@ typedef struct { } dyesub_resolution_list_t; typedef struct { - const char* name; - const char* text; - stp_dimension_t width_pt; - stp_dimension_t height_pt; - stp_dimension_t border_pt_left; - stp_dimension_t border_pt_right; - stp_dimension_t border_pt_top; - stp_dimension_t border_pt_bottom; + stp_papersize_t psize; int print_mode; } dyesub_pagesize_t; +#define DEFINE_PAPER(__n, __t, __w, __h, __bl, __br, __bt, __bb, __pm) \ + { \ + .psize = { \ + .name = __n, \ + .text = N_(__t), \ + .width = __w, \ + .height = __h, \ + .top = __bt, \ + .left = __bl, \ + .bottom = __bb, \ + .right = __br, \ + .paper_unit = PAPERSIZE_ENGLISH_STANDARD, \ + .paper_size_type = PAPERSIZE_TYPE_STANDARD, \ + }, \ + .print_mode = __pm, \ + } + +#define DEFINE_PAPER_SIMPLE(__n, __t, __w, __h, __pm) \ + DEFINE_PAPER(__n, __t, __w, __h, 0, 0, 0, 0, __pm) + typedef struct { const dyesub_pagesize_t *item; size_t n_items; @@ -152,12 +154,12 @@ typedef struct { const char *name; const char *text; const stp_raw_t seq; -} laminate_t; +} overcoat_t; typedef struct { - const laminate_t *item; + const overcoat_t *item; size_t n_items; -} laminate_list_t; +} overcoat_list_t; typedef struct { const char* name; @@ -184,6 +186,7 @@ typedef struct { typedef struct { int multicut; + int nocutwaste; const char *print_speed; /* DS820 only */ } dnp_privdata_t; @@ -197,10 +200,11 @@ typedef struct typedef struct { int quality; - int laminate_offset; + int overcoat_offset; int use_lut; int sharpen; int delay; + int deck; } mitsu70x_privdata_t; typedef struct @@ -234,6 +238,31 @@ typedef struct char commentbuf[19]; /* With one extra byte for null termination */ } mitsu_p95d_privdata_t; +typedef struct +{ + int resin_k; + int reject; + int colorsure; + int holokote; + int holokote_custom; + int holopatch; + int overcoat; + int overcoat_dpx; + const char *overcoat_hole; /* XXX TODO: add custom option? */ + const char *overcoat_hole_dpx; /* XXX TODO: add custom option? */ + int align_start; + int align_end; + int power_color; + int power_resin; + int power_overcoat; + int gamma; + int duplex; + char mag1[79]; /* Mag stripe row 1, 78 alphanumeric */ + char mag2[40]; /* Mag stripe row 2, 39 numeric */ + char mag3[107]; /* Mag stripe row 3, 106 numeric */ + int mag_coer; /* 1 = high, 0 = low */ +} magicard_privdata_t; + /* Private data for dyesub driver as a whole */ typedef struct { @@ -243,14 +272,14 @@ typedef struct int block_min_w, block_min_h; int block_max_w, block_max_h; const char* pagesize; - const laminate_t* laminate; + const overcoat_t* overcoat; const dyesub_media_t* media; const char* slot; int print_mode; - int bpp; const char* duplex_mode; int page_number; int copies; + int horiz_offset; union { dnp_privdata_t dnp; mitsu9550_privdata_t m9550; @@ -259,6 +288,7 @@ typedef struct kodak8500_privdata_t k8500; shinko1245_privdata_t s1245; mitsu_p95d_privdata_t m95d; + magicard_privdata_t magicard; } privdata; } dyesub_privdata_t; @@ -266,8 +296,6 @@ typedef struct { int out_channels; int ink_channels; const char *ink_order; - int bytes_per_ink_channel; - int bits_per_ink_channel; int byteswap; int plane_interlacing; int row_interlacing; @@ -297,7 +325,7 @@ typedef struct /* printer specific parameters */ void (*block_init_func)(stp_vars_t *); void (*block_end_func)(stp_vars_t *); void (*adjust_curves)(stp_vars_t *); - const laminate_list_t *laminate; + const overcoat_list_t *overcoat; const dyesub_media_list_t *media; void (*job_start_func)(stp_vars_t *); void (*job_end_func)(stp_vars_t *); @@ -308,8 +336,9 @@ typedef struct /* printer specific parameters */ } 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 int dyesub_feature(const dyesub_cap_t *caps, int feature); +static const dyesub_cap_t* dyesub_get_model_capabilities(const stp_vars_t *v, int model); +static const overcoat_t* dyesub_get_overcoat_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); static void dyesub_adjust_curve(stp_vars_t *v, @@ -367,8 +396,8 @@ LIST(dyesub_resolution_list_t, res_310dpi_list, dyesub_resolution_t, res_310dpi) static const dyesub_pagesize_t p10_page[] = { - { "w288h432", "4x6", 298, 430, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 4x6" */ - { "B7", "3.5x5", 266, 370, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 3.5x5" */ + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1280,310), PT1(1848,310), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1144,310), PT1(1591,310), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, p10_page_list, dyesub_pagesize_t, p10_page); @@ -386,7 +415,7 @@ static void p10_printer_init_func(stp_vars_t *v) dyesub_privdata_t *pd = get_privdata(v); stp_zfwrite("\033R\033M\033S\2\033N\1\033D\1\033Y", 1, 15, v); - stp_write_raw(&(pd->laminate->seq), v); /* laminate */ + stp_write_raw(&(pd->overcoat->seq), v); /* overcoat */ stp_zfwrite("\033Z\0", 1, 3, v); } @@ -406,13 +435,13 @@ static void p10_block_init_func(stp_vars_t *v) stp_put16_le(pd->block_max_h + 1, v); } -static const laminate_t p10_laminate[] = +static const overcoat_t p10_overcoat[] = { {"Coated", N_("Coated"), {1, "\x00"}}, {"None", N_("None"), {1, "\x02"}}, }; -LIST(laminate_list_t, p10_laminate_list, laminate_t, p10_laminate); +LIST(overcoat_list_t, p10_overcoat_list, overcoat_t, p10_overcoat); /* Olympus P-200 series */ @@ -425,7 +454,7 @@ LIST(dyesub_resolution_list_t, res_320dpi_list, dyesub_resolution_t, res_320dpi) static const dyesub_pagesize_t p200_page[] = { - { "ISOB7", "80x125mm", -1, -1, 16, 17, 33, 33, DYESUB_PORTRAIT}, + DEFINE_PAPER( "ISOB7", "80x125mm", PT(960,320), PT(1280,320), 16, 17, 33, 33, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, p200_page_list, dyesub_pagesize_t, p200_page); @@ -487,7 +516,7 @@ LIST(dyesub_resolution_list_t, p300_res_list, dyesub_resolution_t, p300_res); static const dyesub_pagesize_t p300_page[] = { - { "A6", "A6", -1, -1, 28, 28, 48, 48, DYESUB_PORTRAIT}, + DEFINE_PAPER( "A6", "A6", PT1(1024,306), PT1(1376,306), 28, 28, 48, 48, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, p300_page_list, dyesub_pagesize_t, p300_page); @@ -516,7 +545,7 @@ static void p300_plane_end_func(stp_vars_t *v) dyesub_privdata_t *pd = get_privdata(v); stp_zprintf(v, "\033\033\033P%cS", c[pd->plane-1]); - stp_deprintf(STP_DBG_DYESUB, "dyesub: p300_plane_end_func: %c\n", + stp_dprintf(STP_DBG_DYESUB, v, "dyesub: p300_plane_end_func: %c\n", c[pd->plane-1]); } @@ -531,7 +560,7 @@ static void p300_block_init_func(stp_vars_t *v) stp_put16_be(pd->block_max_h, v); stp_put16_be(pd->block_max_w, v); - stp_deprintf(STP_DBG_DYESUB, "dyesub: p300_block_init_func: %d-%dx%d-%d\n", + stp_dprintf(STP_DBG_DYESUB, v, "dyesub: p300_block_init_func: %d-%dx%d-%d\n", pd->block_min_w, pd->block_max_w, pd->block_min_h, pd->block_max_h); } @@ -592,9 +621,9 @@ LIST(dyesub_resolution_list_t, res_314dpi_list, dyesub_resolution_t, res_314dpi) static const dyesub_pagesize_t p400_page[] = { - { "A4", "A4", -1, -1, 22, 22, 54, 54, DYESUB_PORTRAIT}, - { "c8x10", "A5 wide", -1, -1, 58, 59, 84, 85, DYESUB_PORTRAIT}, - { "C6", "2 Postcards (A4)", -1, -1, 9, 9, 9, 9, DYESUB_PORTRAIT}, + DEFINE_PAPER( "A4", "A4", PT1(2400,314), PT1(3200,314), 22, 22, 54, 54, DYESUB_PORTRAIT), + DEFINE_PAPER( "c8x10", "A5 wide", PT1(2000,314), PT1(2400,314), 58, 59, 84, 85, DYESUB_PORTRAIT), + DEFINE_PAPER( "C6", "2 Postcards (A4)", PT1(1328,314), PT1(1920,314), 9, 9, 9, 9, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, p400_page_list, dyesub_pagesize_t, p400_page); @@ -716,10 +745,10 @@ static void p400_adjust_curves(stp_vars_t *v) /* Olympus P-440 series */ static const dyesub_pagesize_t p440_page[] = { - { "A4", "A4", -1, -1, 10, 9, 54, 54, DYESUB_PORTRAIT}, - { "c8x10", "A5 wide", -1, -1, 58, 59, 72, 72, DYESUB_PORTRAIT}, - { "C6", "2 Postcards (A4)", -1, -1, 9, 9, 9, 9, DYESUB_PORTRAIT}, - { "w255h581", "A6 wide", -1, -1, 25, 25, 25, 24, DYESUB_PORTRAIT}, + DEFINE_PAPER( "A4", "A4", PT1(2508,314), PT1(3200,314), 10, 9, 54, 54, DYESUB_PORTRAIT), + DEFINE_PAPER( "c8x10", "A5 wide", PT1(2000,314), PT1(2508,314), 58, 59, 72, 72, DYESUB_PORTRAIT), + DEFINE_PAPER( "C6", "2 Postcards (A4)", PT1(1328,314), PT1(1920,314), 9, 9, 9, 9, DYESUB_PORTRAIT), + DEFINE_PAPER( "w255h581", "A6 wide", PT1(892,314), PT1(2320,314), 25, 25, 25, 24, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, p440_page_list, dyesub_pagesize_t, p440_page); @@ -741,7 +770,7 @@ static void p440_printer_init_func(stp_vars_t *v) stp_zprintf(v, "\033FP"); dyesub_nputc(v, '\0', 61); stp_zprintf(v, "\033Y"); - stp_write_raw(&(pd->laminate->seq), v); /* laminate */ + stp_write_raw(&(pd->overcoat->seq), v); /* overcoat */ dyesub_nputc(v, '\0', 61); stp_zprintf(v, "\033FC"); dyesub_nputc(v, '\0', 61); stp_zprintf(v, "\033ZF"); @@ -798,11 +827,11 @@ static void p440_block_end_func(stp_vars_t *v) dyesub_privdata_t *pd = get_privdata(v); int pad = (64 - (((pd->block_max_w - pd->block_min_w + 1) * (pd->block_max_h - pd->block_min_h + 1) * 3) % 64)) % 64; - stp_deprintf(STP_DBG_DYESUB, + stp_dprintf(STP_DBG_DYESUB, v, "dyesub: max_x %d min_x %d max_y %d min_y %d\n", pd->block_max_w, pd->block_min_w, pd->block_max_h, pd->block_min_h); - stp_deprintf(STP_DBG_DYESUB, "dyesub: olympus-p440 padding=%d\n", pad); + stp_dprintf(STP_DBG_DYESUB, v, "dyesub: olympus-p440 padding=%d\n", pad); dyesub_nputc(v, '\0', pad); } @@ -810,8 +839,8 @@ static void p440_block_end_func(stp_vars_t *v) /* Olympus P-S100 */ static const dyesub_pagesize_t ps100_page[] = { - { "w288h432", "4x6", 296, 426, 0, 0, 0, 0, DYESUB_PORTRAIT},/* 4x6" */ - { "B7", "3.5x5", 264, 366, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 3.5x5" */ + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1254,306), PT1(1808,306), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1120,306), PT1(1554,306), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, ps100_page_list, dyesub_pagesize_t, ps100_page); @@ -858,11 +887,11 @@ static void ps100_printer_end_func(stp_vars_t *v) dyesub_privdata_t *pd = get_privdata(v); int pad = (64 - (((pd->block_max_w - pd->block_min_w + 1) * (pd->block_max_h - pd->block_min_h + 1) * 3) % 64)) % 64; - stp_deprintf(STP_DBG_DYESUB, + stp_dprintf(STP_DBG_DYESUB, v, "dyesub: max_x %d min_x %d max_y %d min_y %d\n", pd->block_max_w, pd->block_min_w, pd->block_max_h, pd->block_min_h); - stp_deprintf(STP_DBG_DYESUB, "dyesub: olympus-ps100 padding=%d\n", pad); + stp_dprintf(STP_DBG_DYESUB, v, "dyesub: olympus-ps100 padding=%d\n", pad); dyesub_nputc(v, '\0', pad); /* padding to 64B blocks */ stp_zprintf(v, "\033PY"); dyesub_nputc(v, '\0', 61); @@ -880,7 +909,7 @@ LIST(dyesub_resolution_list_t, res_300dpi_list, dyesub_resolution_t, res_300dpi) static const dyesub_pagesize_t cp10_page[] = { - { "w155h244", "Card 54x86mm", 159, 250, 6, 6, 29, 29, DYESUB_PORTRAIT}, + DEFINE_PAPER( "w155h244", "Card 54x86mm", PT1(662,300), PT1(1040,300), 6, 6, 29, 29, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, cp10_page_list, dyesub_pagesize_t, cp10_page); @@ -895,9 +924,9 @@ LIST(dyesub_printsize_list_t, cp10_printsize_list, dyesub_printsize_t, cp10_prin /* Canon CP-100 series */ static const dyesub_pagesize_t cpx00_page[] = { - { "Postcard", "Postcard 100x148mm", 296, 434, 13, 13, 16, 19, DYESUB_PORTRAIT}, - { "w253h337", "CP_L 89x119mm", 264, 350, 13, 13, 15, 15, DYESUB_PORTRAIT}, - { "w155h244", "Card 54x86mm", 162, 250, 13, 13, 15, 15, DYESUB_LANDSCAPE}, + DEFINE_PAPER( "Postcard", "Postcard 100x148mm", PT1(1232,300), PT1(1808,300), 13, 13, 16, 19, DYESUB_PORTRAIT), + DEFINE_PAPER( "w253h337", "CP_L 89x119mm", PT1(1100,300), PT1(1456,300), 13, 13, 15, 15, DYESUB_PORTRAIT), + DEFINE_PAPER( "w155h244", "Card 54x86mm", PT1(672,300), PT1(1040,300), 13, 13, 15, 15, DYESUB_LANDSCAPE), }; LIST(dyesub_pagesize_list_t, cpx00_page_list, dyesub_pagesize_t, cpx00_page); @@ -995,10 +1024,10 @@ static void cpx00_adjust_curves(stp_vars_t *v) /* Canon CP-220 series */ static const dyesub_pagesize_t cp220_page[] = { - { "Postcard", "Postcard 100x148mm", 296, 434, 13, 13, 16, 19, DYESUB_PORTRAIT}, - { "w253h337", "CP_L 89x119mm", 264, 350, 13, 13, 15, 15, DYESUB_PORTRAIT}, - { "w155h244", "Card 54x86mm", 162, 250, 13, 13, 15, 15, DYESUB_LANDSCAPE}, - { "w283h566", "Wide 100x200mm", 296, 580, 13, 13, 20, 20, DYESUB_PORTRAIT}, + DEFINE_PAPER( "Postcard", "Postcard 100x148mm", PT1(1232,300), PT1(1808,300), 13, 13, 16, 19, DYESUB_PORTRAIT), + DEFINE_PAPER( "w253h337", "CP_L 89x119mm", PT1(1100,300), PT1(1456,300), 13, 13, 15, 15, DYESUB_PORTRAIT), + DEFINE_PAPER( "w155h244", "Card 54x86mm", PT1(672,300), PT1(1040,300), 13, 13, 15, 15, DYESUB_LANDSCAPE), + DEFINE_PAPER( "w283h566", "Wide 100x200mm", PT1(1232,300), PT1(2416,300), 13, 13, 20, 20, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, cp220_page_list, dyesub_pagesize_t, cp220_page); @@ -1156,9 +1185,9 @@ static void cp900_printer_end_func(stp_vars_t *v) /* Canon CP820/CP910/CP1000/CP1200 and beynod */ static const dyesub_pagesize_t cp910_page[] = { - { "Postcard", "Postcard 100x148mm", PT1(1248,300), PT1(1872,300), 13, 13, 16, 19, DYESUB_PORTRAIT}, - { "w253h337", "CP_L 89x119mm", PT1(1152,300), PT1(1472,300), 13, 13, 15, 15, DYESUB_PORTRAIT}, - { "w155h244", "Card 54x86mm", PT1(668,300), PT1(1088,300), 13, 13, 15, 15, DYESUB_LANDSCAPE}, + DEFINE_PAPER( "Postcard", "Postcard 100x148mm", PT1(1248,300), PT1(1872,300), 13, 13, 16, 19, DYESUB_PORTRAIT), + DEFINE_PAPER( "w253h337", "CP_L 89x119mm", PT1(1152,300), PT1(1472,300), 13, 13, 15, 15, DYESUB_PORTRAIT), + DEFINE_PAPER( "w155h244", "Card 54x86mm", PT1(668,300), PT1(1088,300), 13, 13, 15, 15, DYESUB_LANDSCAPE), }; LIST(dyesub_pagesize_list_t, cp910_page_list, dyesub_pagesize_t, cp910_page); @@ -1190,11 +1219,7 @@ static void cp910_printer_init_func(stp_vars_t *v) stp_putc(pg, v); dyesub_nputc(v, '\0', 4); -#ifdef CANONSELPHYNEO_CMY stp_putc(0x01, v); -#else - stp_putc(0x00, v); -#endif stp_put32_le(pd->w_size, v); stp_put32_le(pd->h_size, v); @@ -1211,8 +1236,7 @@ LIST(dyesub_resolution_list_t, res_403dpi_list, dyesub_resolution_t, res_403dpi) /* only Postcard pagesize is supported */ static const dyesub_pagesize_t dppex5_page[] = { - { "w288h432", "Postcard", PT1(1664,403), PT1(2466,403), 13, 14, 18, 17, - DYESUB_PORTRAIT}, + DEFINE_PAPER( "w288h432", "Postcard", PT1(1664,403), PT1(2466,403), 13, 14, 18, 17, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, dppex5_page_list, dyesub_pagesize_t, dppex5_page); @@ -1246,8 +1270,8 @@ static void dppex5_printer_init(stp_vars_t *v) dyesub_nputc(v, '\0', 19); stp_zprintf(v, "5EPD"); dyesub_nputc(v, '\0', 4); - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); /*laminate pattern*/ + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); /*overcoat pattern*/ stp_zfwrite("\0d\0d\0d", 1, 6, v); dyesub_nputc(v, '\0', 21); } @@ -1267,20 +1291,20 @@ static void dppex5_printer_end(stp_vars_t *v) stp_zfwrite("DPEX\0\0\0\x81", 1, 8, v); } -static const laminate_t dppex5_laminate[] = +static const overcoat_t dppex5_overcoat[] = { {"Glossy", N_("Glossy"), {1, "\x00"}}, {"Texture", N_("Texture"), {1, "\x01"}}, }; -LIST(laminate_list_t, dppex5_laminate_list, laminate_t, dppex5_laminate); +LIST(overcoat_list_t, dppex5_overcoat_list, overcoat_t, dppex5_overcoat); /* Sony UP-DP10 */ static const dyesub_pagesize_t updp10_page[] = { - { "w288h432", "UPC-10P23 (4x6)", -1, -1, 12, 12, 18, 18, DYESUB_LANDSCAPE}, - { "w288h387", "UPC-10P34 (4x5)", -1, 384, 12, 12, 16, 16, DYESUB_LANDSCAPE}, + DEFINE_PAPER( "w288h432", "UPC-10P23 (4x6)", PT(1200,300), PT(1800,300), 12, 12, 18, 18, DYESUB_LANDSCAPE), + DEFINE_PAPER( "w288h387", "UPC-10P34 (4x5)", PT(1200,300), PT(1600,300), 12, 12, 16, 16, DYESUB_LANDSCAPE), }; LIST(dyesub_pagesize_list_t, updp10_page_list, dyesub_pagesize_t, updp10_page); @@ -1302,8 +1326,8 @@ static void updp10_printer_init_func(stp_vars_t *v) "\x00\x02\x00\x00\x01\x12\x00\x00" "\x00\x1b\xe1\x00\x00\x00\x0b\x00" "\x00\x04", 1, 34, v); - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); /*laminate pattern*/ + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); /*overcoat pattern*/ stp_zfwrite("\x00\x00\x00\x00", 1, 4, v); stp_put16_be(pd->w_size, v); stp_put16_be(pd->h_size, v); @@ -1326,14 +1350,14 @@ static void updp10_printer_end_func(stp_vars_t *v) , 1, 23, v); } -static const laminate_t updp10_laminate[] = +static const overcoat_t updp10_overcoat[] = { {"Glossy", N_("Glossy"), {1, "\x00"}}, {"Texture", N_("Texture"), {1, "\x08"}}, {"Matte", N_("Matte"), {1, "\x0c"}}, }; -LIST(laminate_list_t, updp10_laminate_list, laminate_t, updp10_laminate); +LIST(overcoat_list_t, updp10_overcoat_list, overcoat_t, updp10_overcoat); static const char updp10_adj_cyan[] = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" @@ -1387,10 +1411,10 @@ static void updp10_adjust_curves(stp_vars_t *v) /* Sony UP-DR100 */ static const dyesub_pagesize_t updr100_page[] = { - { "w288h432", "4x6", 298, 442, 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "B7", "3.5x5", 261, 369, 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "w360h504", "5x7", 369, 514, 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "w432h576", "6x8", 442, 588, 0, 0, 0, 0, DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1382,334), PT1(2048,334), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1210,334), PT1(1710,334), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1710,334), PT1(2380,334), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(2048,334), PT1(2724,334), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, updr100_page_list, dyesub_pagesize_t, updr100_page); @@ -1413,7 +1437,7 @@ static void updr100_printer_init_func(stp_vars_t *v) stp_put32_le(pd->w_size, v); stp_put32_le(pd->h_size, v); stp_zfwrite("\x1e\x00\x03\x00\x01\x00\x4e\x01\x00\x00", 1, 10, v); - stp_write_raw(&(pd->laminate->seq), v); /* laminate pattern */ + stp_write_raw(&(pd->overcoat->seq), v); /* overcoat pattern */ dyesub_nputc(v, '\0', 13); stp_zfwrite("\x01\x00\x01\x00\x03", 1, 5, v); dyesub_nputc(v, '\0', 19); @@ -1430,14 +1454,14 @@ static void updr100_printer_end_func(stp_vars_t *v) , 1, 34, v); } -static const laminate_t updr100_laminate[] = +static const overcoat_t updr100_overcoat[] = { {"Glossy", N_("Glossy"), {1, "\x01"}}, {"Texture", N_("Texture"), {1, "\x03"}}, {"Matte", N_("Matte"), {1, "\x04"}}, }; -LIST(laminate_list_t, updr100_laminate_list, laminate_t, updr100_laminate); +LIST(overcoat_list_t, updr100_overcoat_list, overcoat_t, updr100_overcoat); /* Sony UP-DR150 */ @@ -1450,10 +1474,10 @@ LIST(dyesub_resolution_list_t, res_334dpi_list, dyesub_resolution_t, res_334dpi) static const dyesub_pagesize_t updr150_page[] = { - { "w288h432", "4x6", PT1(1382,334), PT1(2048,334), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "B7", "3.5x5", PT1(1210,334), PT1(1728,334), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1728,334), PT1(2380,334), 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "w432h576", "6x8", PT1(2048,334), PT1(2724,334), 0, 0, 0, DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1382,334), PT1(2048,334), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1210,334), PT1(1728,334), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1728,334), PT1(2380,334), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(2048,334), PT1(2724,334), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, updr150_page_list, dyesub_pagesize_t, updr150_page); @@ -1559,8 +1583,8 @@ static void updr150_200_printer_init_func(stp_vars_t *v, int updr200) stp_zfwrite("\x07\x00\x00\x00" "\x1b\xe1\x00\x00\x00\x0b\x00" "\x0b\x00\x00\x00\x00\x80", 1, 17, v); - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); /*laminate pattern*/ + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); /*overcoat pattern*/ stp_zfwrite("\x00\x00\x00\x00", 1, 4, v); stp_put16_be(pd->w_size, v); @@ -1599,13 +1623,13 @@ static void updr150_printer_end_func(stp_vars_t *v) /* Sony UP-DR200 */ static const dyesub_pagesize_t updr200_page[] = { - { "w288h432", "4x6", PT1(1382,334), PT1(2048,334), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "w288h432-div2", "2x6*2", PT1(1382,334), PT1(2048,334), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "B7", "3.5x5", PT1(1210,334), PT1(1728,334), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1728,334), PT1(2380,334), 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "w360h504-div2", "3.5x5*2", PT1(1728,334), PT1(2420,334), 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "w432h576", "6x8", PT1(2048,334), PT1(2724,334), 0, 0, 0, DYESUB_PORTRAIT}, - { "w432h576-div2", "4x6*2", PT1(2048,334), PT1(2764,334), 0, 0, 0, DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1382,334), PT1(2048,334), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432-div2", "2x6*2", PT1(1382,334), PT1(2048,334), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1210,334), PT1(1728,334), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1728,334), PT1(2380,334), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w360h504-div2", "3.5x5*2", PT1(1728,334), PT1(2420,334), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(2048,334), PT1(2724,334), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576-div2", "4x6*2", PT1(2048,334), PT1(2764,334), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, updr200_page_list, dyesub_pagesize_t, updr200_page); @@ -1623,7 +1647,7 @@ static const dyesub_printsize_t updr200_printsize[] = LIST(dyesub_printsize_list_t, updr200_printsize_list, dyesub_printsize_t, updr200_printsize); -static const laminate_t updr200_laminate[] = +static const overcoat_t updr200_overcoat[] = { {"Glossy", N_("Glossy"), {1, "\x00"}}, {"Matte", N_("Matte"), {1, "\x0c"}}, @@ -1631,7 +1655,7 @@ static const laminate_t updr200_laminate[] = {"Matte_NoCorr", N_("Matte_NoCorr"), {1, "\x1c"}}, }; -LIST(laminate_list_t, updr200_laminate_list, laminate_t, updr200_laminate); +LIST(overcoat_list_t, updr200_overcoat_list, overcoat_t, updr200_overcoat); static void updr200_printer_init_func(stp_vars_t *v) { @@ -1641,9 +1665,9 @@ static void updr200_printer_init_func(stp_vars_t *v) /* Sony UP-CR10L / DNP SL10 */ static const dyesub_pagesize_t upcr10_page[] = { - { "w288h432", "4x6", PT1(1248,300), PT1(1848,300), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "B7", "3.5x5", PT1(1100,300), PT1(1536,300), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1536,300), PT1(2148,300), 0, 0, 0, 0, DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1248,300), PT1(1848,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1100,300), PT1(1536,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1536,300), PT1(2148,300), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, upcr10_page_list, dyesub_pagesize_t, upcr10_page); @@ -1705,9 +1729,9 @@ static void upcr10_printer_end_func(stp_vars_t *v) /* Fujifilm CX-400 */ static const dyesub_pagesize_t cx400_page[] = { - { "w288h432", "4x6", 295, 428, 24, 24, 23, 22, DYESUB_PORTRAIT}, - { "w288h387", "4x5 3/8", 295, 386, 24, 24, 23, 23, DYESUB_PORTRAIT}, - { "w288h504", "4x7", 295, 513, 24, 24, 23, 22, DYESUB_PORTRAIT}, + DEFINE_PAPER( "w288h432", "4x6", PT1(1268,310), PT1(1658,310), 24, 24, 23, 22, DYESUB_PORTRAIT), + DEFINE_PAPER( "w288h387", "4x5 3/8", PT1(1268,310), PT1(1842,310), 24, 24, 23, 23, DYESUB_PORTRAIT), + DEFINE_PAPER( "w288h504", "4x7", PT1(1268,310), PT1(2208,310), 24, 24, 23, 22, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, cx400_page_list, dyesub_pagesize_t, cx400_page); @@ -1728,7 +1752,7 @@ static void cx400_printer_init_func(stp_vars_t *v) char pg = '\0'; const char *pname = "XXXXXX"; - stp_deprintf(STP_DBG_DYESUB, + stp_dprintf(STP_DBG_DYESUB, v, "dyesub: fuji driver %s\n", stp_get_driver(v)); if (strcmp(stp_get_driver(v),"fujifilm-cx400") == 0) pname = "NX1000"; @@ -1754,7 +1778,6 @@ static void cx400_printer_init_func(stp_vars_t *v) stp_putc('\1', v); } - /* Fujifilm NX-500 */ static const dyesub_resolution_t res_306dpi[] = { @@ -1765,7 +1788,7 @@ LIST(dyesub_resolution_list_t, res_306dpi_list, dyesub_resolution_t, res_306dpi) static const dyesub_pagesize_t nx500_page[] = { - { "Postcard", "Postcard", -1, -1, 21, 21, 29, 29, DYESUB_PORTRAIT}, + DEFINE_PAPER( "Postcard", "Postcard", PT1(1024,306), PT1(1518,306), 21, 21, 29, 29, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, nx500_page_list, dyesub_pagesize_t, nx500_page); @@ -1797,8 +1820,7 @@ static void nx500_printer_init_func(stp_vars_t *v) /* Kodak Easyshare Dock family */ static const dyesub_pagesize_t kodak_dock_page[] = { - { "w288h432", "4x6", PT1(1248,300), PT1(1856,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, /* 4x6 */ + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1248,300), PT1(1856,300), DYESUB_PORTRAIT), /* 4x6 */ }; LIST(dyesub_pagesize_list_t, kodak_dock_page_list, dyesub_pagesize_t, kodak_dock_page); @@ -1829,10 +1851,8 @@ static void kodak_dock_plane_init(stp_vars_t *v) /* Kodak 6800 */ static const dyesub_pagesize_t kodak_6800_page[] = { - { "w288h432", "4x6", PT1(1240,300), PT1(1844,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, /* 4x6 */ - { "w432h576", "6x8", PT1(1844,300), PT1(2434,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, /* 6x8 */ + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1240,300), PT1(1844,300), DYESUB_LANDSCAPE), /* 4x6 */ + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1844,300), PT1(2434,300), DYESUB_PORTRAIT), /* 6x8 */ }; LIST(dyesub_pagesize_list_t, kodak_6800_page_list, dyesub_pagesize_t, kodak_6800_page); @@ -1845,23 +1865,20 @@ static const dyesub_printsize_t kodak_6800_printsize[] = LIST(dyesub_printsize_list_t, kodak_6800_printsize_list, dyesub_printsize_t, kodak_6800_printsize); -static const laminate_t kodak_6800_laminate[] = +static const overcoat_t kodak_6800_overcoat[] = { {"Coated", N_("Coated"), {1, "\x01"}}, {"None", N_("None"), {1, "\x00"}}, }; -LIST(laminate_list_t, kodak_6800_laminate_list, laminate_t, kodak_6800_laminate); +LIST(overcoat_list_t, kodak_6800_overcoat_list, overcoat_t, kodak_6800_overcoat); /* Kodak 6850 */ static const dyesub_pagesize_t kodak_6850_page[] = { - { "w288h432", "4x6", PT1(1240,300), PT1(1844,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, /* 4x6 */ - { "w360h504", "5x7", PT1(1548,300), PT1(2140,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, /* 5x7 */ - { "w432h576", "6x8", PT1(1844,300), PT1(2434,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, /* 6x8 */ + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1240,300), PT1(1844,300), DYESUB_LANDSCAPE), /* 4x6 */ + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1548,300), PT1(2140,300), DYESUB_PORTRAIT), /* 5x7 */ + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1844,300), PT1(2434,300), DYESUB_PORTRAIT), /* 6x8 */ }; LIST(dyesub_pagesize_list_t, kodak_6850_page_list, dyesub_pagesize_t, kodak_6850_page); @@ -1914,20 +1931,17 @@ static void kodak_68xx_printer_init(stp_vars_t *v) else stp_putc(0x00, v); /* Just in case */ - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); stp_putc(0x00, v); } /* Kodak 605 */ static const dyesub_pagesize_t kodak_605_page[] = { - { "w288h432", "4x6", PT1(1240,300), PT1(1844,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, /* 4x6 */ - { "w360h504", "5x7", PT1(1500,300), PT1(2100,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, /* 5x7 */ - { "w432h576", "6x8", PT1(1844,300), PT1(2434,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, /* 6x8 */ + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1240,300), PT1(1844,300), DYESUB_LANDSCAPE), /* 4x6 */ + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1500,300), PT1(2100,300), DYESUB_PORTRAIT), /* 5x7 */ + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1844,300), PT1(2434,300), DYESUB_PORTRAIT), /* 6x8 */ }; LIST(dyesub_pagesize_list_t, kodak_605_page_list, dyesub_pagesize_t, kodak_605_page); @@ -1960,18 +1974,18 @@ static void kodak_605_printer_init(stp_vars_t *v) else stp_putc(0x01, v); - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); stp_putc(0x00, v); } -static const laminate_t kodak_605_laminate[] = +static const overcoat_t kodak_605_overcoat[] = { {"Coated", N_("Coated"), {1, "\x02"}}, {"None", N_("None"), {1, "\x01"}}, }; -LIST(laminate_list_t, kodak_605_laminate_list, laminate_t, kodak_605_laminate); +LIST(overcoat_list_t, kodak_605_overcoat_list, overcoat_t, kodak_605_overcoat); /* Kodak 1400 */ static const dyesub_resolution_t res_301dpi[] = @@ -1993,9 +2007,9 @@ static const dyesub_pagesize_t kodak_1400_page[] = The printer can technically print a little wider but these dimensions are defined by the lamination area, which is fixed. */ - { "w612h864", "8.5x12", PT1(2560,301), PT(3010,301)+72*2, PT1(76,301), PT(76,301), 72, 72, DYESUB_PORTRAIT}, /* 8x12 */ - { "Legal", "8.5x14", PT1(2560,301), PT(3612,301)+72*2, PT1(35,301), PT1(35,301), 72, 72, DYESUB_PORTRAIT}, /* 8x14 */ - { "A4", "A4", PT1(2560,301), PT(3010,301)+72*2, PT1(76,301), PT(76,301), 0, 0, DYESUB_PORTRAIT}, /* A4, identical to 8x12 */ + DEFINE_PAPER( "w612h864", "8.5x12", PT1(2560,301), PT(3010,301)+72*2, PT1(76,301), PT(76,301), 72, 72, DYESUB_PORTRAIT), /* 8x12 */ + DEFINE_PAPER( "Legal", "8.5x14", PT1(2560,301), PT(3612,301)+72*2, PT1(35,301), PT1(35,301), 72, 72, DYESUB_PORTRAIT), /* 8x14 */ + DEFINE_PAPER( "A4", "A4", PT1(2560,301), PT(3010,301)+72*2, PT1(76,301), PT(76,301), 0, 0, DYESUB_PORTRAIT), /* A4, identical to 8x12 */ }; LIST(dyesub_pagesize_list_t, kodak_1400_page_list, dyesub_pagesize_t, kodak_1400_page); @@ -2038,8 +2052,8 @@ static void kodak_1400_printer_init(stp_vars_t *v) stp_put32_le(pd->h_size*pd->w_size, v); dyesub_nputc(v, 0x00, 4); stp_zfwrite((pd->media->seq).data, 1, 1, v); /* Matte or Glossy? */ - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); stp_putc(0x01, v); stp_zfwrite((const char*)((pd->media->seq).data) + 1, 1, 1, v); /* Lamination intensity */ dyesub_nputc(v, 0x00, 12); @@ -2050,8 +2064,8 @@ static const dyesub_pagesize_t kodak_805_page[] = { /* Identical to the Kodak 1400 except for the lack of A4 support. See the 1400 comments for explanations of this. */ - { "w612h864", "8.5x12", PT1(2560,301), PT(3010,301)+72*2, PT1(76,301), PT(76,301), 72, 72, DYESUB_PORTRAIT}, /* 8x12 */ - { "Legal", "8.5x14", PT1(2560,301), PT(3612,301)+72*2, PT1(35,301), PT1(35,301), 72, 72, DYESUB_PORTRAIT}, /* 8x14 */ + DEFINE_PAPER( "w612h864", "8.5x12", PT1(2560,301), PT(3010,301)+72*2, PT1(76,301), PT(76,301), 72, 72, DYESUB_PORTRAIT), /* 8x12 */ + DEFINE_PAPER( "Legal", "8.5x14", PT1(2560,301), PT(3612,301)+72*2, PT1(35,301), PT1(35,301), 72, 72, DYESUB_PORTRAIT), /* 8x14 */ }; LIST(dyesub_pagesize_list_t, kodak_805_page_list, dyesub_pagesize_t, kodak_805_page); @@ -2075,8 +2089,8 @@ static void kodak_805_printer_init(stp_vars_t *v) dyesub_nputc(v, 0x00, 2); stp_put32_le(pd->h_size*pd->w_size, v); dyesub_nputc(v, 0x00, 5); - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); stp_putc(0x01, v); stp_putc(0x3c, v); /* Lamination intensity; fixed on glossy media */ dyesub_nputc(v, 0x00, 12); @@ -2085,8 +2099,8 @@ static void kodak_805_printer_init(stp_vars_t *v) /* Kodak 9810 / 8800 */ static const dyesub_pagesize_t kodak_9810_page[] = { - { "c8x10", "8x10", PT1(2464,300), PT1(3024,300), 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "w576h864", "8x12", PT1(2464,300), PT1(3624,300), 0, 0, 0, 0, DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "c8x10", "8x10", PT1(2464,300), PT1(3024,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w576h864", "8x12", PT1(2464,300), PT1(3624,300), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, kodak_9810_page_list, dyesub_pagesize_t, kodak_9810_page); @@ -2098,13 +2112,13 @@ static const dyesub_printsize_t kodak_9810_printsize[] = LIST(dyesub_printsize_list_t, kodak_9810_printsize_list, dyesub_printsize_t, kodak_9810_printsize); -static const laminate_t kodak_9810_laminate[] = +static const overcoat_t kodak_9810_overcoat[] = { {"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); +LIST(overcoat_list_t, kodak_9810_overcoat_list, overcoat_t, kodak_9810_overcoat); static const stp_parameter_t kodak_9810_parameters[] = { @@ -2122,7 +2136,7 @@ kodak_9810_load_parameters(const stp_vars_t *v, const char *name, stp_parameter_t *description) { int i; - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); if (caps->parameter_count && caps->parameters) @@ -2207,8 +2221,8 @@ static void kodak_9810_printer_init(stp_vars_t *v) /* Lamination */ stp_putc(0x1b, v); stp_zfwrite("FlsJbLam ", 1, 11, v); - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); dyesub_nputc(v, 0x20, 5); dyesub_nputc(v, 0x00, 4); stp_put32_be(0, v); @@ -2341,10 +2355,10 @@ static void kodak_9810_plane_init(stp_vars_t *v) /* Kodak 8810 */ static const dyesub_pagesize_t kodak_8810_page[] = { - { "w288h576", "8x4", PT1(1208,300), PT1(2464,300), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "c8x10", "8x10", PT1(2464,300), PT1(3024,300), 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "A4", "203x297mm", PT1(2464,300), PT1(3531,300), 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "w576h864", "8x12", PT1(2464,300), PT1(3624,300), 0, 0, 0, 0, DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "w288h576", "8x4", PT1(1208,300), PT1(2464,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "c8x10", "8x10", PT1(2464,300), PT1(3024,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "A4", "203x297mm", PT1(2464,300), PT1(3531,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w576h864", "8x12", PT1(2464,300), PT1(3624,300), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, kodak_8810_page_list, dyesub_pagesize_t, kodak_8810_page); @@ -2358,14 +2372,14 @@ static const dyesub_printsize_t kodak_8810_printsize[] = LIST(dyesub_printsize_list_t, kodak_8810_printsize_list, dyesub_printsize_t, kodak_8810_printsize); -static const laminate_t kodak_8810_laminate[] = +static const overcoat_t kodak_8810_overcoat[] = { {"Glossy", N_("Glossy"), {1, "\x03"}}, {"Satin", N_("Satin"), {1, "\x02"}}, {"None", N_("None"), {1, "\x01"}}, }; -LIST(laminate_list_t, kodak_8810_laminate_list, laminate_t, kodak_8810_laminate); +LIST(overcoat_list_t, kodak_8810_overcoat_list, overcoat_t, kodak_8810_overcoat); static void kodak_8810_printer_init(stp_vars_t *v) { @@ -2382,8 +2396,8 @@ static void kodak_8810_printer_init(stp_vars_t *v) stp_put16_le(pd->w_size, v); stp_put16_le(pd->h_size, v); dyesub_nputc(v, 0, 4); - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); stp_putc(0x00, v); /* Method -- 00 is normal, 02 is x2, 03 is x3 */ stp_putc(0x00, v); /* Reserved */ } @@ -2391,10 +2405,8 @@ static void kodak_8810_printer_init(stp_vars_t *v) /* Kodak 7000/7010 */ static const dyesub_pagesize_t kodak_7000_page[] = { - { "w288h432", "4x6", PT1(1240,300), PT1(1844,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, /* 4x6 */ - { "w432h576", "6x8", PT1(1844,300), PT1(2434,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, /* 6x8 */ + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1240,300), PT1(1844,300), DYESUB_LANDSCAPE), /* 4x6 */ + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1844,300), PT1(2434,300), DYESUB_PORTRAIT), /* 6x8 */ }; LIST(dyesub_pagesize_list_t, kodak_7000_page_list, dyesub_pagesize_t, kodak_7000_page); @@ -2406,13 +2418,13 @@ static const dyesub_printsize_t kodak_7000_printsize[] = }; LIST(dyesub_printsize_list_t, kodak_7000_printsize_list, dyesub_printsize_t, kodak_7000_printsize); -static const laminate_t kodak_7000_laminate[] = +static const overcoat_t kodak_7000_overcoat[] = { {"Glossy", N_("Glossy"), {1, "\x02"}}, {"Satin", N_("Satin"), {1, "\x03"}}, }; -LIST(laminate_list_t, kodak_7000_laminate_list, laminate_t, kodak_7000_laminate); +LIST(overcoat_list_t, kodak_7000_overcoat_list, overcoat_t, kodak_7000_overcoat); static void kodak_70xx_printer_init(stp_vars_t *v) { @@ -2432,16 +2444,15 @@ static void kodak_70xx_printer_init(stp_vars_t *v) else stp_putc(0x01, v); - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); stp_putc(0x00, v); } -/* Kodak 7015/7015 */ +/* Kodak 7015 */ static const dyesub_pagesize_t kodak_7015_page[] = { - { "w360h504", "5x7", PT1(1548,300), PT1(2140,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, /* 5x7 */ + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1548,300), PT1(2140,300), DYESUB_PORTRAIT), /* 5x7 */ }; LIST(dyesub_pagesize_list_t, kodak_7015_page_list, dyesub_pagesize_t, kodak_7015_page); @@ -2456,8 +2467,8 @@ LIST(dyesub_printsize_list_t, kodak_7015_printsize_list, dyesub_printsize_t, kod /* Kodak Professional 8500 */ static const dyesub_pagesize_t kodak_8500_page[] = { - { "w612h864", "8.5x12", PT1(2508,314), PT1(3134,314), 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 8.5x12 & A4 */ - { "Letter", "8.5x11", PT1(2508,314), PT1(2954,314), 0, 0, 0, 0, DYESUB_PORTRAIT}, /* Letter */ + DEFINE_PAPER_SIMPLE( "w612h864", "8.5x12", PT1(2508,314), PT1(3134,314), DYESUB_PORTRAIT), /* 8.5x12 & A4 */ + DEFINE_PAPER_SIMPLE( "Letter", "8.5x11", PT1(2508,314), PT1(2954,314), DYESUB_PORTRAIT), /* Letter */ }; LIST(dyesub_pagesize_list_t, kodak_8500_page_list, dyesub_pagesize_t, kodak_8500_page); @@ -2477,13 +2488,13 @@ static const dyesub_media_t kodak_8500_media[] = }; LIST(dyesub_media_list_t, kodak_8500_media_list, dyesub_media_t, kodak_8500_media); -static const laminate_t kodak_8500_laminate[] = +static const overcoat_t kodak_8500_overcoat[] = { {"Coated", N_("Coated"), {1, "\x00"}}, {"None", N_("None"), {1, "\x02"}}, }; -LIST(laminate_list_t, kodak_8500_laminate_list, laminate_t, kodak_8500_laminate); +LIST(overcoat_list_t, kodak_8500_overcoat_list, overcoat_t, kodak_8500_overcoat); static const stp_parameter_t kodak_8500_parameters[] = { @@ -2507,7 +2518,7 @@ kodak_8500_load_parameters(const stp_vars_t *v, const char *name, stp_parameter_t *description) { int i; - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); if (caps->parameter_count && caps->parameters) @@ -2589,7 +2600,7 @@ static void kodak_8500_printer_init(stp_vars_t *v) /* Lamination */ stp_putc(0x1b, v); stp_putc(0x59, v); - if (*((const char*)((pd->laminate->seq).data)) == 0x02) { /* No lamination */ + if (*((const char*)((pd->overcoat->seq).data)) == 0x02) { /* No lamination */ stp_putc(0x02, v); stp_putc(0x00, v); } else { @@ -2648,19 +2659,13 @@ LIST(dyesub_resolution_list_t, res_325dpi_list, dyesub_resolution_t, res_325dpi) /* All are "custom" page sizes.. bleh.. */ static const dyesub_pagesize_t mitsu_p95d_page[] = { - { "w213h284", "1280x960", PT1(960,325), PT1(1280,325), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w227h284", "1280x1024", PT1(1024,325), PT1(1280,325), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w284h284", "1280x1280", PT1(1280,325), PT1(1280,325), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w284h426", "1280x1920", PT1(1280,325), PT1(1920,325), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w284h1277", "1280x5760", PT1(1280,325), PT1(5760,325), 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "w213h284", "1280x960", PT1(960,325), PT1(1280,325), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w227h284", "1280x1024", PT1(1024,325), PT1(1280,325), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w284h284", "1280x1280", PT1(1280,325), PT1(1280,325), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w284h426", "1280x1920", PT1(1280,325), PT1(1920,325), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w284h1277", "1280x5760", PT1(1280,325), PT1(5760,325), DYESUB_PORTRAIT), /* A true "custom" size, printer will cut at the image boundary */ - { "Custom", NULL, PT1(1280,325), -1, 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "Custom", "Custom", PT1(1280,325), -1, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, mitsu_p95d_page_list, dyesub_pagesize_t, mitsu_p95d_page); @@ -2791,7 +2796,7 @@ mitsu_p95d_load_parameters(const stp_vars_t *v, const char *name, stp_parameter_t *description) { int i; - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); if (caps->parameter_count && caps->parameters) @@ -2958,14 +2963,14 @@ static int mitsu_p95d_parse_parameters(stp_vars_t *v) } else if (!strcmp(comment, "Date")) { struct tm tmp; time_t t; - t = time(NULL); + t = stpi_time(NULL); localtime_r(&t, &tmp); strftime(pd->privdata.m95d.commentbuf, sizeof(pd->privdata.m95d.commentbuf), " %F", &tmp); pd->privdata.m95d.comment = 2; } else if (!strcmp(comment, "DateTime")) { struct tm tmp; time_t t; - t = time(NULL); + t = stpi_time(NULL); localtime_r(&t, &tmp); strftime(pd->privdata.m95d.commentbuf, sizeof(pd->privdata.m95d.commentbuf), " %F %R", &tmp); pd->privdata.m95d.comment = 3; @@ -3197,7 +3202,7 @@ mitsu_p93d_load_parameters(const stp_vars_t *v, const char *name, stp_parameter_t *description) { int i; - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); if (caps->parameter_count && caps->parameters) @@ -3346,14 +3351,14 @@ static int mitsu_p93d_parse_parameters(stp_vars_t *v) } else if (!strcmp(comment, "Date")) { struct tm tmp; time_t t; - t = time(NULL); + t = stpi_time(NULL); localtime_r(&t, &tmp); strftime(pd->privdata.m95d.commentbuf, sizeof(pd->privdata.m95d.commentbuf), " %F", &tmp); pd->privdata.m95d.comment = 2; } else if (!strcmp(comment, "DateTime")) { struct tm tmp; time_t t; - t = time(NULL); + t = stpi_time(NULL); localtime_r(&t, &tmp); strftime(pd->privdata.m95d.commentbuf, sizeof(pd->privdata.m95d.commentbuf), " %F %R", &tmp); pd->privdata.m95d.comment = 3; @@ -3466,8 +3471,8 @@ static void mitsu_p93d_printer_init(stp_vars_t *v) /* Mitsubishi CP3020D/DU/DE */ static const dyesub_pagesize_t mitsu_cp3020d_page[] = { - { "A4", "A4", PT1(2508,314), PT1(3134,314), 0, 0, 0, 0, DYESUB_PORTRAIT}, /* A4 */ - { "Legal", "Letter Long", PT1(2508,314), PT1(3762,314), 0, 0, 0, 0, DYESUB_PORTRAIT}, /* Letter */ + DEFINE_PAPER_SIMPLE( "A4", "A4", PT1(2508,314), PT1(3134,314), DYESUB_PORTRAIT), /* A4 */ + DEFINE_PAPER_SIMPLE( "Legal", "Letter Long", PT1(2508,314), PT1(3762,314), DYESUB_PORTRAIT), /* Letter */ }; LIST(dyesub_pagesize_list_t, mitsu_cp3020d_page_list, dyesub_pagesize_t, mitsu_cp3020d_page); @@ -3633,8 +3638,8 @@ static void mitsu_cp3020da_plane_init(stp_vars_t *v) stp_putc(0x1b, v); stp_putc(0x5a, v); stp_putc(0x54, v); - stp_putc((pd->bpp > 8) ? 0x10: 0x00, v); - dyesub_nputc(v, 0x00, 2); + stp_putc(0x00, v); + stp_put16_be(0, v); /* Starting column for this block */ stp_put16_be(0, v); /* Starting row for this block */ stp_put16_be(pd->w_size, v); stp_put16_be(pd->h_size, v); /* Number of rows in this block */ @@ -3651,16 +3656,11 @@ LIST(dyesub_resolution_list_t, res_m9500_list, dyesub_resolution_t, res_m9500); static const dyesub_pagesize_t mitsu_cp9500_page[] = { - { "B7", "3.5x5", PT1(1240,346), PT1(1812,346), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432", "4x6", PT1(1416,346), PT1(2152,346), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1812,346), PT1(2452,346), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576", "6x8", PT1(2152,346), PT1(2792,346), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h648", "6x9", PT1(2152,346), PT1(3146,346), 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1240,346), PT1(1812,346), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1416,346), PT1(2152,346), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1812,346), PT1(2452,346), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(2152,346), PT1(2792,346), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648", "6x9", PT1(2152,346), PT1(3146,346), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, mitsu_cp9500_page_list, dyesub_pagesize_t, mitsu_cp9500_page); @@ -3767,7 +3767,7 @@ mitsu9500_load_parameters(const stp_vars_t *v, const char *name, stp_parameter_t *description) { int i; - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); if (caps->parameter_count && caps->parameters) @@ -3829,20 +3829,13 @@ LIST(dyesub_resolution_list_t, res_346dpi_list, dyesub_resolution_t, res_346dpi) static const dyesub_pagesize_t mitsu_cp9550_page[] = { - { "B7", "3.5x5", PT1(1240,346), PT1(1812,346), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432", "4x6", PT1(1416,346), PT1(2152,346), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432-div2", "2x6*2", PT1(1416,346), PT1(2152,346), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1812,346), PT1(2452,346), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576", "6x8", PT1(2152,346), PT1(2792,346), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h612", "6x8.5", PT1(2152,346), PT1(2956,346), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h648", "6x9", PT1(2152,346), PT1(3146,346), 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1240,346), PT1(1812,346), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1416,346), PT1(2152,346), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432-div2", "2x6*2", PT1(1416,346), PT1(2152,346), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1812,346), PT1(2452,346), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(2152,346), PT1(2792,346), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h612", "6x8.5", PT1(2152,346), PT1(2956,346), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648", "6x9", PT1(2152,346), PT1(3146,346), DYESUB_PORTRAIT), /* XXX also 3.3x6 and 3.5x6! XXX also 4x6*2, 4.4*6*2, 3x6*3, 2x6*4! (Built on 6x9 media) */ }; @@ -3886,7 +3879,7 @@ mitsu9550_load_parameters(const stp_vars_t *v, const char *name, stp_parameter_t *description) { int i; - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); if (caps->parameter_count && caps->parameters) @@ -4016,18 +4009,12 @@ static void mitsu_cp9550_printer_end(stp_vars_t *v) static const dyesub_pagesize_t mitsu_cp9550s_page[] = { - { "w288h432", "4x6", PT1(1416,346), PT1(2152,346), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432-div2", "2x6*2", PT1(1416,346), PT1(2152,346), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1812,346), PT1(2452,346), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576", "6x8", PT1(2152,346), PT1(2792,346), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h612", "6x8.5", PT1(2152,346), PT1(2956,346), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h648", "6x9", PT1(2152,346), PT1(3146,346), 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1416,346), PT1(2152,346), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432-div2", "2x6*2", PT1(1416,346), PT1(2152,346), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1812,346), PT1(2452,346), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(2152,346), PT1(2792,346), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h612", "6x8.5", PT1(2152,346), PT1(2956,346), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648", "6x9", PT1(2152,346), PT1(3146,346), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, mitsu_cp9550s_page_list, dyesub_pagesize_t, mitsu_cp9550s_page); @@ -4064,18 +4051,12 @@ LIST(dyesub_resolution_list_t, res_mitsu9600_dpi_list, dyesub_resolution_t, res_ static const dyesub_pagesize_t mitsu_cp9600_page[] = { - { "B7", "3.5x5", PT1(1076,300), PT1(1572,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432", "4x6", PT1(1228,300), PT1(1868,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1572,300), PT1(2128,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576", "6x8", PT1(1868,300), PT1(2442,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h612", "6x8.5", PT1(1868,300), PT1(2564,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h648", "6x9", PT1(1868,300), PT1(2730,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1076,300), PT1(1572,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1228,300), PT1(1868,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1572,300), PT1(2128,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1868,300), PT1(2442,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h612", "6x8.5", PT1(1868,300), PT1(2564,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648", "6x9", PT1(1868,300), PT1(2730,300), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, mitsu_cp9600_page_list, dyesub_pagesize_t, mitsu_cp9600_page); @@ -4153,18 +4134,12 @@ static void mitsu_cp9600_printer_end(stp_vars_t *v) /* Mitsubishi 9810D/DW */ static const dyesub_pagesize_t mitsu_cp9810_page[] = { - { "B7", "3.5x5", PT1(1076,300), PT1(1572,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432", "4x6", PT1(1228,300), PT1(1868,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1572,300), PT1(2128,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576", "6x8", PT1(1868,300), PT1(2442,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h612", "6x8.5", PT1(1868,300), PT1(2564,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h648", "6x9", PT1(1868,300), PT1(2730,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1076,300), PT1(1572,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1228,300), PT1(1868,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1572,300), PT1(2128,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1868,300), PT1(2442,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h612", "6x8.5", PT1(1868,300), PT1(2564,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648", "6x9", PT1(1868,300), PT1(2730,300), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, mitsu_cp9810_page_list, dyesub_pagesize_t, mitsu_cp9810_page); @@ -4181,27 +4156,45 @@ static const dyesub_printsize_t mitsu_cp9810_printsize[] = LIST(dyesub_printsize_list_t, mitsu_cp9810_printsize_list, dyesub_printsize_t, mitsu_cp9810_printsize); -static const laminate_t mitsu_cp9810_laminate[] = +static const overcoat_t mitsu_cp9810_overcoat[] = { - {"Matte", N_("Matte"), {1, "\x01"}}, {"Glossy", N_("Glossy"), {1, "\x00"}}, + {"Matte", N_("Matte"), {1, "\x01"}}, }; -LIST(laminate_list_t, mitsu_cp9810_laminate_list, laminate_t, mitsu_cp9810_laminate); +LIST(overcoat_list_t, mitsu_cp9810_overcoat_list, overcoat_t, mitsu_cp9810_overcoat); static const dyesub_stringitem_t mitsu9810_qualities[] = { - { "Fine", N_ ("Fine") }, + { "Fine", N_ ("Fine (Standard Media") }, + { "FineHG", N_ ("Fine (High Grade Media)") }, { "SuperFine", N_ ("Super Fine") }, }; LIST(dyesub_stringlist_t, mitsu9810_quality_list, dyesub_stringitem_t, mitsu9810_qualities); +static const stp_parameter_t mitsu98xx_parameters[] = +{ + { + "PrintSpeed", N_("Print Speed"), "Color=No,Category=Advanced Printer Setup", + N_("Print Speed"), + STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "UseLUT", N_("Internal Color Correction"), "Color=Yes,Category=Advanced Printer Setup", + N_("Use Internal Color Correction"), + STP_PARAMETER_TYPE_BOOLEAN, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, +}; +#define mitsu98xx_parameter_count (sizeof(mitsu98xx_parameters) / sizeof(const stp_parameter_t)) + static int -mitsu9810_load_parameters(const stp_vars_t *v, const char *name, +mitsu98xx_load_parameters(const stp_vars_t *v, const char *name, stp_parameter_t *description) { int i; - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); if (caps->parameter_count && caps->parameters) @@ -4228,6 +4221,11 @@ mitsu9810_load_parameters(const stp_vars_t *v, const char *name, description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; description->is_active = 1; } + else if (strcmp(name, "UseLUT") == 0) + { + description->deflt.boolean = 0; + description->is_active = 1; + } else { return 0; @@ -4235,12 +4233,12 @@ mitsu9810_load_parameters(const stp_vars_t *v, const char *name, return 1; } -static int mitsu9810_parse_parameters(stp_vars_t *v) +static int mitsu98xx_parse_parameters(stp_vars_t *v) { const char *quality = stp_get_string_parameter(v, "PrintSpeed"); dyesub_privdata_t *pd = get_privdata(v); - const laminate_t *laminate = NULL; - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const overcoat_t *overcoat = NULL; + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); /* No need to set global params if there's no privdata yet */ @@ -4252,14 +4250,18 @@ static int mitsu9810_parse_parameters(stp_vars_t *v) /* Parse options */ if (strcmp(quality, "SuperFine") == 0) { pd->privdata.m9550.quality = 0x80; + } else if (strcmp(quality, "FineHG") == 0) { + pd->privdata.m9550.quality = 0x11; /* Extension, backend corrects */ } else if (strcmp(quality, "Fine") == 0) { - pd->privdata.m9550.finedeep = 0x10; + pd->privdata.m9550.quality = 0x10; } + pd->privdata.m70x.use_lut = stp_get_boolean_parameter(v, "UseLUT"); + /* Matte lamination forces SuperFine mode */ - if (caps->laminate) { - laminate = dyesub_get_laminate_pattern(v); - if (*((const char*)((laminate->seq).data)) != 0x00) { + if (caps->overcoat) { + overcoat = dyesub_get_overcoat_pattern(v); + if (*((const char*)((overcoat->seq).data)) != 0x00) { pd->privdata.m9550.quality = 0x80; } } @@ -4267,7 +4269,6 @@ static int mitsu9810_parse_parameters(stp_vars_t *v) return 1; } - static void mitsu_cp98xx_printer_init(stp_vars_t *v, int model) { dyesub_privdata_t *pd = get_privdata(v); @@ -4284,12 +4285,13 @@ static void mitsu_cp98xx_printer_init(stp_vars_t *v, int model) stp_put16_be(pd->w_size, v); stp_put16_be(pd->h_size, v); if (model == 0x90) { - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); /* Lamination */ + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); /* Lamination */ } else { stp_putc(0x00, v); } dyesub_nputc(v, 0x00, 31); + /* Parameters 1 */ stp_putc(0x1b, v); stp_putc(0x57, v); @@ -4305,8 +4307,10 @@ static void mitsu_cp98xx_printer_init(stp_vars_t *v, int model) stp_put16_be(pd->copies, v); dyesub_nputc(v, 0x00, 8); stp_putc(pd->privdata.m9550.quality, v); - dyesub_nputc(v, 0x00, 10); + dyesub_nputc(v, 0x00, 9); + stp_putc(pd->privdata.m70x.use_lut, v); /* Use LUT? EXTENSION! */ stp_putc(0x01, v); + /* Unknown */ stp_putc(0x1b, v); stp_putc(0x57, v); @@ -4318,6 +4322,16 @@ static void mitsu_cp98xx_printer_init(stp_vars_t *v, int model) stp_putc(0x01, v); stp_putc(0x01, v); dyesub_nputc(v, 0x00, 36); + + /* Put out a single plane header */ + stp_putc(0x1b, v); + stp_putc(0x5a, v); + stp_putc(0x54, v); + stp_putc(0x80, v); /* special flag to say this is 8bpp packed BGR */ + stp_put16_be(0, v); /* Starting column for this block */ + stp_put16_be(0, v); /* Starting row for this block */ + stp_put16_be(pd->w_size, v); + stp_put16_be(pd->h_size, v); /* Number of rows in this block */ } static void mitsu_cp9810_printer_init(stp_vars_t *v) @@ -4332,77 +4346,31 @@ static void mitsu_cp9800_printer_init(stp_vars_t *v) static void mitsu_cp9810_printer_end(stp_vars_t *v) { - dyesub_privdata_t *pd = get_privdata(v); - /* Job Footer */ stp_putc(0x1b, v); stp_putc(0x50, v); stp_putc(0x4c, v); /* XXX 9800DW-S uses 0x4e, backend corrects */ stp_putc(0x00, v); - - if (pd->laminate && - *((const char*)((pd->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 < pd->w_size ; c++) { - for (r = 0 ; r < pd->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", PT1(1076,300), PT1(1568,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432", "4x6", PT1(1228,300), PT1(1864,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432-div2", "2x6*2", PT1(1228,300), PT1(1864,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1568,300), PT1(2128,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w360h504-div2", "3.5x5*2", PT1(1568,300), PT1(2128,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h432", "6x6", PT1(1820,300), PT1(1864,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w432h576", "6x8", PT1(1864,300), PT1(2422,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h612", "6x8.5", PT1(1864,300), PT1(2564,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h648", "6x9", PT1(1864,300), PT1(2730,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576-div2", "4x6*2", PT1(1864,300), PT1(2730,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1076,300), PT1(1568,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1228,300), PT1(1864,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432-div2", "2x6*2", PT1(1228,300), PT1(1864,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1568,300), PT1(2128,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w360h504-div2", "3.5x5*2", PT1(1568,300), PT1(2128,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h432", "6x6", PT1(1820,300), PT1(1864,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1864,300), PT1(2422,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h612", "6x8.5", PT1(1864,300), PT1(2564,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648", "6x9", PT1(1864,300), PT1(2730,300), DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h576-div2", "4x6*2", PT1(1864,300), PT1(2730,300), 0, 0, PT1(236,300), 0, DYESUB_PORTRAIT), +#if 0 /* Theoretically supported, no way to test */ + DEFINE_PAPER_SIMPLE( "w432h576-div4", "2x6*4", PT1(1864,300), PT1(2730,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648-div3", "3x6*3", PT1(1864,300), PT1(2730,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648-div2", "4.4x6*2", PT1(1864,300), PT1(2730,300), DYESUB_PORTRAIT), +#endif }; LIST(dyesub_pagesize_list_t, mitsu_cpd70x_page_list, dyesub_pagesize_t, mitsu_cpd70x_page); @@ -4419,17 +4387,22 @@ static const dyesub_printsize_t mitsu_cpd70x_printsize[] = { "300x300", "w432h612", 1864, 2564}, { "300x300", "w432h648", 1864, 2730}, { "300x300", "w432h576-div2", 1864, 2730}, +#if 0 + { "300x300", "w432h576-div4", 1864, 2730}, + { "300x300", "w432h648-div3", 1864, 2730}, + { "300x300", "w432h648-div2", 1864, 2730}, +#endif }; LIST(dyesub_printsize_list_t, mitsu_cpd70x_printsize_list, dyesub_printsize_t, mitsu_cpd70x_printsize); -static const laminate_t mitsu_cpd70x_laminate[] = +static const overcoat_t mitsu_cpd70x_overcoat[] = { {"Glossy", N_("Glossy"), {1, "\x00"}}, {"Matte", N_("Matte"), {1, "\x02"}}, }; -LIST(laminate_list_t, mitsu_cpd70x_laminate_list, laminate_t, mitsu_cpd70x_laminate); +LIST(overcoat_list_t, mitsu_cpd70x_overcoat_list, overcoat_t, mitsu_cpd70x_overcoat); static const dyesub_stringitem_t mitsu70x_qualities[] = { @@ -4447,7 +4420,6 @@ static const stp_parameter_t mitsu70x_parameters[] = STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE, STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0 }, -#ifdef MITSU70X_8BPP { "UseLUT", N_("Internal Color Correction"), "Color=Yes,Category=Advanced Printer Setup", N_("Use Internal Color Correction"), @@ -4460,16 +4432,52 @@ static const stp_parameter_t mitsu70x_parameters[] = STP_PARAMETER_TYPE_INT, STP_PARAMETER_CLASS_FEATURE, STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0 }, -#endif }; #define mitsu70x_parameter_count (sizeof(mitsu70x_parameters) / sizeof(const stp_parameter_t)) +static const dyesub_stringitem_t mitsu707_decks[] = +{ + { "Auto", N_ ("Automatic") }, + { "Lower", N_ ("Lower Deck") }, + { "Upper", N_ ("Upper Deck") } +}; +LIST(dyesub_stringlist_t, mitsu707_deck_list, dyesub_stringitem_t, mitsu707_decks); + +static const stp_parameter_t mitsu707_parameters[] = +{ + { + "PrintSpeed", N_("Print Speed"), "Color=No,Category=Advanced Printer Setup", + N_("Print Speed"), + STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "UseLUT", N_("Internal Color Correction"), "Color=Yes,Category=Advanced Printer Setup", + N_("Use Internal Color Correction"), + STP_PARAMETER_TYPE_BOOLEAN, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "Sharpen", N_("Image Sharpening"), "Color=No,Category=Advanced Printer Setup", + N_("Sharpening to apply to image (0 is off, 1 is min, 9 is max"), + STP_PARAMETER_TYPE_INT, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "Deck", N_("Printer Deck"), "Color=No,Category=Advanced Printer Setup", + N_("Printer Deck"), + STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, +}; +#define mitsu707_parameter_count (sizeof(mitsu707_parameters) / sizeof(const stp_parameter_t)) + static int mitsu70x_load_parameters(const stp_vars_t *v, const char *name, stp_parameter_t *description) { int i; - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); if (caps->parameter_count && caps->parameters) @@ -4496,7 +4504,6 @@ mitsu70x_load_parameters(const stp_vars_t *v, const char *name, description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; description->is_active = 1; } -#ifdef MITSU70X_8BPP else if (strcmp(name, "UseLUT") == 0) { description->deflt.boolean = 0; @@ -4509,7 +4516,71 @@ mitsu70x_load_parameters(const stp_vars_t *v, const char *name, description->bounds.integer.upper = 9; description->is_active = 1; } -#endif + else + { + return 0; + } + return 1; +} + +static int +mitsu707_load_parameters(const stp_vars_t *v, const char *name, + stp_parameter_t *description) +{ + int i; + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, + stp_get_model_id(v)); + + if (caps->parameter_count && caps->parameters) + { + for (i = 0; i < caps->parameter_count; i++) + if (strcmp(name, caps->parameters[i].name) == 0) + { + stp_fill_parameter_settings(description, &(caps->parameters[i])); + break; + } + } + + if (strcmp(name, "PrintSpeed") == 0) + { + description->bounds.str = stp_string_list_create(); + + const dyesub_stringlist_t *mlist = &mitsu70x_quality_list; + for (i = 0; i < mlist->n_items; i++) + { + const dyesub_stringitem_t *m = &(mlist->item[i]); + stp_string_list_add_string(description->bounds.str, + m->name, m->text); /* Do *not* want this translated, otherwise use gettext(m->text) */ + } + description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; + description->is_active = 1; + } + else if (strcmp(name, "UseLUT") == 0) + { + description->deflt.boolean = 0; + description->is_active = 1; + } + else if (strcmp(name, "Sharpen") == 0) + { + description->deflt.integer = 4; + description->bounds.integer.lower = 0; + description->bounds.integer.upper = 9; + description->is_active = 1; + } + else if (strcmp(name, "Deck") == 0) + { + description->bounds.str = stp_string_list_create(); + + const dyesub_stringlist_t *mlist = &mitsu707_deck_list; + for (i = 0; i < mlist->n_items; i++) + { + const dyesub_stringitem_t *m = &(mlist->item[i]); + stp_string_list_add_string(description->bounds.str, + m->name, m->text); /* Do *not* want this translated, otherwise use gettext(m->text) */ + } + description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; + description->is_active = 1; + } else { return 0; @@ -4537,49 +4608,62 @@ static int mitsu70x_parse_parameters(stp_vars_t *v) pd->privdata.m70x.quality = 0; } -#ifdef MITSU70X_8BPP + /* For D707 only */ + pd->privdata.m70x.deck = 0; + if (stp_check_string_parameter(v, "Deck", STP_PARAMETER_ACTIVE)) { + const char *deck = stp_get_string_parameter(v, "Deck"); + if (strcmp(deck, "Auto") == 0) + pd->privdata.m70x.deck = 0; + else if (strcmp(deck, "Lower") == 0) + pd->privdata.m70x.deck = 1; + else if (strcmp(deck, "Upper") == 0) + pd->privdata.m70x.deck = 2; + } + pd->privdata.m70x.use_lut = stp_get_boolean_parameter(v, "UseLUT"); pd->privdata.m70x.sharpen = stp_get_int_parameter(v, "Sharpen"); -#endif return 1; } -static void mitsu_cpd70k60_printer_init(stp_vars_t *v, unsigned char model) +static void mitsu_cpd70k60_job_start(stp_vars_t *v) { - const dyesub_cap_t *caps = dyesub_get_model_capabilities( - stp_get_model_id(v)); - dyesub_privdata_t *pd = get_privdata(v); - - /* Printer wakeup */ + /* Printer wakeup, once per job. */ stp_putc(0x1b, v); stp_putc(0x45, v); stp_putc(0x57, v); stp_putc(0x55, v); dyesub_nputc(v, 0x00, 508); +} + +static void mitsu_cpd70k60_printer_init(stp_vars_t *v, unsigned char model) +{ + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, + stp_get_model_id(v)); + dyesub_privdata_t *pd = get_privdata(v); /* Each copy gets this.. */ stp_putc(0x1b, v); stp_putc(0x5a, v); stp_putc(0x54, v); - stp_putc(model, v); /* k60 == x02, 305 == x90, d70x/d80 == x01 */ + stp_putc(model, v); /* k60 == x00, EK305 == x90, d70x/d80 == x01, ask300 = 0x80 */ dyesub_nputc(v, 0x00, 12); stp_put16_be(pd->w_size, v); stp_put16_be(pd->h_size, v); - if (caps->laminate && *((const char*)((pd->laminate->seq).data)) != 0x00) { + if (caps->overcoat && *((const char*)((pd->overcoat->seq).data)) != 0x00) { stp_put16_be(pd->w_size, v); if (model == 0x00 || model == 0x90) { - pd->privdata.m70x.laminate_offset = 0; + pd->privdata.m70x.overcoat_offset = 0; if (!pd->privdata.m70x.quality) pd->privdata.m70x.quality = 4; /* Matte Lamination forces UltraFine on K60 or K305 */ } else { - /* Laminate a slightly larger boundary in Matte mode */ - pd->privdata.m70x.laminate_offset = 12; + /* Overcoat a slightly larger boundary in Matte mode */ + pd->privdata.m70x.overcoat_offset = 12; if (!pd->privdata.m70x.quality) pd->privdata.m70x.quality = 3; /* Matte Lamination forces Superfine (or UltraFine) */ } - stp_put16_be(pd->h_size + pd->privdata.m70x.laminate_offset, v); + stp_put16_be(pd->h_size + pd->privdata.m70x.overcoat_offset, v); } else { /* Glossy lamination here */ stp_put16_be(0, v); @@ -4589,7 +4673,7 @@ static void mitsu_cpd70k60_printer_init(stp_vars_t *v, unsigned char model) dyesub_nputc(v, 0x00, 7); if (model == 0x01) { - stp_putc(0x00, v); /* D70x: 0x00 Auto deck selection, 0x01 for Lower, 0x02 for Upper. */ + stp_putc(pd->privdata.m70x.deck, v); /* D70x: 0x00 Auto deck selection, 0x01 for Lower, 0x02 for Upper. */ } else { stp_putc(0x01, v); /* All others have a single "lower" deck */ } @@ -4597,9 +4681,9 @@ static void mitsu_cpd70k60_printer_init(stp_vars_t *v, unsigned char model) stp_putc(0x00, v); /* Lamination always enabled */ - if (caps->laminate) { - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); /* Lamination mode */ + if (caps->overcoat) { + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); /* Lamination mode */ } else { stp_putc(0x00, v); } @@ -4608,6 +4692,14 @@ static void mitsu_cpd70k60_printer_init(stp_vars_t *v, unsigned char model) /* Multi-cut control */ if (strcmp(pd->pagesize,"w432h576-div2") == 0) { stp_putc(0x01, v); +#if 0 + } else if (strcmp(pd->pagesize,"w432h648-div2") == 0) { + stp_putc(0x02, v); + } else if (strcmp(pd->pagesize,"w432h648-div3") == 0) { + stp_putc(0x03, v); + } else if (strcmp(pd->pagesize,"w432h576-div4") == 0) { + stp_putc(0x04, v); +#endif } else if (strcmp(pd->pagesize,"w360h504-div2") == 0) { stp_putc(0x01, v); } else if (strcmp(pd->pagesize,"w288h432-div2") == 0) { @@ -4615,15 +4707,13 @@ static void mitsu_cpd70k60_printer_init(stp_vars_t *v, unsigned char model) } else { stp_putc(0x00, v); } -#ifdef MITSU70X_8BPP dyesub_nputc(v, 0x00, 12); + /* The next four bytes are EXTENSIONS, backend consumes! */ stp_putc(pd->privdata.m70x.sharpen, v); stp_putc(0x01, v); /* Mark as 8bpp BGR rather than 16bpp YMC cooked */ stp_putc(pd->privdata.m70x.use_lut, v); /* Use LUT? */ stp_putc(0x01, v); /* Tell the backend the data's in the proper order */ -#else - dyesub_nputc(v, 0x00, 16); -#endif + /* end extension */ dyesub_nputc(v, 0x00, 447); /* Pad to 512-byte block */ } @@ -4632,71 +4722,17 @@ static void mitsu_cpd70x_printer_init(stp_vars_t *v) mitsu_cpd70k60_printer_init(v, 0x01); } -#ifndef MITSU70X_8BPP -static void mitsu_cpd70x_printer_end(stp_vars_t *v) -{ - dyesub_privdata_t *pd = get_privdata(v); - - /* If Matte lamination is enabled, generate a lamination plane */ - if (*((const char*)((pd->laminate->seq).data)) != 0x00) { - - int r, c; - unsigned long seed = 1; - - /* Now generate lamination pattern */ - for (c = 0 ; c < pd->w_size ; c++) { - for (r = 0 ; r < pd->h_size + pd->privdata.m70x.laminate_offset ; r++) { - int i = xrand(&seed) & 0x3f; - if (pd->privdata.m70x.laminate_offset) { /* D70x uses 0x384b, 0x286a, 0x6c22 */ - if (i < 42) - stp_put16_be(0xe84b, v); - else if (i < 62) - stp_put16_be(0x286a, v); - else - stp_put16_be(0x6c22, v); - } else { /* K60 and EK305 use 0x9d00, 0x6500, 0x2900 */ - if (i < 42) - stp_put16_be(0x9d00, v); - else if (i < 62) - stp_put16_be(0x2900, v); - else - stp_put16_be(0x6500, v); - } - } - } - /* Pad up to a 512-byte block */ - dyesub_nputc(v, 0x00, 512 - ((pd->w_size * (pd->h_size + pd->privdata.m70x.laminate_offset) * 2) % 512)); - } -} -#endif - -static void mitsu_cpd70x_plane_end(stp_vars_t *v) -{ -#ifndef MITSU70X_8BPP - /* Pad up to a 512-byte block */ - dyesub_nputc(v, 0x00, 512 - ((pd->h_size * pd->w_size * 2) % 512)); -#endif -} - /* Mitsubishi CP-K60D */ static const dyesub_pagesize_t mitsu_cpk60_page[] = { - { "B7", "3.5x5", PT1(1076,300), PT1(1568,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432", "4x6", PT1(1218,300), PT1(1864,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432-div2", "2x6*2", PT1(1218,300), PT1(1864,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1568,300), PT1(2128,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w360h504-div2", "3.5x5*2", PT1(1568,300), PT1(2190,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h432", "6x6", PT1(1820,300), PT1(1864,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w432h576", "6x8", PT1(1864,300), PT1(2422,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576-div2", "4x6*2", PT1(1864,300), PT1(2454,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1076,300), PT1(1568,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1218,300), PT1(1864,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432-div2", "2x6*2", PT1(1218,300), PT1(1864,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1568,300), PT1(2128,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w360h504-div2", "3.5x5*2", PT1(1568,300), PT1(2190,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h432", "6x6", PT1(1820,300), PT1(1864,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1864,300), PT1(2422,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576-div2", "4x6*2", PT1(1864,300), PT1(2454,300), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, mitsu_cpk60_page_list, dyesub_pagesize_t, mitsu_cpk60_page); @@ -4733,7 +4769,7 @@ mitsu_k60_load_parameters(const stp_vars_t *v, const char *name, stp_parameter_t *description) { int i; - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); if (caps->parameter_count && caps->parameters) @@ -4760,7 +4796,6 @@ mitsu_k60_load_parameters(const stp_vars_t *v, const char *name, description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; description->is_active = 1; } -#ifdef MITSU70X_8BPP else if (strcmp(name, "UseLUT") == 0) { description->deflt.boolean = 0; @@ -4773,7 +4808,6 @@ mitsu_k60_load_parameters(const stp_vars_t *v, const char *name, description->bounds.integer.upper = 9; description->is_active = 1; } -#endif else { return 0; @@ -4783,20 +4817,13 @@ mitsu_k60_load_parameters(const stp_vars_t *v, const char *name, static const dyesub_pagesize_t mitsu_cpd80_page[] = { - { "w288h432", "4x6", PT1(1228,300), PT1(1864,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432-div2", "2x6*2", PT1(1228,300), PT1(1864,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h360", "5x5", PT1(1524,300), PT1(1568,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1568,300), PT1(2128,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h432", "6x6", PT1(1864,300), PT1(1820,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576", "6x8", PT1(1864,300), PT1(2422,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576-div2", "4x6*2", PT1(1864,300), PT1(2730,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1228,300), PT1(1864,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432-div2", "2x6*2", PT1(1228,300), PT1(1864,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h360", "5x5", PT1(1524,300), PT1(1568,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1568,300), PT1(2128,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h432", "6x6", PT1(1864,300), PT1(1820,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1864,300), PT1(2422,300), DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h576-div2", "4x6*2", PT1(1864,300), PT1(2730,300), 0, 0, PT1(236,300), 0, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, mitsu_cpd80_page_list, dyesub_pagesize_t, mitsu_cpd80_page); @@ -4817,16 +4844,11 @@ LIST(dyesub_printsize_list_t, mitsu_cpd80_printsize_list, dyesub_printsize_t, mi /* Kodak 305 */ static const dyesub_pagesize_t kodak305_page[] = { - { "w288h432", "4x6", PT1(1218,300), PT1(1864,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432-div2", "2x6*2", PT1(1218,300), PT1(1864,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w432h432", "6x6", PT1(1820,300), PT1(1864,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w432h576", "6x8", PT1(1864,300), PT1(2422,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576-div2", "4x6*2", PT1(1864,300), PT1(2454,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1218,300), PT1(1864,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432-div2", "2x6*2", PT1(1218,300), PT1(1864,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w432h432", "6x6", PT1(1820,300), PT1(1864,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1864,300), PT1(2422,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576-div2", "4x6*2", PT1(1864,300), PT1(2454,300), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, kodak305_page_list, dyesub_pagesize_t, kodak305_page); @@ -4850,28 +4872,21 @@ static void kodak305_printer_init(stp_vars_t *v) /* Mitsubishi CP-D90D */ static const dyesub_pagesize_t mitsu_cpd90_page[] = { - { "w144h432", "2x6", PT1(625,300), PT1(1852,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "B7", "3.5x5", PT1(1076,300), PT1(1550,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432", "4x6", PT1(1226,300), PT1(1852,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432-div2", "2x6*2", PT1(1226,300), PT1(1852,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1550,300), PT1(2128,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w360h360", "5x5", PT1(1527,300), PT1(1550,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w432h432", "6x6", PT1(1827,300), PT1(1852,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w432h576", "6x8", PT1(1852,300), PT1(2428,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576-div2", "4x6*2", PT1(1852,300), PT1(2488,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h612", "6x8.5", PT1(1852,300), PT1(2568,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h648", "6x9", PT1(1852,300), PT1(2729,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "w144h432", "2x6", PT1(625,300), PT1(1852,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1076,300), PT1(1550,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1226,300), PT1(1852,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432-div2", "2x6*2", PT1(1226,300), PT1(1852,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1550,300), PT1(2128,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w360h360", "5x5", PT1(1527,300), PT1(1550,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w432h432", "6x6", PT1(1827,300), PT1(1852,300), DYESUB_LANDSCAPE), + // XXX add 6x6+2x6! + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1852,300), PT1(2428,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576-div2", "4x6*2", PT1(1852,300), PT1(2488,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h612", "6x8.5", PT1(1852,300), PT1(2568,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648", "6x9", PT1(1852,300), PT1(2729,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648-div2", "4.4x6*2", PT1(1852,300), PT1(2728,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648-div3", "3x6*2", PT1(1852,300), PT1(2724,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648-div4", "2x6*4", PT1(1852,300), PT1(2628,300), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, mitsu_cpd90_page_list, dyesub_pagesize_t, mitsu_cpd90_page); @@ -4885,12 +4900,15 @@ static const dyesub_printsize_t mitsu_cpd90_printsize[] = { "300x300", "w360h360", 1527, 1550}, { "300x300", "w360h504", 1550, 2128}, { "300x300", "w432h432", 1827, 1852}, + // XXX add 6x6+2x6! { "300x300", "w432h576", 1852, 2428}, { "300x300", "w432h576-div2", 1852, 2488}, { "300x300", "w432h612", 1852, 2568}, { "300x300", "w432h648", 1852, 2729}, + { "300x300", "w432h648-div2", 1852, 2728}, + { "300x300", "w432h648-div3", 1852, 2724}, + { "300x300", "w432h648-div4", 1852, 2628}, }; - LIST(dyesub_printsize_list_t, mitsu_cpd90_printsize_list, dyesub_printsize_t, mitsu_cpd90_printsize); static const dyesub_stringitem_t mitsu_d90_qualities[] = @@ -4935,7 +4953,7 @@ mitsu_d90_load_parameters(const stp_vars_t *v, const char *name, stp_parameter_t *description) { int i; - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); if (caps->parameter_count && caps->parameters) @@ -5031,44 +5049,56 @@ static void mitsu_cpd90_printer_init(stp_vars_t *v) stp_putc(0x00, v); stp_putc(0x01, v); stp_putc(0x00, v); - if (strcmp(pd->pagesize,"w432h576-div2") == 0) - stp_putc(0x01, v); - else - stp_putc(0x00, v); if (strcmp(pd->pagesize,"w432h576-div2") == 0) { + stp_putc(0x01, v); stp_putc(0x04, v); stp_putc(0xbe, v); - dyesub_nputc(v, 0x00, 14); + dyesub_nputc(v, 0x00, 6); } else if (strcmp(pd->pagesize,"w288h432-div2") == 0) { + stp_putc(0x00, v); stp_putc(0x02, v); stp_putc(0x65, v); + dyesub_nputc(v, 0x00, 6); + } else if (strcmp(pd->pagesize,"w432h648-div2") == 0) { stp_putc(0x01, v); + stp_putc(0x05, v); + stp_putc(0x36, v); + dyesub_nputc(v, 0x00, 6); + } else if (strcmp(pd->pagesize,"w432h648-div3") == 0) { stp_putc(0x00, v); + stp_putc(0x03, v); + stp_putc(0x90, v); stp_putc(0x00, v); - stp_putc(0x01, v); - dyesub_nputc(v, 0x00, 10); + stp_putc(0x07, v); + stp_putc(0x14, v); + dyesub_nputc(v, 0x00, 3); + } else if (strcmp(pd->pagesize,"w432h648-div4") == 0) { + stp_putc(0x00, v); + stp_putc(0x02, v); + stp_putc(0x97, v); + stp_putc(0x00, v); + stp_putc(0x05, v); + stp_putc(0x22, v); + stp_putc(0x00, v); + stp_putc(0x07, v); + stp_putc(0xad, v); } else { - dyesub_nputc(v, 0x00, 16); + dyesub_nputc(v, 0x00, 9); } + dyesub_nputc(v, 0x00, 24); - dyesub_nputc(v, 0x00, 16); - - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); /* Lamination mode */ + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); /* Lamination mode */ stp_putc(pd->privdata.m70x.quality, v); -#ifdef MITSU70X_8BPP stp_putc(pd->privdata.m70x.use_lut, v); -#else - stp_putc(0x00, v); /* ie use printer's built in LUT */ -#endif stp_putc(pd->privdata.m70x.sharpen, v); /* Horizontal */ stp_putc(pd->privdata.m70x.sharpen, v); /* Vertical */ dyesub_nputc(v, 0x00, 11); dyesub_nputc(v, 0x00, 512 - 64); - /* Second header block */ + /* Data Plane header */ stp_putc(0x1b, v); stp_putc(0x5a, v); stp_putc(0x54, v); @@ -5080,12 +5110,16 @@ static void mitsu_cpd90_printer_init(stp_vars_t *v) stp_put16_be(pd->h_size, v); /* Rows */ dyesub_nputc(v, 0x00, 2); - dyesub_nputc(v, 0x00, 512 - 32); + dyesub_nputc(v, 0x00, 512 - 16); } -static void mitsu_cpd90_printer_end(stp_vars_t *v) +static void mitsu_cpd90_job_end(stp_vars_t *v) { - dyesub_privdata_t *pd = get_privdata(v); + int delay; + if (stp_check_int_parameter(v, "ComboWait", STP_PARAMETER_ACTIVE)) + delay = stp_get_int_parameter(v, "ComboWait"); + else + delay = 5; /* Wrap it up */ stp_putc(0x1b, v); @@ -5093,24 +5127,20 @@ static void mitsu_cpd90_printer_end(stp_vars_t *v) stp_putc(0x51, v); stp_putc(0x31, v); stp_putc(0x00, v); - stp_putc(pd->privdata.m70x.delay, v); + stp_putc(delay, v); } /* Fujifilm ASK-300 */ static const dyesub_pagesize_t fuji_ask300_page[] = { - { "B7", "3.5x5", PT1(1076,300), PT1(1568,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432", "4x6", PT1(1228,300), PT1(1864,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1568,300), PT1(2128,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w360h504-div2", "3.5x5*2", PT1(1568,300), PT1(2128,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576", "6x8", PT1(1864,300), PT1(2422,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h648", "6x9", PT1(1864,300), PT1(2730,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1076,300), PT1(1568,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432-div2", "2x6*2", PT1(1228,300), PT1(1864,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1228,300), PT1(1864,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1568,300), PT1(2128,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w360h504-div2", "3.5x5*2", PT1(1568,300), PT1(2128,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1864,300), PT1(2422,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648", "6x9", PT1(1864,300), PT1(2730,300), DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h576-div2", "4x6*2", PT1(1864,300), PT1(2730,300), 0, 0, PT1(236,300), 0, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, fuji_ask300_page_list, dyesub_pagesize_t, fuji_ask300_page); @@ -5119,10 +5149,12 @@ static const dyesub_printsize_t fuji_ask300_printsize[] = { { "300x300", "B7", 1076, 1568}, { "300x300", "w288h432", 1228, 1864}, + { "300x300", "w288h432-div2", 1228, 1864}, { "300x300", "w360h504", 1568, 2128}, { "300x300", "w360h504-div2", 1568, 2128}, { "300x300", "w432h576", 1864, 2422}, { "300x300", "w432h648", 1864, 2730}, + { "300x300", "w432h576-div2", 1864, 2730}, }; LIST(dyesub_printsize_list_t, fuji_ask300_printsize_list, dyesub_printsize_t, fuji_ask300_printsize); @@ -5132,19 +5164,102 @@ static void fuji_ask300_printer_init(stp_vars_t *v) mitsu_cpd70k60_printer_init(v, 0x80); } +/* Fujifilm ASK-2000/2500 */ +static const dyesub_pagesize_t fuji_ask2000_page[] = +{ + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1074,300), PT1(1536,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1228,300), PT1(1832,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1568,300), PT1(2130,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1832,300), PT1(2432,300), DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h576-div2", "4x6*2", PT1(1832,300), PT1(2732,300), 0, 0, PT1(236,300), 0, DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648", "6x9", PT1(1832,300), PT1(2748,300), DYESUB_PORTRAIT), +}; + +LIST(dyesub_pagesize_list_t, fuji_ask2000_page_list, dyesub_pagesize_t, fuji_ask2000_page); + +static const dyesub_printsize_t fuji_ask2000_printsize[] = +{ + { "300x300", "B7", 1074, 1536}, + { "300x300", "w288h432", 1228, 1832}, + { "300x300", "w360h504", 1536, 2130}, + { "300x300", "w432h576", 1864, 2432}, + { "300x300", "w432h576-div2", 1864, 2732}, + { "300x300", "w432h648", 1864, 2748}, +}; + +LIST(dyesub_printsize_list_t, fuji_ask2000_printsize_list, dyesub_printsize_t, fuji_ask2000_printsize); + +static void fuji_ask2000_printer_init(stp_vars_t *v) +{ + dyesub_privdata_t *pd = get_privdata(v); + + stp_zfwrite("\x1b\x23\x00\x00\x00\x04\x00\xff\xff\xff\xff", 1, 11, v); + stp_zfwrite("\x1b\x1e\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 1, 19, v); + stp_zfwrite("\x1b\xee\x00\x00\x00\x02\x00", 1, 7, v); + stp_put16_be(pd->copies, v); + stp_zfwrite("\x1b\xe1\x00\x00\x00\x0b\x00\x00\x04\x0c\x00\x00\x00\x00", 1, 14, v); + stp_put16_be(pd->w_size, v); + stp_put16_be(pd->h_size, v); + stp_zfwrite("\x1b\x15\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00", 1, 16, v); + stp_put16_be(pd->w_size, v); + stp_put16_be(pd->h_size, v); + stp_zfwrite("\x1b\xea\x00\x00\x00\x00", 1, 6, v); + stp_put32_be(pd->w_size * pd->h_size * 3, v); /* Data length */ + stp_putc(0x00, v); +} + +static void fuji_ask2000_printer_end(stp_vars_t *v) +{ + stp_zfwrite("\x1b\x23\x00\x00\x00\x04\x00\xff\xff\xff\xff", 1, 11, v); + stp_zfwrite("\x1b\x0a\x00\x00\x00\x00\x00", 1, 7, v); + stp_zfwrite("\x1b\x23\x00\x00\x00\x04\x00\xff\xff\xff\xff", 1, 11, v); +} + +/* Fujifilm ASK-4000 */ +static const dyesub_pagesize_t fuji_ask4000_page[] = +{ + DEFINE_PAPER_SIMPLE( "c8x10", "8x10", PT1(2444,300), PT1(3044,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w576h864", "8x12", PT1(2444,300), PT1(3644,300), DYESUB_PORTRAIT), +}; + +LIST(dyesub_pagesize_list_t, fuji_ask4000_page_list, dyesub_pagesize_t, fuji_ask4000_page); + +static const dyesub_printsize_t fuji_ask4000_printsize[] = +{ + { "300x300", "c8x10", 2444, 3044}, + { "300x300", "w576h864", 2444, 3644}, +}; + +LIST(dyesub_printsize_list_t, fuji_ask4000_printsize_list, dyesub_printsize_t, fuji_ask4000_printsize); + +static void fuji_ask4000_printer_init(stp_vars_t *v) +{ + dyesub_privdata_t *pd = get_privdata(v); + + stp_zfwrite("\x1b\x1e\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 1, 19, v); + stp_zfwrite("\x1b\xee\x00\x00\x00\x02\x00", 1, 7, v); + stp_put16_be(pd->copies, v); + stp_zfwrite("\x1b\xe1\x00\x00\x00\x0b\x00\x00\x04\x0c\x00\x00\x00\x00", 1, 14, v); + stp_put16_be(pd->w_size, v); + stp_put16_be(pd->h_size, v); + stp_zfwrite("\x1b\xea\x00\x00\x00\x00", 1, 6, v); + stp_put32_be(pd->w_size * pd->h_size * 3, v); /* Data length */ + stp_putc(0x00, v); +} + +static void fuji_ask4000_printer_end(stp_vars_t *v) +{ + stp_zfwrite("\x1b\x0a\x00\x00\x00\x00\x00", 1, 7, v); +} + /* Shinko CHC-S9045 (experimental) */ static const dyesub_pagesize_t shinko_chcs9045_page[] = { - { "w288h432", "4x6", PT1(1240,300), PT1(1844,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "B7", "3.5x5", PT1(1088,300), PT1(1548,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1548,300), PT1(2140,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h648", "6x9", PT1(1844,300), PT1(2740,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w283h425", "Sticker paper", PT1(1092,300), PT1(1726,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1240,300), PT1(1844,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "B7","3.5x5", PT1(1088,300), PT1(1548,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1548,300), PT1(2140,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648", "6x9", PT1(1844,300), PT1(2740,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w283h425", "Sticker paper", PT1(1092,300), PT1(1726,300), DYESUB_LANDSCAPE), }; LIST(dyesub_pagesize_list_t, shinko_chcs9045_page_list, dyesub_pagesize_t, shinko_chcs9045_page); @@ -5189,22 +5304,14 @@ static void shinko_chcs9045_printer_init(stp_vars_t *v) /* Shinko CHC-S2145 */ static const dyesub_pagesize_t shinko_chcs2145_page[] = { - { "w144h432", "2x6", PT1(634,300), PT1(1844,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432", "4x6", PT1(1240,300), PT1(1844,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432-div2", "2x6*2", PT1(1240,300), PT1(1844,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "B7", "3.5x5", PT1(1088,300), PT1(1548,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1548,300), PT1(2140,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576", "6x8", PT1(1844,300), PT1(2434,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576-div2", "4x6*2", PT1(1844,300), PT1(2492,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h648", "6x9", PT1(1844,300), PT1(2740,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "w144h432", "2x6", PT1(634,300), PT1(1844,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1240,300), PT1(1844,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432-div2", "2x6*2", PT1(1240,300), PT1(1844,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "B7", "3.5x5", PT1(1088,300), PT1(1548,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1548,300), PT1(2140,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1844,300), PT1(2434,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576-div2", "4x6*2", PT1(1844,300), PT1(2492,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648", "6x9", PT1(1844,300), PT1(2740,300), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, shinko_chcs2145_page_list, dyesub_pagesize_t, shinko_chcs2145_page); @@ -5223,7 +5330,7 @@ static const dyesub_printsize_t shinko_chcs2145_printsize[] = LIST(dyesub_printsize_list_t, shinko_chcs2145_printsize_list, dyesub_printsize_t, shinko_chcs2145_printsize); -static const laminate_t shinko_chcs2145_laminate[] = +static const overcoat_t shinko_chcs2145_overcoat[] = { {"PrinterDefault", N_("Printer Default"), {4, "\x01\0\0\0"}}, {"Glossy", N_("Glossy"), {4, "\x02\0\0\0"}}, @@ -5234,7 +5341,7 @@ static const laminate_t shinko_chcs2145_laminate[] = {"ExtraGlossyFine", N_("Extra Glossy Fine"), {4, "\x07\0\0\0"}}, }; -LIST(laminate_list_t, shinko_chcs2145_laminate_list, laminate_t, shinko_chcs2145_laminate); +LIST(overcoat_list_t, shinko_chcs2145_overcoat_list, overcoat_t, shinko_chcs2145_overcoat); static void shinko_chcs2145_printer_init(stp_vars_t *v) { @@ -5277,8 +5384,8 @@ static void shinko_chcs2145_printer_init(stp_vars_t *v) stp_put32_le(0x00, v); /* Print Method */ } - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); /* Print Mode */ + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); /* Print Mode */ stp_put32_le(0x00, v); stp_put32_le(0x00, v); @@ -5316,17 +5423,17 @@ static void shinko_chcs2145_printer_end(stp_vars_t *v) /* Shinko CHC-S1245 */ static const dyesub_pagesize_t shinko_chcs1245_page[] = { - { "w288h576", "8x4", PT1(1229,300), PT1(2446,300), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "w360h576", "8x5", PT1(1530,300), PT1(2446,300), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "w432h576", "8x6", PT1(1831,300), PT1(2446,300), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "w576h576", "8x8", PT1(2436,300), PT1(2446,300), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "w576h576-div2", "8x4*2", PT1(2446,300), PT1(2468,300), 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "c8x10", "8x10", PT1(2446,300), PT1(3036,300), 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "c8x10-w576h432_w576h288", "8x6+8x4", PT1(2446,300), PT1(3070,300), 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "c8x10-div2", "8x5*2", PT1(2446,300), PT1(3070,300), 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "w576h864", "8x12", PT1(2446,300), PT1(3636,300), 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "w576h864-div2", "8x6*2", PT1(2446,300), PT1(3672,300), 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "w576h864-div3", "8x4*3", PT1(2446,300), PT1(3707,300), 0, 0, 0, 0, DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "w288h576", "8x4", PT1(1229,300), PT1(2446,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h576", "8x5", PT1(1530,300), PT1(2446,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w432h576", "8x6", PT1(1831,300), PT1(2446,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w576h576", "8x8", PT1(2436,300), PT1(2446,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w576h576-div2", "8x4*2", PT1(2446,300), PT1(2468,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "c8x10", "8x10", PT1(2446,300), PT1(3036,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "c8x10-w576h432_w576h288", "8x6+8x4", PT1(2446,300), PT1(3070,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "c8x10-div2", "8x5*2", PT1(2446,300), PT1(3070,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w576h864", "8x12", PT1(2446,300), PT1(3636,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w576h864-div2", "8x6*2", PT1(2446,300), PT1(3672,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w576h864-div3", "8x4*3", PT1(2446,300), PT1(3707,300), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, shinko_chcs1245_page_list, dyesub_pagesize_t, shinko_chcs1245_page); @@ -5348,16 +5455,16 @@ static const dyesub_printsize_t shinko_chcs1245_printsize[] = LIST(dyesub_printsize_list_t, shinko_chcs1245_printsize_list, dyesub_printsize_t, shinko_chcs1245_printsize); -static const laminate_t shinko_chcs1245_laminate[] = +static const overcoat_t shinko_chcs1245_overcoat[] = { - {"PrinterDefault", N_("Printer Default"), {1, "\x01"}}, - {"Glossy", N_("Glossy"), {1, "\x02"}}, - {"GlossyFine", N_("Glossy Fine"), {1, "\x03"}}, - {"Matte", N_("Matte"), {1, "\x04"}}, - {"MatteFine", N_("Matte Fine"), {1, "\x05"}}, + {"PrinterDefault", N_("Printer Default"), {4, "\x01\x00\x00\x00"}}, + {"Glossy", N_("Glossy"), {4, "\x02\x00\x00\x00"}}, + {"GlossyFine", N_("Glossy Fine"), {4, "\x03\x00\x00\x00"}}, + {"Matte", N_("Matte"), {4, "\x04\x00\x00\x00"}}, + {"MatteFine", N_("Matte Fine"), {4, "\x05\x00\x00\x00"}}, }; -LIST(laminate_list_t, shinko_chcs1245_laminate_list, laminate_t, shinko_chcs1245_laminate); +LIST(overcoat_list_t, shinko_chcs1245_overcoat_list, overcoat_t, shinko_chcs1245_overcoat); static const dyesub_stringitem_t shinko_chcs1245_dusts[] = { @@ -5389,7 +5496,7 @@ shinko_chcs1245_load_parameters(const stp_vars_t *v, const char *name, stp_parameter_t *description) { int i; - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); if (caps->parameter_count && caps->parameters) @@ -5496,11 +5603,11 @@ static void shinko_chcs1245_printer_init(stp_vars_t *v) stp_put32_le(0x00, v); stp_put32_le(media, v); - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); /* Print Mode */ + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); /* Print Mode */ stp_put32_le(0x00, v); - if (((const unsigned char*)(pd->laminate->seq).data)[0] == 0x02 || - ((const unsigned char*)(pd->laminate->seq).data)[0] == 0x03) { + if (((const unsigned char*)(pd->overcoat->seq).data)[0] == 0x02 || + ((const unsigned char*)(pd->overcoat->seq).data)[0] == 0x03) { stp_put32_le(0x07fffffff, v); /* Glossy */ } else { stp_put32_le(pd->privdata.s1245.matte_intensity, v); /* matte intensity */ @@ -5532,16 +5639,16 @@ static void shinko_chcs1245_printer_init(stp_vars_t *v) /* Shinko CHC-S6245 */ static const dyesub_pagesize_t shinko_chcs6245_page[] = { - { "w288h576", "8x4", PT1(1236,300), PT1(2464,300), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "w360h576", "8x5", PT1(1536,300), PT1(2464,300), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "w432h576", "8x6", PT1(1836,300), PT1(2464,300), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "w576h576", "8x8", PT1(2436,300), PT1(2464,300), 0, 0, 0, 0, DYESUB_LANDSCAPE}, - { "w576h576-div2", "8x4*2", PT1(2464,300), PT1(2494,300), 0, 0, PT(0,300), PT(0,300), DYESUB_PORTRAIT}, - { "c8x10", "8x10", PT1(2464,300), PT1(3036,300), 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "c8x10-div2", "8x5*2", PT1(2464,300), PT1(3094,300), 0, 0, PT(0,300), PT(0,300), DYESUB_PORTRAIT}, - { "w576h864", "8x12", PT1(2464,300), PT1(3636,300), 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "w576h864-div2", "8x6*2", PT1(2464,300), PT1(3694,300), 0, 0, PT(0,300), PT(0,300), DYESUB_PORTRAIT}, - { "w576h864-div3", "8x4*3", PT1(2464,300), PT1(3742,300), 0, 0, PT(0,300), PT(0,300), DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "w288h576", "8x4", PT1(1236,300), PT1(2464,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h576", "8x5", PT1(1536,300), PT1(2464,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w432h576", "8x6", PT1(1836,300), PT1(2464,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w576h576", "8x8", PT1(2436,300), PT1(2464,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w576h576-div2", "8x4*2", PT1(2464,300), PT1(2494,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "c8x10", "8x10", PT1(2464,300), PT1(3036,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "c8x10-div2", "8x5*2", PT1(2464,300), PT1(3094,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w576h864", "8x12", PT1(2464,300), PT1(3636,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w576h864-div2", "8x6*2", PT1(2464,300), PT1(3694,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w576h864-div3", "8x4*3", PT1(2464,300), PT1(3742,300), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, shinko_chcs6245_page_list, dyesub_pagesize_t, shinko_chcs6245_page); @@ -5562,14 +5669,14 @@ static const dyesub_printsize_t shinko_chcs6245_printsize[] = LIST(dyesub_printsize_list_t, shinko_chcs6245_printsize_list, dyesub_printsize_t, shinko_chcs6245_printsize); -static const laminate_t shinko_chcs6245_laminate[] = +static const overcoat_t shinko_chcs6245_overcoat[] = { {"Glossy", N_("Glossy"), {4, "\x03\x00\x00\x00"}}, {"Matte", N_("Matte"), {4, "\x02\x00\x00\x00"}}, {"None", N_("None"), {4, "\x01\x00\x00\x00"}}, }; -LIST(laminate_list_t, shinko_chcs6245_laminate_list, laminate_t, shinko_chcs6245_laminate); +LIST(overcoat_list_t, shinko_chcs6245_overcoat_list, overcoat_t, shinko_chcs6245_overcoat); static void shinko_chcs6245_printer_init(stp_vars_t *v) { @@ -5609,8 +5716,8 @@ static void shinko_chcs6245_printer_init(stp_vars_t *v) stp_put32_le(0x00, v); stp_put32_le(0x00, v); - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); /* Lamination */ + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); /* Lamination */ stp_put32_le(0x00, v); stp_put32_le(0x00, v); @@ -5639,26 +5746,16 @@ static void shinko_chcs6245_printer_init(stp_vars_t *v) /* Shinko CHC-S6145 */ static const dyesub_pagesize_t shinko_chcs6145_page[] = { - { "w144h432", "2x6", PT1(634,300), PT1(1844,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432", "4x6", PT1(1240,300), PT1(1844,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432-div2", "2x6*2", PT1(1240,300), PT1(1844,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h360", "5x5", PT1(1536,300), PT1(1548,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1548,300), PT1(2140,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h432", "6x6", PT1(1832,300), PT1(1844,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w432h576", "6x8", PT1(1844,300), PT1(2434,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576-w432h432_w432h144", "6x6+2x6", PT1(1844,300), PT1(2434,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576-div2", "4x6*2", PT1(1844,300), PT1(2492,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h648", "6x9", PT1(1844,300), PT1(2740,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "w144h432", "2x6", PT1(634,300), PT1(1844,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1240,300), PT1(1844,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432-div2", "2x6*2", PT1(1240,300), PT1(1844,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h360", "5x5", PT1(1536,300), PT1(1548,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1548,300), PT1(2140,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h432", "6x6", PT1(1832,300), PT1(1844,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1844,300), PT1(2434,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576-w432h432_w432h144", "6x6+2x6", PT1(1844,300), PT1(2434,300),DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576-div2", "4x6*2", PT1(1844,300), PT1(2492,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h648", "6x9", PT1(1844,300), PT1(2740,300), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, shinko_chcs6145_page_list, dyesub_pagesize_t, shinko_chcs6145_page); @@ -5679,7 +5776,7 @@ static const dyesub_printsize_t shinko_chcs6145_printsize[] = LIST(dyesub_printsize_list_t, shinko_chcs6145_printsize_list, dyesub_printsize_t, shinko_chcs6145_printsize); -static const laminate_t shinko_chcs6145_laminate[] = +static const overcoat_t shinko_chcs6145_overcoat[] = { {"PrinterDefault", N_("Printer Default"), {4, "\0\0\0\0"}}, {"None", N_("None"), {4, "\x01\0\0\0"}}, @@ -5687,7 +5784,7 @@ static const laminate_t shinko_chcs6145_laminate[] = {"Matte", N_("Matte"), {4, "\x03\0\0\0"}}, }; -LIST(laminate_list_t, shinko_chcs6145_laminate_list, laminate_t, shinko_chcs6145_laminate); +LIST(overcoat_list_t, shinko_chcs6145_overcoat_list, overcoat_t, shinko_chcs6145_overcoat); static void shinko_chcs6145_printer_init(stp_vars_t *v) { @@ -5740,8 +5837,8 @@ static void shinko_chcs6145_printer_init(stp_vars_t *v) stp_put32_le(0x00, v); } stp_put32_le(0x00, v); /* XXX quality; 00 == default, 0x01 == std */ - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); /* Lamination */ + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); /* Lamination */ stp_put32_le(0x00, v); stp_put32_le(0x00, v); @@ -5774,18 +5871,12 @@ static void shinko_chcs6145_printer_init(stp_vars_t *v) /* Ciaat Brava 21 */ static const dyesub_pagesize_t ciaat_brava21_page[] = { - { "w144h432", "2x6", PT1(634,300), PT1(1844,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432", "4x6", PT1(1240,300), PT1(1844,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w288h432-div2", "2x6*2", PT1(1240,300), PT1(1844,300), 0, 0, 0, 0, - DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1548,300), PT1(2140,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576", "6x8", PT1(1844,300), PT1(2434,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, - { "w432h576-div2", "4x6*2", PT1(1844,300), PT1(2492,300), 0, 0, 0, 0, - DYESUB_PORTRAIT}, + DEFINE_PAPER_SIMPLE( "w144h432", "2x6", PT1(634,300), PT1(1844,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432", "4x6", PT1(1240,300), PT1(1844,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w288h432-div2", "2x6*2", PT1(1240,300), PT1(1844,300), DYESUB_LANDSCAPE), + DEFINE_PAPER_SIMPLE( "w360h504", "5x7", PT1(1548,300), PT1(2140,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576", "6x8", PT1(1844,300), PT1(2434,300), DYESUB_PORTRAIT), + DEFINE_PAPER_SIMPLE( "w432h576-div2", "4x6*2", PT1(1844,300), PT1(2492,300), DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, ciaat_brava21_page_list, dyesub_pagesize_t, ciaat_brava21_page); @@ -5814,15 +5905,17 @@ LIST(dyesub_resolution_list_t, res_dnpds40_dpi_list, dyesub_resolution_t, res_dn /* Imaging area is wider than print size, we always must supply the printer with the full imaging width. */ static const dyesub_pagesize_t dnpds40_page[] = { - { "B7", "3.5x5", PT1(1088,300), PT1(1920,300), 0, 0, PT(186,300), PT(186,300), DYESUB_LANDSCAPE}, - { "w288h432", "4x6", PT1(1240,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE}, - { "w288h432-div2", "2x6*2", PT1(1240,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1920,300), PT1(2138,300), PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT}, - { "w360h504-div2", "3.5x5*2", PT1(1920,300), PT1(2176,300), PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT}, - { "w432h576", "6x8", PT1(1920,300), PT1(2436,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, - { "w432h576-div4", "2x6*4", PT1(1920,300), PT1(2436,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, - { "w432h576-div2", "4x6*2", PT1(1920,300), PT1(2498,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, - { "w432h648", "6x9", PT1(1920,300), PT1(2740,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, + DEFINE_PAPER( "B7", "3.5x5", PT1(1088,300), PT1(1920,300), 0, 0, PT(186,300), PT(186,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w288h432", "4x6", PT1(1240,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w288h432-div2", "2x6*2", PT1(1240,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w360h504", "5x7", PT1(1920,300), PT1(2138,300), PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w360h504-div2", "3.5x5*2", PT1(1920,300), PT1(2176,300), PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h432", "6x6", PT1(1836,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w432h576", "6x8", PT1(1920,300), PT1(2436,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h576-div4", "2x6*4", PT1(1920,300), PT1(2436,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h576-div2", "4x6*2", PT1(1920,300), PT1(2498,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h576-w432h432_w432h144", "6x6+2x6", PT1(1920,300), PT1(2436,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h648", "6x9", PT1(1920,300), PT1(2740,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, dnpds40_page_list, dyesub_pagesize_t, dnpds40_page); @@ -5839,26 +5932,85 @@ static const dyesub_printsize_t dnpds40_printsize[] = { "300x600", "w360h504", 1920, 4276}, { "300x300", "w360h504-div2", 1920, 2176}, { "300x600", "w360h504-div2", 1920, 4352}, + { "300x300", "w432h432", 1836, 1920}, + { "300x600", "w432h432", 3672, 1920}, { "300x300", "w432h576", 1920, 2436}, { "300x600", "w432h576", 1920, 4872}, { "300x300", "w432h576-div4", 1920, 2436}, { "300x600", "w432h576-div4", 1920, 4872}, { "300x300", "w432h576-div2", 1920, 2498}, { "300x600", "w432h576-div2", 1920, 4996}, + { "300x300", "w432h576-w432h432_w432h144", 1920, 2436}, + { "300x600", "w432h576-w432h432_w432h144", 1920, 4872}, { "300x300", "w432h648", 1920, 2740}, { "300x600", "w432h648", 1920, 5480}, }; LIST(dyesub_printsize_list_t, dnpds40_printsize_list, dyesub_printsize_t, dnpds40_printsize); -static const laminate_t dnpds40_laminate[] = +static const overcoat_t dnpds40_overcoat[] = { {"Glossy", N_("Glossy"), {3, "000"}}, {"Matte", N_("Matte"), {3, "001"}}, }; -LIST(laminate_list_t, dnpds40_laminate_list, laminate_t, dnpds40_laminate); +LIST(overcoat_list_t, dnpds40_overcoat_list, overcoat_t, dnpds40_overcoat); + +static const stp_parameter_t ds40_parameters[] = +{ + { + "NoCutWaste", N_("No Cut-Paper Waste"), "Color=No,Category=Advanced Printer Setup", + N_("No Cut-Paper Waste"), + STP_PARAMETER_TYPE_BOOLEAN, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 0, STP_CHANNEL_NONE, 1, 0 + }, +}; + +#define ds40_parameter_count (sizeof(ds40_parameters) / sizeof(const stp_parameter_t)) + +static int +ds40_load_parameters(const stp_vars_t *v, const char *name, + stp_parameter_t *description) +{ + int i; + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, + stp_get_model_id(v)); + + if (caps->parameter_count && caps->parameters) + { + for (i = 0; i < caps->parameter_count; i++) + if (strcmp(name, caps->parameters[i].name) == 0) + { + stp_fill_parameter_settings(description, &(caps->parameters[i])); + break; + } + } + if (strcmp(name, "NoCutWaste") == 0) + { + description->is_active = 1; + description->deflt.boolean = 0; + } + else + { + return 0; + } + + return 1; +} + +static int ds40_parse_parameters(stp_vars_t *v) +{ + dyesub_privdata_t *pd = get_privdata(v); + + int nocutwaste = stp_get_boolean_parameter(v, "NoCutWaste"); + + if (pd) { + pd->privdata.dnp.nocutwaste = nocutwaste; + } + + return 1; +} static void dnp_printer_start_common(stp_vars_t *v) { @@ -5866,8 +6018,8 @@ static void dnp_printer_start_common(stp_vars_t *v) /* Configure Lamination */ stp_zprintf(v, "\033PCNTRL OVERCOAT 0000000800000"); - stp_zfwrite((pd->laminate->seq).data, 1, - (pd->laminate->seq).bytes, v); /* Lamination mode */ + stp_zfwrite((pd->overcoat->seq).data, 1, + (pd->overcoat->seq).bytes, v); /* Lamination mode */ /* Set quantity.. Backend overrides as needed. */ stp_zprintf(v, "\033PCNTRL QTY 00000008%07d\r", pd->copies); @@ -5881,13 +6033,19 @@ static void dnpds40_printer_start(stp_vars_t *v) dnp_printer_start_common(v); /* Set cutter option to "normal" */ - stp_zprintf(v, "\033PCNTRL CUTTER 0000000800000"); - if (!strcmp(pd->pagesize, "w288h432-div2")) { - stp_zprintf(v, "120"); - } else if (!strcmp(pd->pagesize, "w432h576-div4")) { - stp_zprintf(v, "120"); + if (!strcmp(pd->pagesize, "w432h576-w432h432_w432h144")) { + stp_zprintf(v, "\033PCNTRL FULL_CUTTER_SET 00000016"); + stp_zprintf(v, "060020000000000\r"); + } else if (!strcmp(pd->pagesize, "w288h432-div2") || + !strcmp(pd->pagesize, "w432h576-div4")) { + stp_zprintf(v, "\033PCNTRL CUTTER 00000008"); + stp_zprintf(v, "00000120"); + } else if (pd->privdata.dnp.nocutwaste) { + stp_zprintf(v, "\033PCNTRL CUTTER 00000008"); + stp_zprintf(v, "00000001"); } else { - stp_zprintf(v, "000"); + stp_zprintf(v, "\033PCNTRL CUTTER 00000008"); + stp_zprintf(v, "00000000"); } /* Configure multi-cut/page size */ @@ -5901,8 +6059,12 @@ static void dnpds40_printer_start(stp_vars_t *v) stp_zprintf(v, "03"); } else if (!strcmp(pd->pagesize, "w360h504-div2")) { stp_zprintf(v, "22"); + } else if (!strcmp(pd->pagesize, "w432h432")) { + stp_zprintf(v, "27"); } else if (!strcmp(pd->pagesize, "w432h576")) { stp_zprintf(v, "04"); + } else if (!strcmp(pd->pagesize, "w432h576-w432h432_w432h144")) { + stp_zprintf(v, "04"); } else if (!strcmp(pd->pagesize, "w432h648")) { stp_zprintf(v, "05"); } else if (!strcmp(pd->pagesize, "w432h576-div2")) { @@ -5953,6 +6115,8 @@ static void dnpds40_plane_init(stp_vars_t *v) stp_put32_le(11808, v); /* horizontal pixels per meter, fixed at 300dpi */ if (pd->h_dpi == 600) stp_put32_le(23615, v); /* vertical pixels per meter @ 600dpi */ + else if (pd->h_dpi == 334) + stp_put32_le(13146, v); /* vertical pixels per meter @ 334dpi */ else stp_put32_le(11808, v); /* vertical pixels per meter @ 300dpi */ stp_put32_le(256, v); /* entries in color table */ @@ -5967,21 +6131,21 @@ static void dnpds40_plane_init(stp_vars_t *v) printer with the full imaging width. */ static const dyesub_pagesize_t dnpds80_page[] = { - { "w288h576", "8x4", PT1(1236,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w360h576", "8x5", PT1(1536,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w432h576", "8x6", PT1(1836,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w576h576", "8x8", PT1(2436,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w576h576-div2", "8x4*2", PT1(2502,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w576h648-w576h360_w576h288", "8x5+8x4", PT1(2560,300), PT1(2802,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "c8x10", "8x10", PT1(2560,300), PT1(3036,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "c8x10-div2", "8x5*2", PT1(2560,300), PT1(3102,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "c8x10-w576h432_w576h288", "8x6+8x4", PT1(2560,300), PT1(3102,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h792-w576h432_w576h360", "8x6+8x5", PT1(2560,300), PT1(3402,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h842", "8x11.7", PT1(2560,300), PT1(3544,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h864", "8x12", PT1(2560,300), PT1(3636,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h864-div2", "8x6*2", PT1(2560,300), PT1(3702,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h864-w576h576_w576h288", "8x8+8x4", PT1(2560,300), PT1(3702,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h864-div3", "8x4*3", PT1(2560,300), PT1(3768,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + DEFINE_PAPER( "w288h576", "8x4", PT1(1236,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w360h576", "8x5", PT1(1536,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w432h576", "8x6", PT1(1836,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w576h576", "8x8", PT1(2436,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w576h576-div2", "8x4*2", PT1(2502,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w576h648-w576h360_w576h288", "8x5+8x4", PT1(2560,300), PT1(2802,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "c8x10", "8x10", PT1(2560,300), PT1(3036,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "c8x10-div2", "8x5*2", PT1(2560,300), PT1(3102,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "c8x10-w576h432_w576h288", "8x6+8x4", PT1(2560,300), PT1(3102,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h792-w576h432_w576h360", "8x6+8x5", PT1(2560,300), PT1(3402,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h842", "8x11.7", PT1(2560,300), PT1(3544,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h864", "8x12", PT1(2560,300), PT1(3636,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h864-div2", "8x6*2", PT1(2560,300), PT1(3702,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h864-w576h576_w576h288", "8x8+8x4", PT1(2560,300), PT1(3702,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h864-div3", "8x4*3", PT1(2560,300), PT1(3768,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, dnpds80_page_list, dyesub_pagesize_t, dnpds80_page); @@ -6027,6 +6191,7 @@ static int dnpds80_parse_parameters(stp_vars_t *v) const char *pagesize = stp_get_string_parameter(v, "PageSize"); dyesub_privdata_t *pd = get_privdata(v); int multicut = 0; + int nocutwaste = stp_get_boolean_parameter(v, "NoCutWaste"); if (!strcmp(pagesize, "c8x10")) { multicut = 6; @@ -6064,8 +6229,10 @@ static int dnpds80_parse_parameters(stp_vars_t *v) } /* No need to set global params if there's no privdata yet */ - if (pd) + if (pd) { pd->privdata.dnp.multicut = multicut; + pd->privdata.dnp.nocutwaste = nocutwaste; + } return 1; } @@ -6078,7 +6245,11 @@ static void dnpds80_printer_start(stp_vars_t *v) dnp_printer_start_common(v); /* Set cutter option to "normal" */ - stp_zprintf(v, "\033PCNTRL CUTTER 0000000800000000"); + stp_zprintf(v, "\033PCNTRL CUTTER 00000008"); + if (pd->privdata.dnp.nocutwaste) + stp_zprintf(v, "00000001"); + else + stp_zprintf(v, "00000000"); /* Configure multi-cut/page size */ stp_zprintf(v, "\033PIMAGE MULTICUT 00000008%08d", pd->privdata.dnp.multicut); @@ -6100,10 +6271,12 @@ static int dnpds80dx_parse_parameters(stp_vars_t *v) const char* duplex_mode; dyesub_privdata_t *pd = get_privdata(v); int multicut = 0; + int nocutwaste; pagesize = stp_get_string_parameter(v, "PageSize"); duplex_mode = stp_get_string_parameter(v, "Duplex"); media = dyesub_get_mediatype(v); + nocutwaste = stp_get_boolean_parameter(v, "NoCutWaste"); if (!strcmp(media->name, "Roll")) { if (strcmp(duplex_mode, "None") && strcmp(duplex_mode, "Standard")) { @@ -6158,6 +6331,7 @@ static int dnpds80dx_parse_parameters(stp_vars_t *v) multicut += 200; /* Duplex, front */ pd->privdata.dnp.multicut = multicut; + pd->privdata.dnp.nocutwaste = nocutwaste; return 1; } @@ -6172,24 +6346,24 @@ static int dnpds80dx_parse_parameters(stp_vars_t *v) static const dyesub_pagesize_t dnpds80dx_page[] = { - { "w288h576", "8x4", PT1(1236,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w360h576", "8x5", PT1(1536,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w432h576", "8x6", PT1(1836,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w576h576", "8x8", PT1(2436,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w576h576-div2", "8x4*2", PT1(2502,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w576h648-w576h360_w576h288", "8x5+8x4", PT1(2560,300), PT1(2802,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "c8x10", "8x10", PT1(2560,300), PT1(3036,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "c8x10-div2", "8x5*2", PT1(2560,300), PT1(3102,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "c8x10-w576h432_w576h288", "8x6+8x4", PT1(2560,300), PT1(3102,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h774-w576h756", "8x10.5", PT1(2560,300), PT1(3186,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h774", "8x10.75", PT1(2560,300), PT1(3186,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h792-w576h432_w576h360", "8x6+8x5", PT1(2560,300), PT1(3402,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h842", "8x11.7", PT1(2560,300), PT1(3544,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h864", "8x12", PT1(2560,300), PT1(3636,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h864-div2", "8x6*2", PT1(2560,300), PT1(3702,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h864-w576h576_w576h288", "8x8+8x4", PT1(2560,300), PT1(3702,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h864-div3", "8x4*3", PT1(2560,300), PT1(3768,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h864-div3sheet", "8x4*3 SHEET", PT1(2560,300), PT1(3702,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + DEFINE_PAPER( "w288h576", "8x4", PT1(1236,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w360h576", "8x5", PT1(1536,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w432h576", "8x6", PT1(1836,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w576h576", "8x8", PT1(2436,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w576h576-div2", "8x4*2", PT1(2502,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w576h648-w576h360_w576h288", "8x5+8x4", PT1(2560,300), PT1(2802,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "c8x10", "8x10", PT1(2560,300), PT1(3036,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "c8x10-div2", "8x5*2", PT1(2560,300), PT1(3102,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "c8x10-w576h432_w576h288", "8x6+8x4", PT1(2560,300), PT1(3102,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h774-w576h756", "8x10.5", PT1(2560,300), PT1(3186,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h774", "8x10.75", PT1(2560,300), PT1(3186,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h792-w576h432_w576h360", "8x6+8x5", PT1(2560,300), PT1(3402,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h842", "8x11.7", PT1(2560,300), PT1(3544,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h864", "8x12", PT1(2560,300), PT1(3636,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h864-div2", "8x6*2", PT1(2560,300), PT1(3702,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h864-w576h576_w576h288", "8x8+8x4", PT1(2560,300), PT1(3702,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h864-div3", "8x4*3", PT1(2560,300), PT1(3768,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h864-div3sheet", "8x4*3 SHEET", PT1(2560,300), PT1(3702,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, dnpds80dx_page_list, dyesub_pagesize_t, dnpds80dx_page); @@ -6241,14 +6415,17 @@ LIST(dyesub_printsize_list_t, dnpds80dx_printsize_list, dyesub_printsize_t, dnpd printer with the full imaging width. */ static const dyesub_pagesize_t dnpsrx1_page[] = { - { "B7", "3.5x5", PT1(1088,300), PT1(1920,300), 0, 0, PT(186,300), PT(186,300), DYESUB_LANDSCAPE}, - { "w288h432", "4x6", PT1(1240,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE}, - { "w288h432-div2", "2x6*2", PT1(1240,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1920,300), PT1(2138,300), PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT}, - { "w360h504-div2", "3.5x5*2", PT1(1920,300), PT1(2176,300), PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT}, - { "w432h576", "6x8", PT1(1920,300), PT1(2436,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, - { "w432h576-div4", "2x6*4", PT1(1920,300), PT1(2436,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, - { "w432h576-div2", "4x6*2", PT1(1920,300), PT1(2498,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, + DEFINE_PAPER( "B7", "3.5x5", PT1(1088,300), PT1(1920,300), 0, 0, PT(186,300), PT(186,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w288h432", "4x6", PT1(1240,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w288h432-div2", "2x6*2", PT1(1240,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w360h360","5x5", PT1(1540,300), PT1(1920,300), 0, 0, PT(186,300), PT(186,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w360h504", "5x7", PT1(1920,300), PT1(2138,300), PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w360h504-div2", "3.5x5*2", PT1(1920,300), PT1(2176,300), PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h432", "6x6", PT1(1836,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w432h576", "6x8", PT1(1920,300), PT1(2436,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h576-div4", "2x6*4", PT1(1920,300), PT1(2436,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h576-div2", "4x6*2", PT1(1920,300), PT1(2498,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT), + }; LIST(dyesub_pagesize_list_t, dnpsrx1_page_list, dyesub_pagesize_t, dnpsrx1_page); @@ -6261,10 +6438,14 @@ static const dyesub_printsize_t dnpsrx1_printsize[] = { "300x600", "w288h432", 2480, 1920}, { "300x300", "w288h432-div2", 1240, 1920}, { "300x600", "w288h432-div2", 2480, 1920}, + { "300x300", "w360h360", 1540, 1920}, + { "300x600", "w360h360", 3080, 1920}, { "300x300", "w360h504", 1920, 2138}, { "300x600", "w360h504", 1920, 4276}, { "300x300", "w360h504-div2", 1920, 2176}, { "300x600", "w360h504-div2", 1920, 4352}, + { "300x300", "w432h432", 1836, 1920}, + { "300x600", "w432h432", 3672, 1920}, { "300x300", "w432h576", 1920, 2436}, { "300x600", "w432h576", 1920, 4872}, { "300x300", "w432h576-div4", 1920, 2436}, @@ -6283,13 +6464,15 @@ static void dnpdsrx1_printer_start(stp_vars_t *v) dnp_printer_start_common(v); /* Set cutter option to "normal" */ - stp_zprintf(v, "\033PCNTRL CUTTER 0000000800000"); + stp_zprintf(v, "\033PCNTRL CUTTER 00000008"); if (!strcmp(pd->pagesize, "w288h432-div2")) { - stp_zprintf(v, "120"); + stp_zprintf(v, "00000120"); } else if (!strcmp(pd->pagesize, "w432h576-div4")) { - stp_zprintf(v, "120"); + stp_zprintf(v, "00000120"); + } else if (pd->privdata.dnp.nocutwaste) { + stp_zprintf(v, "00000001"); } else { - stp_zprintf(v, "000"); + stp_zprintf(v, "00000000"); } /* Configure multi-cut/page size */ @@ -6299,10 +6482,14 @@ static void dnpdsrx1_printer_start(stp_vars_t *v) stp_zprintf(v, "01"); } else if (!strcmp(pd->pagesize, "w288h432")) { stp_zprintf(v, "02"); + } else if (!strcmp(pd->pagesize, "w360h360")) { + stp_zprintf(v, "29"); } else if (!strcmp(pd->pagesize, "w360h504")) { stp_zprintf(v, "03"); } else if (!strcmp(pd->pagesize, "w360h504-div2")) { stp_zprintf(v, "22"); + } else if (!strcmp(pd->pagesize, "w432h432")) { + stp_zprintf(v, "27"); } else if (!strcmp(pd->pagesize, "w432h576")) { stp_zprintf(v, "04"); } else if (!strcmp(pd->pagesize, "w432h576-div2")) { @@ -6317,7 +6504,7 @@ static void dnpdsrx1_printer_start(stp_vars_t *v) } /* Dai Nippon Printing DS620 */ -static const laminate_t dnpds620_laminate[] = +static const overcoat_t dnpds620_overcoat[] = { {"Glossy", N_("Glossy"), {3, "000"}}, {"Matte", N_("Matte"), {3, "001"}}, @@ -6325,26 +6512,27 @@ static const laminate_t dnpds620_laminate[] = {"MatteLuster", N_("Matte Luster"), {3, "022"}}, }; -LIST(laminate_list_t, dnpds620_laminate_list, laminate_t, dnpds620_laminate); +LIST(overcoat_list_t, dnpds620_overcoat_list, overcoat_t, dnpds620_overcoat); /* Imaging area is wider than print size, we always must supply the printer with the full imaging width. */ static const dyesub_pagesize_t dnpds620_page[] = { - { "B7", "3.5x5", PT1(1088,300), PT1(1920,300), 0, 0, PT(186,300), PT(186,300), DYESUB_LANDSCAPE}, - { "w288h432", "4x6", PT1(1240,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE}, - { "w288h432-div2", "2x6*2", PT1(1240,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE}, - { "w324h432", "4.5x6", PT1(1386,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE}, - { "w360h360", "5x5", PT1(1540,300), PT1(1920,300), 0, 0, PT(186,300), PT(186,300), DYESUB_LANDSCAPE}, - { "w360h504", "5x7", PT1(1920,300), PT1(2138,300), PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT}, - { "w360h504-div2", "3.5x5*2", PT1(1920,300), PT1(2176,300), PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT}, - { "w432h432", "6x6", PT1(1836,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE}, - { "w432h576", "6x8", PT1(1920,300), PT1(2436,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, - { "w432h576-w432h432_w432h144", "6x6+2x6", PT1(1920,300), PT1(2436,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, - { "w432h576-div4", "2x6*4", PT1(1920,300), PT1(2436,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, - { "w432h576-div2", "4x6*2", PT1(1920,300), PT1(2498,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, - { "w432h648", "6x9", PT1(1920,300), PT1(2740,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, - { "w432h648-div2", "4.5x6*2", PT1(1920,300), PT1(2802,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, + DEFINE_PAPER( "B7", "3.5x5", PT1(1088,300), PT1(1920,300), 0, 0, PT(186,300), PT(186,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w288h432", "4x6", PT1(1240,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w288h432-div2", "2x6*2", PT1(1240,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w324h432", "4.5x6", PT1(1386,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w360h360", "5x5", PT1(1540,300), PT1(1920,300), 0, 0, PT(186,300), PT(186,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w360h504", "5x7", PT1(1920,300), PT1(2138,300), PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w360h504-div2", "3.5x5*2", PT1(1920,300), PT1(2176,300), PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w360h504-w360h360_w360h144", "5x5+2x5", PT1(1920,300), PT1(2138,300), PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h432", "6x6", PT1(1836,300), PT1(1920,300), 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w432h576", "6x8", PT1(1920,300), PT1(2436,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h576-w432h432_w432h144", "6x6+2x6", PT1(1920,300), PT1(2436,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h576-div4", "2x6*4", PT1(1920,300), PT1(2436,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h576-div2", "4x6*2", PT1(1920,300), PT1(2498,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h648", "6x9", PT1(1920,300), PT1(2740,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h648-div2", "4.5x6*2", PT1(1920,300), PT1(2802,300), PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, dnpds620_page_list, dyesub_pagesize_t, dnpds620_page); @@ -6363,6 +6551,8 @@ static const dyesub_printsize_t dnpds620_printsize[] = { "300x600", "w360h360", 3080, 1920}, { "300x300", "w360h504", 1920, 2138}, { "300x600", "w360h504", 1920, 4276}, + { "300x300", "w360h504-w360h360_w360h144", 1920, 2138}, + { "300x600", "w360h504-w360h360_w360h144", 1920, 4276}, { "300x300", "w360h504-div2", 1920, 2176}, { "300x600", "w360h504-div2", 1920, 4352}, { "300x300", "w432h432", 1836, 1920}, @@ -6401,9 +6591,18 @@ static void dnpds620_printer_start(stp_vars_t *v) } else if (!strcmp(pd->pagesize, "w432h576-w432h432_w432h144")) { stp_zprintf(v, "\033PCNTRL FULL_CUTTER_SET 00000016"); stp_zprintf(v, "0600200000000000"); + } else if (!strcmp(pd->pagesize, "w360h504-w360h360_w360h144")) { + stp_zprintf(v, "\033PCNTRL FULL_CUTTER_SET 00000016"); + stp_zprintf(v, "050020000000000\r"); } else if (!strcmp(pd->pagesize, "w288h432-div2")) { stp_zprintf(v, "\033PCNTRL CUTTER 00000008"); stp_zprintf(v, "00000120"); + } else if (pd->privdata.dnp.nocutwaste) { + stp_zprintf(v, "\033PCNTRL CUTTER 00000008"); + stp_zprintf(v, "00000001"); + } else { + stp_zprintf(v, "\033PCNTRL CUTTER 00000008"); + stp_zprintf(v, "00000000"); } /* Configure multi-cut/page size */ @@ -6420,6 +6619,8 @@ static void dnpds620_printer_start(stp_vars_t *v) stp_zprintf(v, "29"); } else if (!strcmp(pd->pagesize, "w360h504")) { stp_zprintf(v, "03"); + } else if (!strcmp(pd->pagesize, "w360h504-w360h360_w360h144")) { + stp_zprintf(v, "03"); } else if (!strcmp(pd->pagesize, "w360h504-div2")) { stp_zprintf(v, "22"); } else if (!strcmp(pd->pagesize, "w432h432")) { @@ -6447,33 +6648,32 @@ static void dnpds620_printer_start(stp_vars_t *v) printer with the full imaging width. */ static const dyesub_pagesize_t dnpds820_page[] = { - { "w288h576", "8x4", PT1(1236,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w360h576", "8x5", PT1(1536,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w432h576", "8x6", PT1(1836,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w504h576", "8x7", PT1(2136,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w576h576", "8x8", PT1(2436,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w576h576-div2", "8x4*2", PT1(2502,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, - { "w576h648", "8x9", PT1(2560,300), PT1(2736,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h648-w576h360_w576h288", "8x5+8x4", PT1(2560,300), PT1(2802,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "c8x10", "8x10", PT1(2560,300), PT1(3036,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "c8x10-div2", "8x5*2", PT1(2560,300), PT1(3102,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "c8x10-w576h432_w576h288", "8x6+8x4", PT1(2560,300), PT1(3102,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h792-w576h432_w576h360", "8x6+8x5", PT1(2560,300), PT1(3402,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h842", "8x11.7", PT1(2560,300), PT1(3544,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h864", "8x12", PT1(2560,300), PT1(3636,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h864-div2", "8x6*2", PT1(2560,300), PT1(3702,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h864-w576h576_w576h288", "8x8+8x4", PT1(2560,300), PT1(3702,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - { "w576h864-div3", "8x4*3", PT1(2560,300), PT1(3768,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, - - { "A4x4inch", "A4x4inch", PT1(1236,300), PT1(2560,300), PT(16,300), PT(16,300), 0, 0, DYESUB_LANDSCAPE}, - { "A4x5inch", "A4x5inch", PT1(1536,300), PT1(2560,300), PT(16,300), PT(16,300), 0, 0, DYESUB_LANDSCAPE}, - { "A5", "A5", PT1(1784,300), PT1(2560,300), PT(16,300), PT(16,300), 0, 0, DYESUB_LANDSCAPE}, - { "A4x6inch", "A4x6inch", PT1(1836,300), PT1(2560,300), PT(16,300), PT(16,300), 0, 0, DYESUB_LANDSCAPE}, - { "A4x8inch", "A4x8inch", PT1(2436,300), PT1(2560,300), PT(16,300), PT(16,300), 0, 0, DYESUB_LANDSCAPE}, - { "A4x10inch", "A4x10inch", PT1(2560,300), PT1(3036,300), PT(16,300), PT(16,300), 0, 0, DYESUB_PORTRAIT}, - { "A4x10inch-div2", "A4x5inch*2", PT1(2560,300), PT1(3102,300), PT(16,300), PT(16,300), 0, 0, DYESUB_PORTRAIT}, - { "A4", "A4", PT1(2560,300), PT1(3544,300), PT(16,300), PT(16,300), 0, 0, DYESUB_PORTRAIT}, - { "A4-div2", "A5*2", PT1(2560,300), PT1(3598,300), PT(16,300), PT(16,300), 0, 0, DYESUB_PORTRAIT}, + DEFINE_PAPER( "w288h576", "8x4", PT1(1236,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w360h576", "8x5", PT1(1536,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w432h576", "8x6", PT1(1836,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w504h576", "8x7", PT1(2136,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w576h576", "8x8", PT1(2436,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w576h576-div2", "8x4*2", PT1(2502,300), PT1(2560,300), 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w576h648", "8x9", PT1(2560,300), PT1(2736,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h648-w576h360_w576h288", "8x5+8x4", PT1(2560,300), PT1(2802,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "c8x10", "8x10", PT1(2560,300), PT1(3036,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "c8x10-div2", "8x5*2", PT1(2560,300), PT1(3102,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "c8x10-w576h432_w576h288", "8x6+8x4", PT1(2560,300), PT1(3102,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h792-w576h432_w576h360", "8x6+8x5", PT1(2560,300), PT1(3402,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h842", "8x11.7", PT1(2560,300), PT1(3544,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h864", "8x12", PT1(2560,300), PT1(3636,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h864-div2", "8x6*2", PT1(2560,300), PT1(3702,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h864-w576h576_w576h288", "8x8+8x4", PT1(2560,300), PT1(3702,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w576h864-div3", "8x4*3", PT1(2560,300), PT1(3768,300), PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "A4x4inch", "A4x4inch", PT1(1236,300), PT1(2560,300), 0, 0, PT(16,300), PT(16,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "A4x5inch", "A4x5inch", PT1(1536,300), PT1(2560,300), 0, 0, PT(16,300), PT(16,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "A5", "A5", PT1(1784,300), PT1(2560,300), 0, 0, PT(16,300), PT(16,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "A4x6inch", "A4x6inch", PT1(1836,300), PT1(2560,300), 0, 0, PT(16,300), PT(16,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "A4x8inch", "A4x8inch", PT1(2436,300), PT1(2560,300), 0, 0, PT(16,300), PT(16,300), DYESUB_LANDSCAPE), + DEFINE_PAPER( "A4x10inch", "A4x10inch", PT1(2560,300), PT1(3036,300), PT(16,300), PT(16,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "A4x10inch-div2", "A4x5inch*2", PT1(2560,300), PT1(3102,300), PT(16,300), PT(16,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "A4", "A4", PT1(2560,300), PT1(3544,300), PT(16,300), PT(16,300), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "A4-div2", "A5*2", PT1(2560,300), PT1(3598,300), PT(16,300), PT(16,300), 0, 0, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, dnpds820_page_list, dyesub_pagesize_t, dnpds820_page); @@ -6514,17 +6714,16 @@ static const dyesub_printsize_t dnpds820_printsize[] = { "300x600", "w576h864-w576h576_w576h288", 2560, 7404}, { "300x300", "w576h864-div3", 2560, 3768}, { "300x600", "w576h864-div3", 2560, 7536}, - - { "300x300", "A4x4inch", 2560, 1236}, - { "300x600", "A4x4inch", 2560, 2472}, - { "300x300", "A4x5inch", 2560, 1536}, - { "300x600", "A4x5inch", 2560, 3072}, - { "300x300", "A5", 2560, 1784}, - { "300x600", "A5", 2560, 3568}, - { "300x300", "A4x6inch", 2560, 1836}, - { "300x600", "A4x6inch", 2560, 3672}, - { "300x300", "A4x8inch", 2560, 2436}, - { "300x600", "A4x8inch", 2560, 4872}, + { "300x300", "A4x4inch", 1236, 2560}, + { "300x600", "A4x4inch", 2472, 2560}, + { "300x300", "A4x5inch", 1536, 2560}, + { "300x600", "A4x5inch", 3072, 2560}, + { "300x300", "A5", 1784, 2560}, + { "300x600", "A5", 3568, 2560}, + { "300x300", "A4x6inch", 1836, 2560}, + { "300x600", "A4x6inch", 3672, 2560}, + { "300x300", "A4x8inch", 2436, 2560}, + { "300x600", "A4x8inch", 4872, 2560}, { "300x300", "A4x10inch", 2560, 3036}, { "300x600", "A4x10inch", 2560, 6072}, { "300x300", "A4x10inch-div2", 2560, 3102}, @@ -6544,6 +6743,15 @@ static void dnpds820_printer_start(stp_vars_t *v) /* Common code */ dnp_printer_start_common(v); + /* No-cut waste */ + if (pd->privdata.dnp.nocutwaste) { + stp_zprintf(v, "\033PCNTRL CUTTER 00000008"); + stp_zprintf(v, "00000001"); + } else { + stp_zprintf(v, "\033PCNTRL CUTTER 00000008"); + stp_zprintf(v, "00000000"); + } + /* Configure multi-cut/page size */ stp_zprintf(v, "\033PIMAGE MULTICUT 00000008000000"); @@ -6598,7 +6806,7 @@ static void dnpds820_printer_start(stp_vars_t *v) } else if (!strcmp(pd->pagesize, "A4")) { stp_zprintf(v, "41"); } else if (!strcmp(pd->pagesize, "A4-div2")) { - stp_zprintf(v, "43"); + stp_zprintf(v, "35"); } else { stp_zprintf(v, "00"); /* should not be possible */ } @@ -6626,6 +6834,12 @@ static const stp_parameter_t ds820_parameters[] = STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE, STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0 }, + { + "NoCutWaste", N_("No Cut-Paper Waste"), "Color=No,Category=Advanced Printer Setup", + N_("No Cut-Paper Waste"), + STP_PARAMETER_TYPE_BOOLEAN, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 0, STP_CHANNEL_NONE, 1, 0 + }, }; #define ds820_parameter_count (sizeof(ds820_parameters) / sizeof(const stp_parameter_t)) @@ -6634,7 +6848,7 @@ ds820_load_parameters(const stp_vars_t *v, const char *name, stp_parameter_t *description) { int i; - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); if (caps->parameter_count && caps->parameters) @@ -6661,6 +6875,11 @@ ds820_load_parameters(const stp_vars_t *v, const char *name, description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; description->is_active = 1; } + else if (strcmp(name, "NoCutWaste") == 0) + { + description->is_active = 1; + description->deflt.boolean = 0; + } else { return 0; @@ -6671,12 +6890,12 @@ ds820_load_parameters(const stp_vars_t *v, const char *name, static int ds820_parse_parameters(stp_vars_t *v) { dyesub_privdata_t *pd = get_privdata(v); - const char *print_speed; - - print_speed = stp_get_string_parameter(v, "PrintSpeed"); + const char *print_speed = stp_get_string_parameter(v, "PrintSpeed"); + int nocutwaste = stp_get_boolean_parameter(v, "NoCutWaste"); if (pd) { pd->privdata.dnp.print_speed = print_speed; + pd->privdata.dnp.nocutwaste = nocutwaste; } return 1; @@ -6693,13 +6912,13 @@ LIST(dyesub_resolution_list_t, res_citizen_cw01_dpi_list, dyesub_resolution_t,re static const dyesub_pagesize_t citizen_cw01_page[] = { - { "w252h338", "3.5x4.7", PT1(1210,334), PT1(2048,334), 0, 0, PT(225,334), PT(225,334), DYESUB_LANDSCAPE}, - { "B7", "3.5x5", PT1(1210,334), PT1(2048,334), 0, 0, PT(169,334), PT(169,334), DYESUB_LANDSCAPE}, - { "w288h432", "4x6", PT1(1380,334), PT1(2048,334), 0, 0, PT(5,334), PT(5,334), DYESUB_LANDSCAPE}, - { "w338h504", "4.7x7", PT1(2048,334), PT1(2380,334), PT(225,334), PT(225,334), 0, 0, DYESUB_PORTRAIT}, - { "w360h504", "5x7", PT1(2048,334), PT1(2380,334), PT(169,334), PT(169,334), 0, 0, DYESUB_PORTRAIT}, - { "w432h576", "6x8", PT1(2048,334), PT1(2710,300), PT(5,334), PT(5,334), 0, 0, DYESUB_PORTRAIT}, - { "w432h648", "6x9", PT1(2048,334), PT1(3050,334), PT(5,334), PT(5,334), 0, 0, DYESUB_PORTRAIT}, + DEFINE_PAPER( "w252h338", "3.5x4.7", PT1(1210,334), PT1(2048,334), 0, 0, PT(225,334), PT(225,334), DYESUB_LANDSCAPE), + DEFINE_PAPER( "B7", "3.5x5", PT1(1210,334), PT1(2048,334), 0, 0, PT(169,334), PT(169,334), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w288h432", "4x6", PT1(1380,334), PT1(2048,334), 0, 0, PT(5,334), PT(5,334), DYESUB_LANDSCAPE), + DEFINE_PAPER( "w338h504", "4.7x7", PT1(2048,334), PT1(2380,334), PT(225,334), PT(225,334), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w360h504", "5x7", PT1(2048,334), PT1(2380,334), PT(169,334), PT(169,334), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h576", "6x8", PT1(2048,334), PT1(2710,300), PT(5,334), PT(5,334), 0, 0, DYESUB_PORTRAIT), + DEFINE_PAPER( "w432h648", "6x9", PT1(2048,334), PT1(3050,334), PT(5,334), PT(5,334), 0, 0, DYESUB_PORTRAIT), }; LIST(dyesub_pagesize_list_t, citizen_cw01_page_list, dyesub_pagesize_t, citizen_cw01_page); @@ -6727,68 +6946,703 @@ LIST(dyesub_printsize_list_t, citizen_cw01_printsize_list, dyesub_printsize_t, c static void citizen_cw01_printer_start(stp_vars_t *v) { dyesub_privdata_t *pd = get_privdata(v); + /* Set quantity.. Backend overrides as needed. */ + stp_zprintf(v, "\033PCNTRL QTY 00000008%07d\r", pd->copies); + /* Set cutter, nothing fancy */ + stp_zprintf(v, "\033PCNTRL CUTTER 0000000800000000"); - int media = 0; + /* CW-01 has no other smarts. No multicut, no matte. */ +} - if (strcmp(pd->pagesize,"w252h338") == 0) - media = 0x00; - else if (strcmp(pd->pagesize,"B7") == 0) - media = 0x01; - else if (strcmp(pd->pagesize,"w288h432") == 0) - media = 0x02; - else if (strcmp(pd->pagesize,"w338h504") == 0) - media = 0x03; - else if (strcmp(pd->pagesize,"w360h504") == 0) - media = 0x04; - else if (strcmp(pd->pagesize,"w432h576") == 0) - media = 0x05; - else if (strcmp(pd->pagesize,"w432h576") == 0) - media = 0x06; +/* Magicard Series */ +static const dyesub_pagesize_t magicard_page[] = +{ + DEFINE_PAPER( "w155h244", "ID-1/CR80", PT1(672,300), PT1(1016,300), PT1(15, 300), PT1(15,300), 0, 0, DYESUB_PORTRAIT), +}; - stp_putc(media, v); - if (pd->h_dpi == 600) { - stp_putc(0x01, v); +LIST(dyesub_pagesize_list_t, magicard_page_list, dyesub_pagesize_t, magicard_page); + +static const dyesub_printsize_t magicard_printsize[] = +{ + { "300x300", "w155h244", 672, 1016}, +}; + +LIST(dyesub_printsize_list_t, magicard_printsize_list, dyesub_printsize_t, magicard_printsize); + +static const overcoat_t magicard_overcoat[] = +{ + {"Off", N_("Off"), {3, "OFF"}}, + {"On", N_("On"), {2, "ON"}}, +}; + +LIST(overcoat_list_t, magicard_overcoat_list, overcoat_t, magicard_overcoat); + +static void magicard_printer_init(stp_vars_t *v) +{ + dyesub_privdata_t *pd = get_privdata(v); + + dyesub_nputc(v, 0x05, 64); /* ATTN/Clear */ + stp_putc(0x01, v); /* Start command sequence */ + stp_zprintf(v, ",NOC1"); + stp_zprintf(v, ",VER%d.%d.%d", STP_MAJOR_VERSION, STP_MINOR_VERSION, STP_MICRO_VERSION); // XXX include "pre" or other tag. + stp_zprintf(v, ",LANENG"); // Dunno about other options. + stp_zprintf(v, ",TDT%08X", (unsigned int)stpi_time(NULL)); /* Some sort of timestamp. Unknown epoch. */ +// stp_zprintf(v, ",LC%d", 1); // Force media type. LC1/LC3/LC6/LC8 for YMCKO/MONO/KO/YMCKOK + stp_zprintf(v, ",REJ%s", pd->privdata.magicard.reject ? "ON" : "OFF"); /* Faulty card rejection. */ + stp_zprintf(v, ",ESS%d", pd->copies); /* Number of copies */ + stp_zprintf(v, ",KEE,RT2"); + if (pd->duplex_mode && + strcmp(pd->duplex_mode, "None") && + strcmp(pd->duplex_mode, "Standard")) /* Duplex enabled? */ + { + stp_zprintf(v, ",DPXON,PAG%d", 1 + (pd->page_number & 1)); + if (!(pd->page_number & 1)) + { + /* Color format of BACk side -- eg CKO or KO or C or CO or K. We don't support K/KO-only! */ + stp_zprintf(v, ",BAC%s%s", + pd->privdata.magicard.resin_k ? "CK" : "C", + pd->privdata.magicard.overcoat ? "O" : ""); + } + } + else + { + stp_zprintf(v, ",DPXOFF,PAG1"); + } + stp_zprintf(v, ",SLW%s", pd->privdata.magicard.colorsure ? "ON" : "OFF"); /* "Colorsure printing" */ + stp_zprintf(v, ",IMF%s", "BGR"); /* Image format -- as opposed to K, BGRK and others. */ + stp_zprintf(v, ",XCO0,YCO0"); // ?? + stp_zprintf(v, ",WID%u,HGT%u", (unsigned int)pd->h_size, (unsigned int)pd->w_size - 30); /* Width & Height */ + + /* Overcoat options are unique per-side */ + if (!(pd->page_number & 1)) + { + stp_zprintf(v, ",OVR%s", pd->privdata.magicard.overcoat ? "ON" : "OFF" ); + if (pd->privdata.magicard.overcoat && pd->privdata.magicard.overcoat_hole) + { + if (!strcmp("SmartCard", pd->privdata.magicard.overcoat_hole)) + stp_zprintf(v, ",NCT%d,%d,%d,%d", 90, 295, 260, 450); + else if (!strcmp("SmartCardLarge", pd->privdata.magicard.overcoat_hole)) + stp_zprintf(v, ",NCT%d,%d,%d,%d", 75, 275, 280, 470); + else if (!strcmp("MagStripe", pd->privdata.magicard.overcoat_hole)) + stp_zprintf(v, ",NCT%d,%d,%d,%d", 0, 420, 1025, 590); + else if (!strcmp("MagStripeLarge", pd->privdata.magicard.overcoat_hole)) + stp_zprintf(v, ",NCT%d,%d,%d,%d", 0, 400, 1025, 610); + /* XXX TODO: Add ability to specify custom hole sizes */ + } } else { - stp_putc(0x00, v); + stp_zprintf(v, ",OVR%s", pd->privdata.magicard.overcoat_dpx ? "ON" : "OFF" ); + if (pd->privdata.magicard.overcoat_dpx && pd->privdata.magicard.overcoat_hole_dpx) + { + if (!strcmp("SmartCard", pd->privdata.magicard.overcoat_hole_dpx)) + stp_zprintf(v, ",NCT%d,%d,%d,%d", 90, 295, 260, 450); + else if (!strcmp("SmartCardLarge", pd->privdata.magicard.overcoat_hole_dpx)) + stp_zprintf(v, ",NCT%d,%d,%d,%d", 75, 275, 280, 470); + else if (!strcmp("MagStripe", pd->privdata.magicard.overcoat_hole_dpx)) + stp_zprintf(v, ",NCT%d,%d,%d,%d", 0, 420, 1025, 590); + else if (!strcmp("MagStripeLarge", pd->privdata.magicard.overcoat_hole_dpx)) + stp_zprintf(v, ",NCT%d,%d,%d,%d", 0, 400, 1025, 610); + /* XXX TODO: Add ability to specify custom hole sizes */ + } } - stp_putc(pd->copies, v); - stp_putc(0x00, v); + stp_zprintf(v, ",NNNOFF"); // ?? + if (!(pd->page_number & 1)) + { + stp_zprintf(v, ",USF%s", pd->privdata.magicard.holokote ? "ON" : "OFF"); /* Disable Holokote. */ + if (pd->privdata.magicard.holokote) + { + stp_zprintf(v, ",HKT%d", pd->privdata.magicard.holokote); + stp_zprintf(v, ",CKI%s", pd->privdata.magicard.holokote_custom? "ON" : "OFF"); + stp_zprintf(v, ",HKMFFFFFF,TRO0"); // HKM == area. each bit is a separate area, 1-24. Not sure about TRO + } - /* Compute plane size */ - media = (pd->w_size * pd->h_size) + 1024 + 40; + if (pd->privdata.magicard.holopatch) + { + stp_zprintf(v, ",HPHON,PAT%d", pd->privdata.magicard.holopatch); + } + } else { + stp_zprintf(v, ",USFOFF"); /* Disable Holokote on duplex side. */ + } - stp_put32_le(media, v); - stp_put32_le(0x0, v); + /* Magnetic stripe. Only program on the FRONT side. */ + if (!(pd->page_number & 1)) + { + if (pd->privdata.magicard.mag1[0]) { + stp_zprintf(v, ",MAG1,BPI210,MPC7,COE%c,%s", + pd->privdata.magicard.mag_coer ? 'H': 'L', + pd->privdata.magicard.mag1); + } + if (pd->privdata.magicard.mag2[0]) { + stp_zprintf(v, ",MAG2,BPI75,MPC5,COE%c,%s", + pd->privdata.magicard.mag_coer ? 'H': 'L', + pd->privdata.magicard.mag2); + } + if (pd->privdata.magicard.mag3[0]) { + stp_zprintf(v, ",MAG3,BPI210,MPC7,COE%c,%s", + pd->privdata.magicard.mag_coer ? 'H': 'L', + pd->privdata.magicard.mag3); + } + } + + stp_zprintf(v, ",PCT%d,%d,%d,%d", 0, 0, 1025, 641); // print area? (seen 1025/1015/999,641) + stp_zprintf(v, ",ICC%d", pd->privdata.magicard.gamma); /* Gamma curve. 0-2 */ + if (pd->privdata.magicard.power_color != 50) + stp_zprintf(v, ",CPW%d", pd->privdata.magicard.power_color); /* RGB/Color power. 0-100 */ + if (pd->privdata.magicard.power_overcoat != 50) + stp_zprintf(v, ",OPW%d", pd->privdata.magicard.power_overcoat); /* Overcoat power. 0-100 */ + if (pd->privdata.magicard.power_resin != 50) + stp_zprintf(v, ",KPW%d", pd->privdata.magicard.power_resin); /* Black/Resin power. 0-100 */ + if (pd->privdata.magicard.align_start != 50) + stp_zprintf(v, ",SOI%d", pd->privdata.magicard.align_start); /* Card Start alignment, 0-100 */ + if (pd->privdata.magicard.align_end != 50) + stp_zprintf(v, ",EOI%d", pd->privdata.magicard.align_end); /* Card End alignment, 0-100 */ + stp_zprintf(v, ",DDD50"); // ?? + stp_zprintf(v, ",X-GP-8"); /* GP extension, tells backend data is 8bpp */ + if (pd->privdata.magicard.resin_k) + stp_zprintf(v, ",X-GP-RK"); /* GP extension, tells backend to extract resin-K layer */ + stp_zprintf(v, ",SZB%d", (int)(pd->w_size * pd->h_size)); /* 8bpp, needs to be 6bpp */ + stp_zprintf(v, ",SZG%d", (int)(pd->w_size * pd->h_size)); + stp_zprintf(v, ",SZR%d", (int)(pd->w_size * pd->h_size)); +// stp_zprintf(v, ",SZK%d", (int)(pd->w_size * pd->h_size)); /* 8bpp, needs to be 1bpp */ + stp_putc(0x1c, v); /* Terminate command data */ +} + +static void magicard_printer_end(stp_vars_t *v) +{ + stp_putc(0x03, v); /* Terminate the command sequence */ } -static void citizen_cw01_plane_init(stp_vars_t *v) +static void magicard_plane_end(stp_vars_t *v) { dyesub_privdata_t *pd = get_privdata(v); - int i; + stp_putc(0x1c, v); /* Terminate the image data */ + switch (pd->plane) + { + case 3: + stp_putc(0x42, v); /* Blue */ + break; + case 2: + stp_putc(0x47, v); /* Green */ + break; + case 1: + stp_putc(0x52, v); /* Red */ + break; + default: +// stp_putc(0x4b, v); /* Black/Resin */ + break; + } + stp_putc(0x3a, v); +} - stp_put32_le(0x28, v); - stp_put32_le(0x0800, v); - stp_put16_le(pd->h_size, v); /* number of rows */ - stp_put16_le(0x0, v); - stp_put32_le(0x080001, v); - stp_put32_le(0x00, v); - stp_put32_le(0x00, v); - stp_put32_le(0x335a, v); - if (pd->h_dpi == 600) { - stp_put32_le(0x5c40, v); - } else { - stp_put32_le(0x335a, v); +static const dyesub_stringitem_t magicard_black_types[] = +{ + { "Composite", N_ ("Composite (CMY)") }, + { "Resin", N_ ("Resin Black") }, +}; +LIST(dyesub_stringlist_t, magicard_black_types_list, dyesub_stringitem_t, magicard_black_types); + +static const dyesub_stringitem_t magicard_mag_coer[] = +{ + { "Low", N_ ("Low") }, + { "High", N_ ("High") }, +}; +LIST(dyesub_stringlist_t, magicard_mag_coer_list, dyesub_stringitem_t, magicard_mag_coer); + +static const stp_parameter_t magicard_parameters[] = +{ + { + "BlackType", N_("Black Type"), "Color=No,Category=Advanced Printer Setup", + N_("Black Type"), + STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_BASIC, 1, 0, STP_CHANNEL_NONE, 1, 0 + }, + { + "RejectBad", N_("Reject Bad Cards"), "Color=No,Category=Advanced Printer Setup", + N_("Reject Bad Cards"), + STP_PARAMETER_TYPE_BOOLEAN, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_BASIC, 1, 0, STP_CHANNEL_NONE, 1, 0 + }, + { + "ColorSure", N_("Enable Colorsure"), "Color=No,Category=Advanced Printer Setup", + N_("Enable Colorsure"), + STP_PARAMETER_TYPE_BOOLEAN, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_BASIC, 1, 0, STP_CHANNEL_NONE, 1, 0 + }, + { + "GammaCurve", N_("Printer Gamma Curve"), "Color=No,Category=Advanced Printer Setup", + N_("Internal Gamma Curve to apply (0 is none)"), + STP_PARAMETER_TYPE_INT, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "PowerColor", N_("Color Power Level"), "Color=No,Category=Advanced Printer Setup", + N_("Power level for color passes"), + STP_PARAMETER_TYPE_INT, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "PowerBlack", N_("Black Power Level"), "Color=No,Category=Advanced Printer Setup", + N_("Power level for black pass"), + STP_PARAMETER_TYPE_INT, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "PowerOC", N_("Overcoat Power Level"), "Color=No,Category=Advanced Printer Setup", + N_("Power level for overcoat pass"), + STP_PARAMETER_TYPE_INT, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "AlignStart", N_("Card Start Alignment"), "Color=No,Category=Advanced Printer Setup", + N_("Fine-tune card start position"), + STP_PARAMETER_TYPE_INT, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "AlignEnd", N_("Card End Alignment"), "Color=No,Category=Advanced Printer Setup", + N_("Fine-tune card end position"), + STP_PARAMETER_TYPE_INT, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "CardOffset", N_("Horizontal Card offset"), "Color=No,Category=Advanced Printer Setup", + N_("Fine-tune card horizontal centering"), + STP_PARAMETER_TYPE_INT, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "Holokote", N_("Holokote"), "Color=No,Category=Advanced Printer Setup", + N_("Holokote option"), + STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "HolokoteCustom", N_("Custom Holokote Key"), "Color=No,Category=Advanced Printer Setup", + N_("Use an optional custom Holokote key"), + STP_PARAMETER_TYPE_BOOLEAN, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "Holopatch", N_("HoloPatch"), "Color=No,Category=Advanced Printer Setup", + N_("Position of the HoloPatch"), + STP_PARAMETER_TYPE_INT, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "OvercoatHole", N_("Overcoat Hole"), "Color=No,Category=Advanced Printer Setup", + N_("Area to not cover with an overcoat layer"), + STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "OvercoatHoleDuplex", N_("Overcoat Hole Duplex"), "Color=No,Category=Advanced Printer Setup", + N_("Area to not cover with an overcoat layer"), + STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { /* Note this is called "LaminateDuplex" rather than "OvercoatDuplex" + to align with the mis-named "Laminate" option. + */ + "LaminateDuplex", N_("Overcoat Pattern Duplex"), "Color=No,Category=Advanced Printer Setup", + N_("Overcoat Pattern Duplex"), + STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 0, STP_CHANNEL_NONE, 1, 0 + }, + { + "MagCoer", N_("Magnetic Stripe Coercivity"), "Color=No,Category=Advanced Printer Setup", + N_("Magnetic Stripe Coercivity Type"), + STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "MagStripe1", N_("Magnetic Stripe Row 1"), "Color=No,Category=Advanced Printer Setup", + N_("ISO 7811 alphanumeric data to be encoded in the first magnetic stripe row (0-79 characters)"), + STP_PARAMETER_TYPE_RAW, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 0, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "MagStripe2", N_("Magnetic Stripe Row 2"), "Color=No,Category=Advanced Printer Setup", + N_("ISO 7811 alphanumeric data to be encoded in the second magnetic stripe row (0-40 digits)"), + STP_PARAMETER_TYPE_RAW, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 0, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "MagStripe3", N_("Magnetic Stripe Row 3"), "Color=No,Category=Advanced Printer Setup", + N_("ISO 7811 alphanumeric data to be encoded in the third magnetic stripe row (0-107 digits)"), + STP_PARAMETER_TYPE_RAW, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_ADVANCED, 0, 1, STP_CHANNEL_NONE, 1, 0 + }, +}; +#define magicard_parameter_count (sizeof(magicard_parameters) / sizeof(const stp_parameter_t)) + +static const dyesub_stringitem_t magicard_holokotes[] = +{ + { "Off", N_ ("Off") }, + { "UltraSecure", N_ ("Ultra Secure") }, + { "Rings", N_ ("Interlocking Rings") }, + { "Flex", N_ ("Flex") }, +}; +LIST(dyesub_stringlist_t, magicard_holokotes_list, dyesub_stringitem_t, magicard_holokotes); + +static const dyesub_stringitem_t magicard_overcoat_holes[] = +{ + { "None", N_ ("None") }, + { "SmartCard", N_ ("Smart Card Chip") }, + { "SmartCardLarge", N_ ("Smart Card Chip (Large)") }, + { "MagStripe", N_ ("Magnetic Stripe") }, + { "MagStripeLarge", N_ ("Magnetic Stripe (Large)") }, +}; +LIST(dyesub_stringlist_t, magicard_overcoat_holes_list, dyesub_stringitem_t, magicard_overcoat_holes); + +static int +magicard_load_parameters(const stp_vars_t *v, const char *name, + stp_parameter_t *description) +{ + int i; + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, + stp_get_model_id(v)); + + if (caps->parameter_count && caps->parameters) + { + for (i = 0; i < caps->parameter_count; i++) + if (strcmp(name, caps->parameters[i].name) == 0) + { + stp_fill_parameter_settings(description, &(caps->parameters[i])); + break; + } + } + + if (strcmp(name, "BlackType") == 0) + { + description->bounds.str = stp_string_list_create(); + + const dyesub_stringlist_t *mlist = &magicard_black_types_list; + for (i = 0; i < mlist->n_items; i++) + { + const dyesub_stringitem_t *m = &(mlist->item[i]); + stp_string_list_add_string(description->bounds.str, + m->name, m->text); /* Do *not* want this translated, otherwise use gettext(m->text) */ + } + description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; + description->is_active = 1; + } + else if (strcmp(name, "RejectBad") == 0) + { + description->deflt.boolean = 0; + description->is_active = 1; + } + else if (strcmp(name, "ColorSure") == 0) + { + description->deflt.boolean = 1; + description->is_active = 1; + } + else if (strcmp(name, "GammaCurve") == 0) + { + description->deflt.integer = 1; + description->bounds.integer.lower = 0; + description->bounds.integer.upper = 2; + description->is_active = 1; + } + else if (strcmp(name, "PowerColor") == 0) + { + description->deflt.integer = 0; + description->bounds.integer.lower = -50; + description->bounds.integer.upper = 50; + description->is_active = 1; + } + else if (strcmp(name, "PowerBlack") == 0) + { + description->deflt.integer = 0; + description->bounds.integer.lower = -50; + description->bounds.integer.upper = 50; + description->is_active = 1; + } + else if (strcmp(name, "PowerOC") == 0) + { + description->deflt.integer = 0; + description->bounds.integer.lower = -50; + description->bounds.integer.upper = 50; + description->is_active = 1; + } + else if (strcmp(name, "AlignStart") == 0) + { + description->deflt.integer = 0; + description->bounds.integer.lower = -50; + description->bounds.integer.upper = 50; + description->is_active = 1; + } + else if (strcmp(name, "AlignEnd") == 0) + { + description->deflt.integer = 0; + description->bounds.integer.lower = -50; + description->bounds.integer.upper = 50; + description->is_active = 1; + } + else if (strcmp(name, "CardOffset") == 0) + { + description->deflt.integer = 0; + description->bounds.integer.lower = -15; + description->bounds.integer.upper = 15; + description->is_active = 1; + } + else if (strcmp(name, "Holokote") == 0) + { + description->bounds.str = stp_string_list_create(); + + const dyesub_stringlist_t *mlist = &magicard_holokotes_list; + for (i = 0; i < mlist->n_items; i++) + { + const dyesub_stringitem_t *m = &(mlist->item[i]); + stp_string_list_add_string(description->bounds.str, + m->name, m->text); /* Do *not* want this translated, otherwise use gettext(m->text) */ + } + description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; + description->is_active = 1; + } + else if (strcmp(name, "HolokoteCustom") == 0) + { + description->deflt.boolean = 0; + description->is_active = 1; + } + else if (strcmp(name, "Holopatch") == 0) + { + description->deflt.integer = 0; + description->bounds.integer.lower = 0; + description->bounds.integer.upper = 24; + description->is_active = 1; + } + else if (strcmp(name, "OvercoatHole") == 0) + { + description->bounds.str = stp_string_list_create(); + + const dyesub_stringlist_t *mlist = &magicard_overcoat_holes_list; + for (i = 0; i < mlist->n_items; i++) + { + const dyesub_stringitem_t *m = &(mlist->item[i]); + stp_string_list_add_string(description->bounds.str, + m->name, m->text); /* Do *not* want this translated, otherwise use gettext(m->text) */ + } + description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; + description->is_active = 1; + } + else if (strcmp(name, "OvercoatHoleDuplex") == 0) + { + description->bounds.str = stp_string_list_create(); + + const dyesub_stringlist_t *mlist = &magicard_overcoat_holes_list; + for (i = 0; i < mlist->n_items; i++) + { + const dyesub_stringitem_t *m = &(mlist->item[i]); + stp_string_list_add_string(description->bounds.str, + m->name, m->text); /* Do *not* want this translated, otherwise use gettext(m->text) */ + } + description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; + /* This feature only applies if the printer is duplexing! */ + if (dyesub_feature(caps, DYESUB_FEATURE_DUPLEX)) + description->is_active = 1; + } + else if (strcmp(name, "OvercoatDuplex") == 0) + { + description->bounds.str = stp_string_list_create(); + if (caps->overcoat) + { + const overcoat_list_t *llist = caps->overcoat; + + for (i = 0; i < llist->n_items; i++) + { + const overcoat_t *l = &(llist->item[i]); + stp_string_list_add_string(description->bounds.str, + l->name, gettext(l->text)); + } + description->deflt.str = + stp_string_list_param(description->bounds.str, 0)->name; + /* This feature only applies if the printer is duplexing! */ + if (dyesub_feature(caps, DYESUB_FEATURE_DUPLEX)) + description->is_active = 1; + } else { + description->is_active = 0; + } + } + else if (strcmp(name, "MagCoer") == 0) + { + description->bounds.str = stp_string_list_create(); + + const dyesub_stringlist_t *mlist = &magicard_mag_coer_list; + for (i = 0; i < mlist->n_items; i++) + { + const dyesub_stringitem_t *m = &(mlist->item[i]); + stp_string_list_add_string(description->bounds.str, + m->name, m->text); /* Do *not* want this translated, otherwise use gettext(m->text) */ + } + description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; + description->is_active = 1; + } + else if (strcmp(name, "MagStripe1") == 0) + { + description->is_active = 1; + } + else if (strcmp(name, "MagStripe2") == 0) + { + description->is_active = 1; + } + else if (strcmp(name, "MagStripe3") == 0) + { + description->is_active = 1; + } + else + { + return 0; + } + return 1; +} + +static int magicard_parse_parameters(stp_vars_t *v) +{ + dyesub_privdata_t *pd = get_privdata(v); + + const char *lpar = stp_get_string_parameter(v, "Laminate"); + const char *lpar_dpx = stp_get_string_parameter(v, "LaminateDuplex"); + const char *mag_coer = stp_get_string_parameter(v, "MagCoer"); + const char *holokote = stp_get_string_parameter(v, "Holokote"); + int holopatch = stp_get_int_parameter(v, "Holopatch"); + const char *overcoat_hole = stp_get_string_parameter(v, "OvercoatHole"); + const char *overcoat_hole_dpx = stp_get_string_parameter(v, "OvercoatHoleDuplex"); + int holokote_custom = stp_get_boolean_parameter(v, "HolokoteCustom"); + const char *blacktype = stp_get_string_parameter(v, "BlackType"); + const stp_raw_t *magstripe1 = NULL; + const stp_raw_t *magstripe2 = NULL; + const stp_raw_t *magstripe3 = NULL; + + if (overcoat_hole && !strcmp("None", overcoat_hole)) + overcoat_hole = NULL; + + /* If overcoat is off, we can't use holokote or holopatch */ + if (lpar && strcmp("On", lpar)) { + if ((holokote && strcmp(holokote, "Off")) || holopatch || overcoat_hole || holokote_custom) { + stp_eprintf(v, _("Holokote, Holopatch, and Overcoat hole features require Overcoat to be enabled!\n")); + return 0; + } } - stp_put32_le(0x0100, v); - stp_put32_le(0x00, v); - /* Write the color curve data. */ - for (i = 0xff; i >= 0 ; i--) { - unsigned long tmp; - tmp = i | (i << 8) | (i << 16); - stp_put32_le(tmp, v); + /* Sanity check magstripe */ + if (stp_check_raw_parameter(v, "MagStripe1", STP_PARAMETER_ACTIVE)) { + magstripe1 = stp_get_raw_parameter(v, "MagStripe1"); + if (magstripe1->bytes >= 79) { + stp_eprintf(v, _("StpMagStripe1 must be between 0 and 78 bytes!\n")); + return 0; + } } + if (stp_check_raw_parameter(v, "MagStripe2", STP_PARAMETER_ACTIVE)) { + magstripe2 = stp_get_raw_parameter(v, "MagStripe2"); + if (magstripe2->bytes >= 40) { + stp_eprintf(v, _("StpMagStripe2 must be between 0 and 39 bytes!\n")); + return 0; + } + } + if (stp_check_raw_parameter(v, "MagStripe3", STP_PARAMETER_ACTIVE)) { + magstripe1 = stp_get_raw_parameter(v, "MagStripe3"); + if (magstripe1->bytes >= 107) { + stp_eprintf(v, _("StpMagStripe3 must be between 0 and 106 bytes!\n")); + return 0; + } + } + + /* No need to set global params if there's no privdata yet */ + if (!pd) + return 1; + + pd->privdata.magicard.overcoat = lpar && !strcmp("On", lpar); + pd->privdata.magicard.overcoat_dpx = lpar_dpx && !strcmp("On", lpar_dpx); + pd->privdata.magicard.resin_k = blacktype && !strcmp("Resin",blacktype); + pd->privdata.magicard.reject = stp_get_boolean_parameter(v, "RejectBad"); + pd->privdata.magicard.colorsure = stp_get_boolean_parameter(v, "ColorSure"); + pd->privdata.magicard.gamma = stp_get_int_parameter(v, "GammaCurve"); + pd->privdata.magicard.power_color = stp_get_int_parameter(v, "PowerColor") + 50; + pd->privdata.magicard.power_resin = stp_get_int_parameter(v, "PowerBlack") + 50; + pd->privdata.magicard.power_overcoat = stp_get_int_parameter(v, "PowerOC") + 50; + pd->privdata.magicard.align_start = stp_get_int_parameter(v, "AlignStart") + 50; + pd->privdata.magicard.align_end = stp_get_int_parameter(v, "AlignEnd") + 50; + pd->privdata.magicard.holopatch = holopatch; + pd->privdata.magicard.overcoat_hole = overcoat_hole; + pd->privdata.magicard.overcoat_hole_dpx = overcoat_hole_dpx; + + pd->horiz_offset = stp_get_int_parameter(v, "CardOffset"); + + pd->privdata.magicard.holokote = 0; + if (holokote) { + if (!strcmp(holokote, "UltraSecure")) { + pd->privdata.magicard.holokote = 1; + } else if (!strcmp(holokote, "InterlockingRings")) { + pd->privdata.magicard.holokote = 2; + } else if (!strcmp(holokote, "Flex")) { + pd->privdata.magicard.holokote = 3; + } + } + pd->privdata.magicard.holokote_custom = holokote_custom; + + pd->privdata.magicard.mag_coer = mag_coer && !strcmp("High", mag_coer); + + if (magstripe1 && magstripe1->bytes) { + int i; + memcpy(pd->privdata.magicard.mag1, magstripe1->data, magstripe1->bytes); + pd->privdata.magicard.mag1[magstripe1->bytes] = 0; + for (i = 0 ; i < magstripe1->bytes ; i++) { + if (pd->privdata.magicard.mag1[i] < 0x20 || + pd->privdata.magicard.mag1[i] > 0x5f) { + stp_eprintf(v, _("Illegal Alphanumeric in Magstripe, 0x20->0x5F ASCII only\n")); + return 0; + } + } + if (pd->privdata.magicard.mag1[0] != '%') { + stp_eprintf(v, _("Magstripe alphanumeric data must start with '%%'\n")); + return 0; + } + if (pd->privdata.magicard.mag1[magstripe1->bytes - 1] != '?') { + stp_eprintf(v, _("Magstripe string must end with '?'\n")); + return 0; + } + } + if (magstripe2 && magstripe2->bytes) { + int i; + memcpy(pd->privdata.magicard.mag2, magstripe2->data, magstripe2->bytes); + pd->privdata.magicard.mag2[magstripe2->bytes] = 0; + for (i = 0 ; i < magstripe2->bytes ; i++) { + if (pd->privdata.magicard.mag2[i] < 0x30 || + pd->privdata.magicard.mag2[i] > 0x3f) { + stp_eprintf(v, _("Illegal Numeric in Magstripe, 0x30->0x3F ASCII only\n")); + return 0; + } + } + if (pd->privdata.magicard.mag2[0] != ';') { + stp_eprintf(v, _("Magstripe numeric data must start with ';'\n")); + return 0; + } + if (pd->privdata.magicard.mag2[magstripe2->bytes - 1] != '?') { + stp_eprintf(v, _("Magstripe data must end with '?'\n")); + return 0; + } + } + if (magstripe3 && magstripe3->bytes) { + int i; + memcpy(pd->privdata.magicard.mag3, magstripe3->data, magstripe3->bytes); + pd->privdata.magicard.mag3[magstripe3->bytes] = 0; + for (i = 0 ; i < magstripe3->bytes ; i++) { + if (pd->privdata.magicard.mag3[i] < 0x30 || + pd->privdata.magicard.mag3[i] > 0x3f) { + stp_eprintf(v, _("Illegal Numeric in Magstripe, 0x30->0x3F ASCII only\n")); + return 0; + } + } + if (pd->privdata.magicard.mag3[0] != ';') { + stp_eprintf(v, _("Magstripe numeric data must start with ';'\n")); + return 0; + } + if (pd->privdata.magicard.mag3[magstripe3->bytes - 1] != '?') { + stp_eprintf(v, _("Magstripe data must end with '?'\n")); + return 0; + } + } + return 1; } /* Model capabilities */ @@ -6808,7 +7662,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, &p10_block_init_func, NULL, NULL, - &p10_laminate_list, NULL, + &p10_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -6875,7 +7729,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, &p440_block_init_func, &p440_block_end_func, NULL, - &p10_laminate_list, NULL, + &p10_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -6886,7 +7740,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &ps100_page_list, &ps100_printsize_list, 1808, - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, &ps100_printer_init_func, &ps100_printer_end_func, NULL, NULL, NULL, NULL, @@ -6904,7 +7758,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &cp10_printer_init_func, NULL, &cpx00_plane_init_func, NULL, NULL, NULL, @@ -6922,7 +7776,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &cpx00_printer_init_func, NULL, &cpx00_plane_init_func, NULL, NULL, NULL, @@ -6943,7 +7797,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &cpx00_printer_init_func, NULL, &cpx00_plane_init_func, NULL, NULL, NULL, @@ -6961,7 +7815,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &es1_printer_init_func, NULL, &es1_plane_init_func, NULL, NULL, NULL, @@ -6979,7 +7833,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &es2_printer_init_func, NULL, &es2_plane_init_func, NULL, NULL, NULL, @@ -6997,7 +7851,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &es3_printer_init_func, &es3_printer_end_func, &es2_plane_init_func, NULL, NULL, NULL, @@ -7015,7 +7869,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &es40_printer_init_func, &es3_printer_end_func, &es2_plane_init_func, NULL, NULL, NULL, @@ -7033,7 +7887,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &cp790_printer_init_func, &es3_printer_end_func, &es2_plane_init_func, NULL, NULL, NULL, @@ -7051,7 +7905,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &cpx00_printer_init_func, NULL, &cpx00_plane_init_func, NULL, NULL, NULL, @@ -7069,7 +7923,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &cpx00_printer_init_func, &cp900_printer_end_func, &cpx00_plane_init_func, NULL, NULL, NULL, @@ -7080,32 +7934,18 @@ static const dyesub_cap_t dyesub_model_capabilities[] = }, { /* Canon CP820, CP910, CP1000, CP1200 */ 1011, -#ifdef CANONSELPHYNEO_CMY &cmy_ink_list, -#else - &rgb_ink_list, -#endif &res_300dpi_list, &cp910_page_list, &cp910_printsize_list, SHRT_MAX, -#ifdef CANONSELPHYNEO_CMY - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE, -#else DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_RGBtoYCBCR, -#endif + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &cp910_printer_init_func, NULL, NULL, NULL, NULL, NULL, -#ifdef CANONSELPHYNEO_CMY cpx00_adjust_curves, -#else - NULL, -#endif NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, @@ -7123,7 +7963,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, updp10_adjust_curves, - &updp10_laminate_list, NULL, + &updp10_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7134,12 +7974,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &updr150_page_list, &updr150_printsize_list, SHRT_MAX, - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, &updr150_printer_init_func, &updr150_printer_end_func, NULL, NULL, NULL, NULL, NULL, - &updp10_laminate_list, NULL, + &updp10_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7156,7 +7996,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, &dppex5_block_init, NULL, NULL, - &dppex5_laminate_list, NULL, + &dppex5_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7172,7 +8012,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, NULL, - &updr100_laminate_list, NULL, + &updr100_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7183,12 +8023,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &updr200_page_list, &updr200_printsize_list, SHRT_MAX, - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, &updr200_printer_init_func, &updr150_printer_end_func, NULL, NULL, NULL, NULL, NULL, - &updr200_laminate_list, NULL, + &updr200_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7199,7 +8039,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &upcr10_page_list, &upcr10_printsize_list, SHRT_MAX, - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, &upcr10_printer_init_func, &upcr10_printer_end_func, NULL, NULL, NULL, NULL, @@ -7282,12 +8122,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &kodak_6800_page_list, &kodak_6800_printsize_list, SHRT_MAX, - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, &kodak_68xx_printer_init, NULL, NULL, NULL, /* No plane funcs */ NULL, NULL, /* No block funcs */ NULL, - &kodak_6800_laminate_list, NULL, + &kodak_6800_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7298,12 +8138,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &kodak_6850_page_list, &kodak_6850_printsize_list, SHRT_MAX, - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, &kodak_68xx_printer_init, NULL, NULL, NULL, /* No plane funcs */ NULL, NULL, /* No block funcs */ NULL, - &kodak_6800_laminate_list, NULL, + &kodak_6800_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7314,12 +8154,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &kodak_605_page_list, &kodak_605_printsize_list, SHRT_MAX, - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, &kodak_605_printer_init, NULL, NULL, NULL, /* No plane funcs */ NULL, NULL, /* No block funcs */ NULL, - &kodak_605_laminate_list, NULL, + &kodak_605_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7332,12 +8172,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_ROW_INTERLACE, + | DYESUB_FEATURE_ROW_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &kodak_1400_printer_init, NULL, NULL, NULL, NULL, NULL, NULL, - &kodak_6800_laminate_list, &kodak_1400_media_list, + &kodak_6800_overcoat_list, &kodak_1400_media_list, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7350,12 +8190,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_ROW_INTERLACE, + | DYESUB_FEATURE_ROW_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &kodak_805_printer_init, NULL, NULL, NULL, /* No plane funcs */ NULL, NULL, /* No block funcs */ NULL, - &kodak_6800_laminate_list, NULL, + &kodak_6800_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7367,12 +8207,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &kodak_9810_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &kodak_9810_printer_init, &kodak_9810_printer_end, &kodak_9810_plane_init, NULL, NULL, NULL, /* No block funcs */ NULL, - &kodak_9810_laminate_list, NULL, + &kodak_9810_overcoat_list, NULL, NULL, NULL, kodak_9810_parameters, kodak_9810_parameter_count, @@ -7387,12 +8227,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &kodak_8810_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &kodak_8810_printer_init, NULL, NULL, NULL, NULL, NULL, /* No block funcs */ NULL, - &kodak_8810_laminate_list, NULL, + &kodak_8810_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7404,12 +8244,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &kodak_7000_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &kodak_70xx_printer_init, NULL, NULL, NULL, NULL, NULL, /* No block funcs */ NULL, - &kodak_7000_laminate_list, NULL, + &kodak_7000_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7421,12 +8261,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &kodak_7015_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &kodak_70xx_printer_init, NULL, NULL, NULL, NULL, NULL, /* No block funcs */ NULL, - &kodak_7000_laminate_list, NULL, + &kodak_7000_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7437,12 +8277,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &kodak_8500_page_list, &kodak_8500_printsize_list, SHRT_MAX, - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, &kodak_8500_printer_init, &kodak_8500_printer_end, NULL, NULL, /* No plane funcs */ NULL, NULL, /* No block funcs */ NULL, - &kodak_8500_laminate_list, &kodak_8500_media_list, + &kodak_8500_overcoat_list, &kodak_8500_media_list, NULL, NULL, kodak_8500_parameters, kodak_8500_parameter_count, @@ -7457,7 +8297,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &mitsu_cp3020d_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &mitsu_cp3020d_printer_init, &mitsu_cp3020d_printer_end, &mitsu_cp3020d_plane_init, &mitsu_cp3020d_plane_end, NULL, NULL, /* No block funcs */ @@ -7474,7 +8314,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &mitsu_cp3020d_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &mitsu_cp3020da_printer_init, &mitsu_cp3020da_printer_end, &mitsu_cp3020da_plane_init, NULL, NULL, NULL, /* No block funcs */ @@ -7491,7 +8331,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &mitsu_cp9550_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &mitsu_cp9550_printer_init, &mitsu_cp9550_printer_end, &mitsu_cp3020da_plane_init, NULL, NULL, NULL, /* No block funcs */ @@ -7505,50 +8345,38 @@ static const dyesub_cap_t dyesub_model_capabilities[] = }, { /* Mitsubishi CP9810D */ 4104, - &ymc_ink_list, + &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, + | DYESUB_FEATURE_NATIVECOPIES, &mitsu_cp9810_printer_init, &mitsu_cp9810_printer_end, - &mitsu_cp3020da_plane_init, NULL, + NULL, NULL, NULL, NULL, /* No block funcs */ NULL, - &mitsu_cp9810_laminate_list, NULL, + &mitsu_cp9810_overcoat_list, NULL, NULL, NULL, - mitsu9550_parameters, - mitsu9550_parameter_count, - mitsu9810_load_parameters, - mitsu9810_parse_parameters, + mitsu98xx_parameters, + mitsu98xx_parameter_count, + mitsu98xx_load_parameters, + mitsu98xx_parse_parameters, }, - { /* Mitsubishi CPD70D/CPD707D */ + { /* Mitsubishi CPD70D */ 4105, -#ifdef MITSU70X_8BPP &bgr_ink_list, -#else - &ymc_ink_list, -#endif &res_300dpi_list, &mitsu_cpd70x_page_list, &mitsu_cpd70x_printsize_list, SHRT_MAX, -#ifdef MITSU70X_8BPP - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_PLANE_LEFTTORIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_PLANE_LEFTTORIGHT | DYESUB_FEATURE_WHITE_BORDER | DYESUB_FEATURE_NATIVECOPIES, &mitsu_cpd70x_printer_init, NULL, -#else - 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, -#endif - NULL, &mitsu_cpd70x_plane_end, + NULL, NULL, NULL, NULL, /* No block funcs */ NULL, - &mitsu_cpd70x_laminate_list, NULL, - NULL, NULL, + &mitsu_cpd70x_overcoat_list, NULL, + mitsu_cpd70k60_job_start, NULL, mitsu70x_parameters, mitsu70x_parameter_count, mitsu70x_load_parameters, @@ -7556,29 +8384,18 @@ static const dyesub_cap_t dyesub_model_capabilities[] = }, { /* Mitsubishi CPK60D */ 4106, -#ifdef MITSU70X_8BPP &bgr_ink_list, -#else - &ymc_ink_list, -#endif &res_300dpi_list, &mitsu_cpk60_page_list, &mitsu_cpk60_printsize_list, SHRT_MAX, -#ifdef MITSU70X_8BPP - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_PLANE_LEFTTORIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_PLANE_LEFTTORIGHT | DYESUB_FEATURE_NATIVECOPIES, &mitsu_cpk60_printer_init, NULL, -#else - 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, -#endif - NULL, &mitsu_cpd70x_plane_end, + NULL, NULL, NULL, NULL, /* No block funcs */ NULL, - &mitsu_cpd70x_laminate_list, NULL, - NULL, NULL, + &mitsu_cpd70x_overcoat_list, NULL, + mitsu_cpd70k60_job_start, NULL, mitsu70x_parameters, mitsu70x_parameter_count, mitsu_k60_load_parameters, @@ -7586,29 +8403,18 @@ static const dyesub_cap_t dyesub_model_capabilities[] = }, { /* Mitsubishi CPD80D */ 4107, -#ifdef MITSU70X_8BPP &bgr_ink_list, -#else - &ymc_ink_list, -#endif &res_300dpi_list, &mitsu_cpd80_page_list, &mitsu_cpd80_printsize_list, SHRT_MAX, -#ifdef MITSU70X_8BPP - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_PLANE_LEFTTORIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_PLANE_LEFTTORIGHT | DYESUB_FEATURE_WHITE_BORDER | DYESUB_FEATURE_NATIVECOPIES, &mitsu_cpd70x_printer_init, NULL, -#else - 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, -#endif - NULL, &mitsu_cpd70x_plane_end, + NULL, NULL, NULL, NULL, /* No block funcs */ NULL, - &mitsu_cpd70x_laminate_list, NULL, - NULL, NULL, + &mitsu_cpd70x_overcoat_list, NULL, + mitsu_cpd70k60_job_start, NULL, mitsu70x_parameters, mitsu70x_parameter_count, mitsu70x_load_parameters, @@ -7616,29 +8422,18 @@ static const dyesub_cap_t dyesub_model_capabilities[] = }, { /* Kodak 305 */ 4108, -#ifdef MITSU70X_8BPP &bgr_ink_list, -#else - &ymc_ink_list, -#endif &res_300dpi_list, &kodak305_page_list, &kodak305_printsize_list, SHRT_MAX, -#ifdef MITSU70X_8BPP - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_PLANE_LEFTTORIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_PLANE_LEFTTORIGHT | DYESUB_FEATURE_NATIVECOPIES, &kodak305_printer_init, NULL, -#else - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_16BPP - | DYESUB_FEATURE_BIGENDIAN, - &kodak305_printer_init, &mitsu_cpd70x_printer_end, -#endif - NULL, &mitsu_cpd70x_plane_end, + NULL, NULL, NULL, NULL, /* No block funcs */ NULL, - &mitsu_cpd70x_laminate_list, NULL, - NULL, NULL, + &mitsu_cpd70x_overcoat_list, NULL, + mitsu_cpd70k60_job_start, NULL, mitsu70x_parameters, mitsu70x_parameter_count, mitsu_k60_load_parameters, @@ -7651,13 +8446,13 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &mitsu_cpd90_page_list, &mitsu_cpd90_printsize_list, SHRT_MAX, - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_PLANE_LEFTTORIGHT, - &mitsu_cpd90_printer_init, &mitsu_cpd90_printer_end, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, + &mitsu_cpd90_printer_init, NULL, NULL, NULL, NULL, NULL, /* No block funcs */ NULL, - &mitsu_cpd70x_laminate_list, NULL, - NULL, NULL, + &mitsu_cpd70x_overcoat_list, NULL, + NULL, mitsu_cpd90_job_end, mitsu_d90_parameters, mitsu_d90_parameter_count, mitsu_d90_load_parameters, @@ -7671,7 +8466,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &mitsu_cp9600_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &mitsu_cp9600_printer_init, &mitsu_cp9600_printer_end, &mitsu_cp3020da_plane_init, NULL, NULL, NULL, /* No block funcs */ @@ -7688,7 +8483,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &mitsu_cp9550s_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &mitsu_cp9550_printer_init, &mitsu_cp9550s_printer_end, &mitsu_cp3020da_plane_init, NULL, NULL, NULL, /* No block funcs */ @@ -7702,29 +8497,18 @@ static const dyesub_cap_t dyesub_model_capabilities[] = }, { /* Fujifilm ASK-300 */ 4112, -#ifdef MITSU70X_8BPP &bgr_ink_list, -#else - &ymc_ink_list, -#endif &res_300dpi_list, &fuji_ask300_page_list, &fuji_ask300_printsize_list, SHRT_MAX, -#ifdef MITSU70X_8BPP - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_PLANE_LEFTTORIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_PLANE_LEFTTORIGHT | DYESUB_FEATURE_WHITE_BORDER | DYESUB_FEATURE_NATIVECOPIES, &fuji_ask300_printer_init, NULL, -#else - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_16BPP - | DYESUB_FEATURE_BIGENDIAN, - &fuji_ask300_printer_init, &mitsu_cpd70x_printer_end, -#endif - NULL, &mitsu_cpd70x_plane_end, + NULL, NULL, NULL, NULL, /* No block funcs */ NULL, - NULL, NULL, - NULL, NULL, + &mitsu_cpd70x_overcoat_list, NULL, + mitsu_cpd70k60_job_start, NULL, mitsu70x_parameters, mitsu70x_parameter_count, mitsu_k60_load_parameters, @@ -7732,24 +8516,23 @@ static const dyesub_cap_t dyesub_model_capabilities[] = }, { /* Mitsubishi CP9800D */ 4113, - &ymc_ink_list, + &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, + | DYESUB_FEATURE_NATIVECOPIES, &mitsu_cp9800_printer_init, &mitsu_cp9810_printer_end, - &mitsu_cp3020da_plane_init, NULL, + NULL, NULL, NULL, NULL, /* No block funcs */ NULL, NULL, NULL, NULL, NULL, - mitsu9550_parameters, - mitsu9550_parameter_count, - mitsu9810_load_parameters, - mitsu9810_parse_parameters, + mitsu98xx_parameters, + mitsu98xx_parameter_count, + mitsu98xx_load_parameters, + mitsu98xx_parse_parameters, }, { /* Mitsubishi P95D/DW */ 4114, @@ -7759,7 +8542,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &mitsu_p95d_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_MONOCHROME, + | DYESUB_FEATURE_MONOCHROME | DYESUB_FEATURE_NATIVECOPIES, &mitsu_p95d_printer_init, &mitsu_p95d_printer_end, &mitsu_p95d_plane_start, NULL, NULL, NULL, /* No block funcs */ @@ -7779,7 +8562,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &mitsu_cp9500_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_PLANE_INTERLACE, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, &mitsu_cp9500_printer_init, &mitsu_cp9500_printer_end, &mitsu_cp3020da_plane_init, NULL, NULL, NULL, /* No block funcs */ @@ -7799,7 +8582,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &mitsu_p95d_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT - | DYESUB_FEATURE_MONOCHROME, + | DYESUB_FEATURE_MONOCHROME | DYESUB_FEATURE_NATIVECOPIES, &mitsu_p93d_printer_init, &mitsu_p95d_printer_end, &mitsu_p95d_plane_start, NULL, NULL, NULL, /* No block funcs */ @@ -7811,6 +8594,57 @@ static const dyesub_cap_t dyesub_model_capabilities[] = mitsu_p93d_load_parameters, mitsu_p93d_parse_parameters, }, + { /* Mitsubishi CPD707D */ + 4117, + &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_LEFTTORIGHT | DYESUB_FEATURE_WHITE_BORDER | DYESUB_FEATURE_NATIVECOPIES, + &mitsu_cpd70x_printer_init, NULL, + NULL, NULL, + NULL, NULL, /* No block funcs */ + NULL, + &mitsu_cpd70x_overcoat_list, NULL, + mitsu_cpd70k60_job_start, NULL, + mitsu707_parameters, + mitsu707_parameter_count, + mitsu707_load_parameters, + mitsu70x_parse_parameters, + }, + { /* Fujifilm ASK-2000/2500 */ + 4200, + &bgr_ink_list, + &res_300dpi_list, + &fuji_ask2000_page_list, + &fuji_ask2000_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, + &fuji_ask2000_printer_init, &fuji_ask2000_printer_end, + NULL, NULL, + NULL, NULL, /* No block funcs */ + NULL, + NULL, NULL, + NULL, NULL, + NULL, 0, NULL, NULL, + }, + { /* Fujifilm ASK-4000 */ + 4201, + &bgr_ink_list, + &res_300dpi_list, + &fuji_ask4000_page_list, + &fuji_ask4000_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, + &fuji_ask4000_printer_init, &fuji_ask4000_printer_end, + NULL, NULL, + NULL, NULL, /* No block funcs */ + NULL, + NULL, NULL, + NULL, NULL, + NULL, 0, NULL, NULL, + }, { /* Shinko CHC-S9045 (experimental) */ 5000, &rgb_ink_list, @@ -7834,12 +8668,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &shinko_chcs2145_page_list, &shinko_chcs2145_printsize_list, SHRT_MAX, - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, &shinko_chcs2145_printer_init, &shinko_chcs2145_printer_end, NULL, NULL, /* No planes */ NULL, NULL, /* No blocks */ NULL, - &shinko_chcs2145_laminate_list, NULL, + &shinko_chcs2145_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7850,12 +8684,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &shinko_chcs1245_page_list, &shinko_chcs1245_printsize_list, SHRT_MAX, - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, &shinko_chcs1245_printer_init, &shinko_chcs2145_printer_end, NULL, NULL, /* No planes */ NULL, NULL, /* No blocks */ NULL, - &shinko_chcs1245_laminate_list, NULL, + &shinko_chcs1245_overcoat_list, NULL, NULL, NULL, shinko_chcs1245_parameters, shinko_chcs1245_parameter_count, @@ -7869,12 +8703,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &shinko_chcs6245_page_list, &shinko_chcs6245_printsize_list, SHRT_MAX, - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, &shinko_chcs6245_printer_init, &shinko_chcs2145_printer_end, NULL, NULL, /* No planes */ NULL, NULL, /* No blocks */ NULL, - &shinko_chcs6245_laminate_list, NULL, + &shinko_chcs6245_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7892,12 +8726,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = #ifdef S6145_YMC DYESUB_FEATURE_PLANE_INTERLACE | #endif - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, &shinko_chcs6145_printer_init, &shinko_chcs2145_printer_end, NULL, NULL, /* No planes */ NULL, NULL, /* No blocks */ NULL, - &shinko_chcs6145_laminate_list, NULL, + &shinko_chcs6145_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7915,12 +8749,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] = #ifdef S6145_YMC DYESUB_FEATURE_PLANE_INTERLACE | #endif - DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_NATIVECOPIES, &shinko_chcs6145_printer_init, &shinko_chcs2145_printer_end, NULL, NULL, /* No planes */ NULL, NULL, /* No blocks */ NULL, - &shinko_chcs6145_laminate_list, NULL, + &shinko_chcs6145_overcoat_list, NULL, NULL, NULL, NULL, 0, NULL, NULL, }, @@ -7932,14 +8766,17 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &dnpds40_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT | DYESUB_FEATURE_NATIVECOPIES, &dnpds40_printer_start, &dnpds40_printer_end, &dnpds40_plane_init, NULL, NULL, NULL, NULL, - &dnpds40_laminate_list, NULL, + &dnpds40_overcoat_list, NULL, NULL, NULL, - NULL, 0, NULL, NULL, + ds40_parameters, + ds40_parameter_count, + ds40_load_parameters, + ds40_parse_parameters, }, { /* Dai Nippon Printing DS80 */ 6001, @@ -7949,14 +8786,17 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &dnpds80_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT | DYESUB_FEATURE_NATIVECOPIES, &dnpds80_printer_start, &dnpds40_printer_end, &dnpds40_plane_init, NULL, NULL, NULL, NULL, - &dnpds40_laminate_list, NULL, + &dnpds40_overcoat_list, NULL, NULL, NULL, - NULL, 0, NULL, dnpds80_parse_parameters, + ds40_parameters, + ds40_parameter_count, + ds40_load_parameters, + dnpds80_parse_parameters, }, { /* Dai Nippon Printing DSRX1 */ 6002, @@ -7966,14 +8806,17 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &dnpsrx1_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT | DYESUB_FEATURE_NATIVECOPIES, &dnpdsrx1_printer_start, &dnpds40_printer_end, &dnpds40_plane_init, NULL, NULL, NULL, NULL, - &dnpds40_laminate_list, NULL, + &dnpds40_overcoat_list, NULL, NULL, NULL, - NULL, 0, NULL, NULL, + ds40_parameters, + ds40_parameter_count, + ds40_load_parameters, + ds40_parse_parameters, }, { /* Dai Nippon Printing DS620 */ 6003, @@ -7983,14 +8826,17 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &dnpds620_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT | DYESUB_FEATURE_NATIVECOPIES, &dnpds620_printer_start, &dnpds40_printer_end, &dnpds40_plane_init, NULL, NULL, NULL, NULL, - &dnpds620_laminate_list, NULL, + &dnpds620_overcoat_list, NULL, NULL, NULL, - NULL, 0, NULL, NULL, + ds40_parameters, + ds40_parameter_count, + ds40_load_parameters, + ds40_parse_parameters, }, { /* Citizen CW-01 */ 6005, @@ -8000,9 +8846,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &citizen_cw01_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT, - &citizen_cw01_printer_start, NULL, - &citizen_cw01_plane_init, NULL, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT | DYESUB_FEATURE_NATIVECOPIES, + &citizen_cw01_printer_start, &dnpds40_printer_end, + &dnpds40_plane_init, NULL, NULL, NULL, NULL, NULL, NULL, @@ -8017,14 +8863,17 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &dnpds80dx_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT | DYESUB_FEATURE_DUPLEX, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT | DYESUB_FEATURE_DUPLEX | DYESUB_FEATURE_NATIVECOPIES, &dnpds80_printer_start, &dnpds40_printer_end, &dnpds40_plane_init, NULL, NULL, NULL, NULL, - &dnpds40_laminate_list, &dnpds80dx_media_list, + &dnpds40_overcoat_list, &dnpds80dx_media_list, NULL, NULL, - NULL, 0, NULL, dnpds80dx_parse_parameters, + ds40_parameters, + ds40_parameter_count, + ds40_load_parameters, + dnpds80dx_parse_parameters, }, { /* Dai Nippon Printing DS820 */ 6007, @@ -8034,18 +8883,58 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &dnpds820_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER - | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT, + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT | DYESUB_FEATURE_NATIVECOPIES , &dnpds820_printer_start, &dnpds40_printer_end, &dnpds40_plane_init, NULL, NULL, NULL, NULL, - &dnpds620_laminate_list, NULL, + &dnpds620_overcoat_list, NULL, NULL, NULL, ds820_parameters, ds820_parameter_count, ds820_load_parameters, ds820_parse_parameters, }, + { /* Magicard Series w/ Duplex */ + 7000, + &ymc_ink_list, + &res_300dpi_list, + &magicard_page_list, + &magicard_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_DUPLEX | DYESUB_FEATURE_NATIVECOPIES, + &magicard_printer_init, &magicard_printer_end, + NULL, magicard_plane_end, + NULL, NULL, + NULL, + &magicard_overcoat_list, NULL, + NULL, NULL, + magicard_parameters, + magicard_parameter_count, + magicard_load_parameters, + magicard_parse_parameters, + }, + { /* Magicard Series w/o Duplex */ + 7001, + &ymc_ink_list, + &res_300dpi_list, + &magicard_page_list, + &magicard_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_NATIVECOPIES, + &magicard_printer_init, &magicard_printer_end, + NULL, magicard_plane_end, + NULL, NULL, + NULL, + &magicard_overcoat_list, NULL, + NULL, NULL, + magicard_parameters, + magicard_parameter_count, + magicard_load_parameters, + magicard_parse_parameters, + }, }; static const stp_parameter_t the_parameters[] = @@ -8080,13 +8969,16 @@ static const stp_parameter_t the_parameters[] = STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE, STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0 }, - { - /* TRANSLATORS: Some dye sublimation printers are able to achieve */ - /* better durability of output by covering it with transparent */ - /* laminate surface. This surface can be of different patterns: */ - /* common are matte, glossy or texture. */ - "Laminate", N_("Laminate Pattern"), "Color=No,Category=Advanced Printer Setup", - N_("Laminate Pattern"), + { /* TRANSLATORS: Some dye sublimation printers are able to achieve + better durability of output by covering it with transparent + overcoat surface. This surface can be of different patterns: + common are matte, glossy or texture. + + This is called "Laminate" instead of "Overcoat" for backwards + compatibility reasons. + */ + "Laminate", N_("Overcoat Pattern"), "Color=No,Category=Advanced Printer Setup", + N_("Overcoat Pattern"), STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE, STP_PARAMETER_LEVEL_BASIC, 1, 0, STP_CHANNEL_NONE, 1, 0 }, @@ -8112,7 +9004,7 @@ static const stp_parameter_t the_parameters[] = "NativeCopies", N_("Printer Generates Copies Natively"), "Color=No,Category=Job Mode", N_("Printer Generates Copies"), STP_PARAMETER_TYPE_BOOLEAN, STP_PARAMETER_CLASS_FEATURE, - STP_PARAMETER_LEVEL_INTERNAL, 0, 0, STP_CHANNEL_NONE, 0, 1 + STP_PARAMETER_LEVEL_INTERNAL, 1, 0, STP_CHANNEL_NONE, 0, 1 }, }; @@ -8181,7 +9073,7 @@ static const stp_param_string_t duplex_types[] = }; #define NUM_DUPLEX (sizeof (duplex_types) / sizeof (stp_param_string_t)) -static const dyesub_cap_t* dyesub_get_model_capabilities(int model) +static const dyesub_cap_t* dyesub_get_model_capabilities(const stp_vars_t *v, int model) { int i; int models = sizeof(dyesub_model_capabilities) / sizeof(dyesub_cap_t); @@ -8191,18 +9083,18 @@ static const dyesub_cap_t* dyesub_get_model_capabilities(int model) if (dyesub_model_capabilities[i].model == model) return &(dyesub_model_capabilities[i]); } - stp_deprintf(STP_DBG_DYESUB, + stp_dprintf(STP_DBG_DYESUB, v, "dyesub: model %d not found in capabilities list.\n", model); return &(dyesub_model_capabilities[0]); } -static const laminate_t* dyesub_get_laminate_pattern(stp_vars_t *v) +static const overcoat_t* dyesub_get_overcoat_pattern(stp_vars_t *v) { const char *lpar = stp_get_string_parameter(v, "Laminate"); - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); - const laminate_list_t *llist = caps->laminate; - const laminate_t *l = NULL; + const overcoat_list_t *llist = caps->overcoat; + const overcoat_t *l = NULL; int i; for (i = 0; i < llist->n_items; i++) @@ -8217,7 +9109,7 @@ static const laminate_t* dyesub_get_laminate_pattern(stp_vars_t *v) 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( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); const dyesub_media_list_t *mlist = caps->media; const dyesub_media_t *m = NULL; @@ -8240,7 +9132,7 @@ dyesub_printsize(const stp_vars_t *v, int i; const char *page = stp_get_string_parameter(v, "PageSize"); const char *resolution = stp_get_string_parameter(v, "Resolution"); - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); const dyesub_printsize_list_t *p = caps->printsize; @@ -8254,7 +9146,7 @@ dyesub_printsize(const stp_vars_t *v, return; } } - stp_erprintf("dyesub_printsize: printsize not found (%s, %s)\n", + stp_eprintf(v, "dyesub_printsize: printsize not found (%s, %s)\n", page, resolution); } @@ -8267,7 +9159,7 @@ dyesub_feature(const dyesub_cap_t *caps, int feature) static stp_parameter_list_t dyesub_list_parameters(const stp_vars_t *v) { - const dyesub_cap_t *caps = dyesub_get_model_capabilities(stp_get_model_id(v)); + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); stp_parameter_list_t *ret = stp_parameter_list_create(); int i; @@ -8288,7 +9180,7 @@ dyesub_parameters(const stp_vars_t *v, const char *name, stp_parameter_t *description) { int i; - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); description->p_type = STP_PARAMETER_TYPE_INVALID; @@ -8322,20 +9214,19 @@ dyesub_parameters(const stp_vars_t *v, const char *name, { int default_specified = 0; const dyesub_pagesize_list_t *p = caps->pages; - const char* text; description->bounds.str = stp_string_list_create(); + + /* Walk the list of pagesizes for the printer */ for (i = 0; i < p->n_items; i++) { - const stp_papersize_t *pt = stp_get_papersize_by_name( - p->item[i].name); - - text = (p->item[i].text ? p->item[i].text : pt->text); stp_string_list_add_string(description->bounds.str, - p->item[i].name, gettext(text)); - if (! default_specified && pt && pt->width > 0 && pt->height > 0) + p->item[i].psize.name, + gettext(p->item[i].psize.text)); + if (! default_specified && + p->item[i].psize.width > 0 && p->item[i].psize.height > 0) { - description->deflt.str = p->item[i].name; + description->deflt.str = p->item[i].psize.name; default_specified = 1; } } @@ -8393,13 +9284,13 @@ dyesub_parameters(const stp_vars_t *v, const char *name, else if (strcmp(name, "Laminate") == 0) { description->bounds.str = stp_string_list_create(); - if (caps->laminate) + if (caps->overcoat) { - const laminate_list_t *llist = caps->laminate; + const overcoat_list_t *llist = caps->overcoat; for (i = 0; i < llist->n_items; i++) { - const laminate_t *l = &(llist->item[i]); + const overcoat_t *l = &(llist->item[i]); stp_string_list_add_string(description->bounds.str, l->name, gettext(l->text)); } @@ -8457,41 +9348,63 @@ dyesub_parameters(const stp_vars_t *v, const char *name, else description->is_active = 0; } + else if (strcmp(name, "NativeCopies") == 0) + { + description->deflt.boolean = dyesub_feature(caps, DYESUB_FEATURE_NATIVECOPIES); + description->is_active = 1; + } else description->is_active = 0; } static const dyesub_pagesize_t* -dyesub_current_pagesize(const stp_vars_t *v) +dyesub_get_pagesize(const stp_vars_t *v, const char *page) { - const char *page = stp_get_string_parameter(v, "PageSize"); - const stp_papersize_t *pt = stp_get_papersize_by_name(page); - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); const dyesub_pagesize_list_t *p = caps->pages; int i; + if (page == NULL) + return NULL; for (i = 0; i < p->n_items; i++) { - if (strcmp(p->item[i].name,pt->name) == 0) + if (strcmp(p->item[i].psize.name,page) == 0) return &(p->item[i]); } return NULL; } +static const dyesub_pagesize_t* +dyesub_current_pagesize(const stp_vars_t *v) +{ + const char *page = stp_get_string_parameter(v, "PageSize"); + return dyesub_get_pagesize(v, page); +} + +static const stp_papersize_t * +dyesub_describe_papersize(const stp_vars_t *v, const char *name) +{ + const dyesub_pagesize_t *pagesize = dyesub_get_pagesize(v, name); + if (pagesize) + return &(pagesize->psize); + else + return NULL; +} + static void dyesub_media_size(const stp_vars_t *v, stp_dimension_t *width, stp_dimension_t *height) { - const dyesub_pagesize_t *p = dyesub_current_pagesize(v); + const dyesub_pagesize_t *pt = dyesub_current_pagesize(v); stp_default_media_size(v, width, height); - if (p && p->width_pt > 0) - *width = p->width_pt; - if (p && p->height_pt > 0) - *height = p->height_pt; + if (pt && pt->psize.width > 0) + *width = pt->psize.width; + if (pt && pt->psize.height > 0) + *height = pt->psize.height; } static void @@ -8504,15 +9417,15 @@ dyesub_imageable_area_internal(const stp_vars_t *v, int *print_mode) { stp_dimension_t width, height; - const dyesub_pagesize_t *p = dyesub_current_pagesize(v); - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_pagesize_t *pt = dyesub_current_pagesize(v); + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); dyesub_media_size(v, &width, &height); if (use_maximum_area || (dyesub_feature(caps, DYESUB_FEATURE_BORDERLESS) && stp_get_boolean_parameter(v, "Borderless")) - || !p) + || !pt) { *left = 0; *top = 0; @@ -8521,13 +9434,13 @@ dyesub_imageable_area_internal(const stp_vars_t *v, } else { - *left = p->border_pt_left; - *top = p->border_pt_top; - *right = width - p->border_pt_right; - *bottom = height - p->border_pt_bottom; + *left = pt->psize.left; + *top = pt->psize.top; + *right = width - pt->psize.right; + *bottom = height - pt->psize.bottom; } - if (p) - *print_mode = p->print_mode; + if (pt) + *print_mode = pt->print_mode; else *print_mode = DYESUB_PORTRAIT; } @@ -8552,7 +9465,7 @@ dyesub_maximum_imageable_area(const stp_vars_t *v, { int not_used; const int model = stp_get_model_id(v); - const dyesub_cap_t *caps = dyesub_get_model_capabilities(model); + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, model); /* For printers that report FEATURE_WHITE_BORDER, we need to respect the margins they define as that's the printable area. @@ -8581,7 +9494,7 @@ dyesub_describe_resolution(const stp_vars_t *v, stp_resolution_t *x, stp_resolution_t *y) { const char *resolution = stp_get_string_parameter(v, "Resolution"); - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); const dyesub_resolution_list_t *r = caps->resolution; int i; @@ -8607,7 +9520,7 @@ static const char * dyesub_describe_output_internal(const stp_vars_t *v, dyesub_print_vars_t *pv) { const char *ink_type = stp_get_string_parameter(v, "InkType"); - const dyesub_cap_t *caps = dyesub_get_model_capabilities( + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, stp_get_model_id(v)); const char *output_type; int i; @@ -8673,14 +9586,6 @@ dyesub_swap_ints(int *a, int *b) } static void -dyesub_swap_doubles(double *a, double *b) -{ - double t = *a; - *a = *b; - *b = t; -} - -static void dyesub_adjust_curve(stp_vars_t *v, const char *color_adj, const char *color_curve) @@ -8704,7 +9609,7 @@ dyesub_exec(stp_vars_t *v, { if (func) { - stp_deprintf(STP_DBG_DYESUB, "dyesub: %s\n", debug_string); + stp_dprintf(STP_DBG_DYESUB, v, "dyesub: %s\n", debug_string); (*func)(v); } } @@ -8716,18 +9621,31 @@ dyesub_exec_check(stp_vars_t *v, { if (func) { - stp_deprintf(STP_DBG_DYESUB, "dyesub: %s\n", debug_string); + stp_dprintf(STP_DBG_DYESUB, v, "dyesub: %s\n", debug_string); return (*func)(v); } return 1; } -/* FIXME: This function is badly named. It actually picks the best single - "point" on the original image to use for the desired output pixel. */ -static double -dyesub_interpolate(int oldval, int oldsize, int newsize) +/* XXX FIXME: This is "point" interpolation. Be smarter! + eg: Average (average all pixels that touch this one) + BiLinear (scale based on linear interpolation) + BiCubic (scale based on weighted average, based on proximity) + Lanczos (awesome!! but slow) +*/ +static int +dyesub_interpolate(int point, int olddim, int newdim) { - return ((double)oldval * (double)newsize / (double)oldsize); +#if 0 + /* Perform arithematic rounding. Is there a point? */ + int result = ((point * 2 * newdim / olddim) + 1) / 2; + if (result >= newdim) + result--; +#else + int result = (point * newdim / olddim); +#endif + + return result; } static void @@ -8765,7 +9683,7 @@ dyesub_read_image(stp_vars_t *v, { if (stp_color_get_row(v, image, i, &zero_mask)) { - stp_deprintf(STP_DBG_DYESUB, + stp_dprintf(STP_DBG_DYESUB, v, "dyesub_read_image: " "stp_color_get_row(..., %d, ...) == 0\n", i); dyesub_free_image(pv, image); @@ -8775,7 +9693,7 @@ dyesub_read_image(stp_vars_t *v, pv->image_rows = i+1; if (!image_data[i]) { - stp_deprintf(STP_DBG_DYESUB, + stp_dprintf(STP_DBG_DYESUB, v, "dyesub_read_image: " "(image_data[%d] = stp_malloc()) == NULL\n", i); dyesub_free_image(pv, image); @@ -8787,125 +9705,84 @@ dyesub_read_image(stp_vars_t *v, } static void -dyesub_render_pixel(unsigned short *src, char *dest, - dyesub_print_vars_t *pv, - const dyesub_cap_t *caps, - int plane) +dyesub_render_pixel_u8(unsigned short *src, char *dest, + dyesub_print_vars_t *pv, + int plane) { - unsigned short ink[MAX_INK_CHANNELS]; /* What is sent to printer */ + /* Scale down to output bit depth */ +#if 0 + *dest = src[plane] >> 8; // XXX does this make more sense than division? +#else + *dest = src[plane] / 257; +#endif +} +static void +dyesub_render_pixel_packed_u8(unsigned short *src, char *dest, + dyesub_print_vars_t *pv) +{ int i; - int start, end; - /* Only compute one color at a time */ - if (pv->plane_interlacing || pv->row_interlacing) - { - start = plane; - end = plane + 1; - } - else + /* copy out_channel (image) to equiv ink_channel (printer) */ + for (i = 0; i < pv->ink_channels; i++) { - start = 0; - end = pv->ink_channels; + dyesub_render_pixel_u8(src, dest + i, pv, pv->ink_order[i]-1); } +} - /* copy out_channel (image) to equiv ink_channel (printer) */ - for (i = start; i < end; i++) - { -#ifndef CANONSELPHYNEO_CMY - if (dyesub_feature(caps, DYESUB_FEATURE_RGBtoYCBCR)) - { - /* Convert RGB -> YCbCr (JPEG YCbCr444 coefficients) */ - double R, G, B; - R = src[0]; - G = src[1]; - B = src[2]; - - if (i == 0) /* Y */ - ink[i] = R * 0.299 + G * 0.587 + B * 0.114; - else if (i == 1) /* Cb */ - ink[i] = R * -0.168736 + G * -0.331264 + B * 0.5 + (1 << (16 -1)); // Math is 16bpp here. - else if (i == 2) /* Cr */ - ink[i] = R * 0.5 + G * -0.418688 + B * -0.081312 + (1 << (16 -1)); // Math is 16bpp here. - /* FIXME: Natively support YCbCr "inks" in the - Gutenprint core and allow that as an input - into the dyesub driver. */ - } - else -#endif - { - ink[i] = src[i]; - } +static void +dyesub_render_row_packed_u8(stp_vars_t *v, + dyesub_print_vars_t *pv, + const dyesub_cap_t *caps, + int in_row, + char *dest, + int bytes_per_pixel) +{ + int w; + unsigned short *src; - /* Downscale 16bpp to output bpp */ - if (pv->bytes_per_ink_channel == 1) - { - unsigned char *ink_u8 = (unsigned char *) ink; -#ifndef CANONSELPHYNEO_CMY -#if 0 - /* FIXME: Do we want to round? */ - if (dyesub_feature(caps, DYESUB_FEATURE_RGBtoYCBCR)) - ink_u8[i] = ink[i] >> 8; - else -#endif -#endif - ink_u8[i] = ink[i] / 257; + for (w = 0; w < pv->outw_px; w++) + { + int row = in_row; + int col = dyesub_interpolate(w, pv->outw_px, pv->imgw_px); + if (pv->plane_lefttoright) + col = pv->imgw_px - col - 1; + if (pv->print_mode == DYESUB_LANDSCAPE) + { /* "rotate" image */ + dyesub_swap_ints(&col, &row); + row = (pv->imgw_px - 1) - row; } - else /* ie 2 bytes per channel */ - { - /* Scale down to output bits */ - if (pv->bits_per_ink_channel != 16) - ink[i] = ink[i] >> (16 - pv->bits_per_ink_channel); + src = &(pv->image_data[row][col * pv->out_channels]); - /* Byteswap if needed */ - if (pv->byteswap) - ink[i] = ((ink[i] >> 8) & 0xff) | ((ink[i] & 0xff) << 8); - } + dyesub_render_pixel_packed_u8(src, dest + w*bytes_per_pixel, pv); } - - /* If we use plane or row interlacing, only write the plane's channel */ - if (pv->plane_interlacing || pv->row_interlacing) - memcpy(dest, (char *) ink + (plane * pv->bytes_per_ink_channel), - pv->bytes_per_ink_channel); - else /* Otherwise, print the full set of inks, in order (eg RGB or BGR) */ - for (i = 0; i < pv->ink_channels; i++) - memcpy(dest + i*pv->bytes_per_ink_channel, - (char *) ink + (pv->bytes_per_ink_channel * (pv->ink_order[i]-1)), - pv->bytes_per_ink_channel); } static void -dyesub_render_row(stp_vars_t *v, - dyesub_print_vars_t *pv, - const dyesub_cap_t *caps, - double in_row, - char *dest, - int bytes_per_pixel, - int plane) +dyesub_render_row_interlaced_u8(stp_vars_t *v, + dyesub_print_vars_t *pv, + const dyesub_cap_t *caps, + int in_row, + char *dest, + int plane) { int w; unsigned short *src; for (w = 0; w < pv->outw_px; w++) { - double row = in_row; - double col = dyesub_interpolate(w, pv->outw_px, pv->imgw_px); + int row = in_row; + int col = dyesub_interpolate(w, pv->outw_px, pv->imgw_px); if (pv->plane_lefttoright) col = pv->imgw_px - col - 1; if (pv->print_mode == DYESUB_LANDSCAPE) { /* "rotate" image */ - dyesub_swap_doubles(&col, &row); + dyesub_swap_ints(&col, &row); row = (pv->imgw_px - 1) - row; } - // XXX FIXME: This is "point" interpolation. Be smarter! - // eg: Average (average all pixels that touch this one) - // BiLinear (scale based on linear interpolation) - // BiCubic (scale based on weighted average, based on proximity) - // Lanczos (awesome!! but slow) - src = &(pv->image_data[(int)row][(int)col * pv->out_channels]); + src = &(pv->image_data[row][col * pv->out_channels]); - dyesub_render_pixel(src, dest + w*bytes_per_pixel, - pv, caps, plane); + dyesub_render_pixel_u8(src, dest + w, pv, plane); } } @@ -8917,8 +9794,7 @@ dyesub_print_plane(stp_vars_t *v, int plane) { int h; - int bpp = ((pv->plane_interlacing || pv->row_interlacing) ? 1 : pv->ink_channels) - * pv->bytes_per_ink_channel; + int bpp = ((pv->plane_interlacing || pv->row_interlacing) ? 1 : pv->ink_channels); size_t rowlen = pv->prnw_px * bpp; char *destrow = stp_malloc(rowlen); /* Allocate a buffer for the rendered rows */ if (!destrow) @@ -8927,7 +9803,6 @@ dyesub_print_plane(stp_vars_t *v, /* Pre-Fill in the blank bits of the row. */ if (dyesub_feature(caps, DYESUB_FEATURE_FULL_WIDTH)) { - /* FIXME: This is broken for bpp != 1 and packed data -- but no such models exist. */ /* empty part left of image area */ if (pv->outl_px > 0) { @@ -8945,7 +9820,6 @@ dyesub_print_plane(stp_vars_t *v, for (h = 0; h <= pv->prnb_px - pv->prnt_px; h++) { int p = pv->row_interlacing ? 0 : plane; - double row; do { @@ -8964,18 +9838,24 @@ dyesub_print_plane(stp_vars_t *v, if (h + pv->prnt_px < pv->outt_px || h + pv->prnt_px >= pv->outb_px) { /* empty part above or below image area */ memset(destrow, pv->empty_byte[plane], rowlen); - /* FIXME: This is also broken for bpp != 1 and packed data */ - /* FIXME: Also this is inefficient; it won't change once generated.. */ + /* FIXME: This is inefficient; it won't change once generated.. */ } else { - row = dyesub_interpolate(h + pv->prnt_px - pv->outt_px, - pv->outh_px, pv->imgh_px); + int srcrow = dyesub_interpolate(h + pv->prnt_px - pv->outt_px, + pv->outh_px, pv->imgh_px); - stp_deprintf(STP_DBG_DYESUB, - "dyesub_print_plane: h = %d, row = %f\n", h, row); + stp_dprintf(STP_DBG_DYESUB, v, + "dyesub_print_plane: h = %d, row = %d\n", h, srcrow); - dyesub_render_row(v, pv, caps, row, destrow + bpp * pv->outl_px, bpp, p); + if (pv->plane_interlacing || pv->row_interlacing) + { + dyesub_render_row_interlaced_u8(v, pv, caps, srcrow, + destrow + bpp * pv->outl_px, p); + } + else + dyesub_render_row_packed_u8(v, pv, caps, srcrow, + destrow + bpp * pv->outl_px, bpp); } /* And send it out */ stp_zfwrite(destrow, rowlen, 1, v); @@ -8996,7 +9876,7 @@ dyesub_print_plane(stp_vars_t *v, * dyesub_print() */ static int -dyesub_do_print(stp_vars_t *v, stp_image_t *image) +dyesub_do_print(stp_vars_t *v, stp_image_t *image, int print_op) { int i; dyesub_print_vars_t pv; @@ -9004,7 +9884,7 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) const int model = stp_get_model_id(v); const char *ink_type; - const dyesub_cap_t *caps = dyesub_get_model_capabilities(model); + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, model); int max_print_px_width = 0; int max_print_px_height = 0; int w_dpi, h_dpi; @@ -9023,7 +9903,7 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) stp_dimension_t page_pt_right = 0; stp_dimension_t page_pt_top = 0; stp_dimension_t page_pt_bottom = 0; - int page_mode; + int page_mode; int pl; @@ -9070,8 +9950,8 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) /* FIXME: What about Collation? Any special handling here? */ pd->pagesize = stp_get_string_parameter(v, "PageSize"); - if (caps->laminate) - pd->laminate = dyesub_get_laminate_pattern(v); + if (caps->overcoat) + pd->overcoat = dyesub_get_overcoat_pattern(v); if (caps->media) pd->media = dyesub_get_mediatype(v); @@ -9104,13 +9984,13 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) pv.outt_px = MIN(PX(out_pt_top - page_pt_top, h_dpi), pv.prnh_px - pv.outh_px); pv.outr_px = pv.outl_px + pv.outw_px; - pv.outb_px = pv.outt_px + pv.outh_px; + pv.outb_px = pv.outt_px + pv.outh_px; /* Swap back so that everything that follows will work. */ if (page_mode == DYESUB_LANDSCAPE) dyesub_swap_ints(&w_dpi, &h_dpi); - stp_deprintf(STP_DBG_DYESUB, + stp_dprintf(STP_DBG_DYESUB, v, "paper (pt) %f x %f\n" "image (px) %d x %d\n" "image (pt) %f x %f\n" @@ -9134,70 +10014,49 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) w_dpi, h_dpi ); - /* FIXME: move this into print_init_drv */ ink_type = dyesub_describe_output_internal(v, &pv); stp_set_string_parameter(v, "STPIOutputType", ink_type); stp_channel_reset(v); 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.out_channels = stp_color_init(v, image, 256); + stp_set_float_parameter(v, "AppGammaScale", 1.0); /* If there's a mismatch in channels, that is ALWAYS a problem */ if (pv.out_channels != pv.ink_channels) { - stp_deprintf(STP_DBG_DYESUB, + stp_dprintf(STP_DBG_DYESUB, v, "Input and output channel count mismatch! (%d vs %d)\n", pv.out_channels, pv.ink_channels); stp_image_conclude(image); stp_free(pd); return 2; } - 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 (__BYTE_ORDER == __LITTLE_ENDIAN) - pv.byteswap = dyesub_feature(caps, DYESUB_FEATURE_BIGENDIAN); -#elif (__BYTE_ORDER == __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); - if (ink_type) { -#ifndef CANONSELPHYNEO_CMY - if (dyesub_feature(caps, DYESUB_FEATURE_RGBtoYCBCR)) { - pv.empty_byte[0] = 0xff; /* Y */ - pv.empty_byte[1] = 0x80; /* Cb */ - pv.empty_byte[2] = 0x80; /* Cr */ - } else -#endif - if (strcmp(ink_type, "RGB") == 0 || - strcmp(ink_type, "BGR") == 0 || - strcmp(ink_type, "Whitescale") == 0) { - pv.empty_byte[0] = 0xff; - pv.empty_byte[1] = 0xff; - pv.empty_byte[2] = 0xff; - } else { - pv.empty_byte[0] = 0x0; - pv.empty_byte[1] = 0x0; - pv.empty_byte[2] = 0x0; - } - } else { + if (ink_type) + { + if (strcmp(ink_type, "RGB") == 0 || + strcmp(ink_type, "BGR") == 0 || + strcmp(ink_type, "Whitescale") == 0) + { + pv.empty_byte[0] = 0xff; + pv.empty_byte[1] = 0xff; + pv.empty_byte[2] = 0xff; + } + else + { pv.empty_byte[0] = 0x0; pv.empty_byte[1] = 0x0; pv.empty_byte[2] = 0x0; - } + } + } + else + { + pv.empty_byte[0] = 0x0; + pv.empty_byte[1] = 0x0; + pv.empty_byte[2] = 0x0; + } pv.plane_interlacing = dyesub_feature(caps, DYESUB_FEATURE_PLANE_INTERLACE); pv.row_interlacing = dyesub_feature(caps, DYESUB_FEATURE_ROW_INTERLACE); @@ -9209,11 +10068,6 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) stp_free(pd); return 2; } - /* /FIXME */ - - /* FIXME: Provide a way of disabling/altering these curves */ - /* XXX reuse 'UseLUT' from mitsu70x? or 'SimpleGamma' ? */ - dyesub_exec(v, caps->adjust_curves, "caps->adjust_curves"); if (dyesub_feature(caps, DYESUB_FEATURE_FULL_HEIGHT)) { @@ -9258,13 +10112,32 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) dyesub_swap_ints(&pv.imgh_px, &pv.imgw_px); } + /* Adjust margins if the driver asks, to fine-tune horizontal position. */ + pv.outl_px += pd->horiz_offset; + pv.outr_px += pd->horiz_offset; + /* Make sure we're still legal */ + if (pv.outl_px < 0) + pv.outl_px = 0; + if (pv.outr_px > pv.prnw_px) + pv.outr_px = pv.prnw_px; + + /* By this point, we're finally DONE mangling the pv structure, + and can start calling into the bulk of the driver code. */ + /* assign private data *after* swaping image dimensions */ pd->w_dpi = w_dpi; pd->h_dpi = h_dpi; pd->w_size = pv.prnw_px; pd->h_size = pv.prnh_px; pd->print_mode = pv.print_mode; - pd->bpp = pv.bits_per_ink_channel; + + /* FIXME: Provide a way of disabling/altering these curves */ + /* XXX reuse 'UseLUT' from mitsu70x? or 'SimpleGamma' ? */ + dyesub_exec(v, caps->adjust_curves, "caps->adjust_curves"); + + /* Send out job init if we're in page mode */ + if (print_op & OP_JOB_START) + dyesub_exec(v, caps->job_start_func, "caps->job_start"); /* printer init */ dyesub_exec(v, caps->printer_init_func, "caps->printer_init"); @@ -9272,7 +10145,7 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) for (pl = 0; pl < (pv.plane_interlacing ? pv.ink_channels : 1); pl++) { pd->plane = pv.ink_order[pl]; - stp_deprintf(STP_DBG_DYESUB, "dyesub: plane %d\n", pd->plane); + stp_dprintf(STP_DBG_DYESUB, v, "dyesub: plane %d\n", pd->plane); /* plane init */ dyesub_exec(v, caps->plane_init_func, "caps->plane_init"); @@ -9286,6 +10159,10 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) /* printer end */ dyesub_exec(v, caps->printer_end_func, "caps->printer_end"); + /* Job end, if we're in page mode */ + if (print_op & OP_JOB_END) + dyesub_exec(v, caps->job_end_func, "caps->job_end"); + if (pv.image_data) { dyesub_free_image(&pv, image); } @@ -9300,9 +10177,15 @@ static int dyesub_print(const stp_vars_t *v, stp_image_t *image) { int status; + int op = OP_JOB_PRINT; + stp_vars_t *nv = stp_vars_create_copy(v); - stp_prune_inactive_options(nv); - status = dyesub_do_print(nv, image); + + if (!stp_get_string_parameter(v, "JobMode") || + strcmp(stp_get_string_parameter(v, "JobMode"), "Page") == 0) + op = OP_JOB_START | OP_JOB_PRINT | OP_JOB_END; + + status = dyesub_do_print(nv, image, op); stp_vars_destroy(nv); return status; } @@ -9313,8 +10196,7 @@ dyesub_job_start(const stp_vars_t *v, stp_image_t *image) const dyesub_cap_t *caps; stp_vars_t *nv = stp_vars_create_copy(v); - stp_prune_inactive_options(nv); - caps = dyesub_get_model_capabilities(stp_get_model_id(nv)); + caps = dyesub_get_model_capabilities(v, stp_get_model_id(nv)); if (caps->job_start_func) caps->job_start_func(nv); @@ -9329,8 +10211,7 @@ dyesub_job_end(const stp_vars_t *v, stp_image_t *image) const dyesub_cap_t *caps; stp_vars_t *nv = stp_vars_create_copy(v); - stp_prune_inactive_options(nv); - caps = dyesub_get_model_capabilities(stp_get_model_id(nv)); + caps = dyesub_get_model_capabilities(v, stp_get_model_id(nv)); if (caps->job_end_func) caps->job_end_func(nv); @@ -9339,11 +10220,10 @@ dyesub_job_end(const stp_vars_t *v, stp_image_t *image) return 1; } - static int dyesub_verify_printer_params(stp_vars_t *v) { const int model = stp_get_model_id(v); - const dyesub_cap_t *caps = dyesub_get_model_capabilities(model); + const dyesub_cap_t *caps = dyesub_get_model_capabilities(v, model); int result; result = stp_verify_printer_params(v); if (result != 1) @@ -9368,7 +10248,8 @@ static const stp_printfuncs_t print_dyesub_printfuncs = dyesub_verify_printer_params, dyesub_job_start, dyesub_job_end, - NULL + NULL, + dyesub_describe_papersize }; static stp_family_t print_dyesub_module_data = @@ -9380,14 +10261,14 @@ static stp_family_t print_dyesub_module_data = static int print_dyesub_module_init(void) { - return stp_family_register(print_dyesub_module_data.printer_list); + return stpi_family_register(print_dyesub_module_data.printer_list); } static int print_dyesub_module_exit(void) { - return stp_family_unregister(print_dyesub_module_data.printer_list); + return stpi_family_unregister(print_dyesub_module_data.printer_list); } diff --git a/src/main/print-escp2-data.c b/src/main/print-escp2-data.c index 870ec40..267855d 100644 --- a/src/main/print-escp2-data.c +++ b/src/main/print-escp2-data.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H @@ -28,6 +27,7 @@ #include <gutenprint/gutenprint-intl-internal.h> #include "print-escp2.h" #include <limits.h> +#include <sys/param.h> typedef struct { @@ -54,20 +54,33 @@ static stpi_escp2_printer_t *escp2_model_capabilities; static int escp2_model_count = 0; -static void -load_model_from_file(const stp_vars_t *v, stp_mxml_node_t *xmod, int model) +static int +load_model_from_file(const stp_vars_t *v, const char *filename, int depth) { + int model = -1; + stp_mxml_node_t *xmod = + stp_xml_parse_file_from_path_uncached_safe(filename, "escp2Model", NULL); + const char *id = stp_mxmlElementGetAttr(xmod, "id"); stp_mxml_node_t *tmp = xmod->child; - stpi_escp2_printer_t *p = stp_escp2_get_printer(v); - int found_black_head_config = 0; - int found_fast_head_config = 0; - p->max_black_resolution = -1; - p->cd_x_offset = -1; - p->cd_y_offset = -1; - p->duplex_left_margin = SHRT_MIN; - p->duplex_right_margin = SHRT_MIN; - p->duplex_top_margin = SHRT_MIN; - p->duplex_bottom_margin = SHRT_MIN; + stpi_escp2_printer_t *p = stpi_escp2_get_printer(v); + const char *stmp = stp_mxmlElementGetAttr(xmod, "base"); + if (id) + model = stp_xmlstrtol(id); + if (depth == 0) + { + p->max_black_resolution = -1; + p->cd_x_offset = -1; + p->cd_y_offset = -1; + p->duplex_left_margin = SHRT_MIN; + p->duplex_right_margin = SHRT_MIN; + p->duplex_top_margin = SHRT_MIN; + p->duplex_bottom_margin = SHRT_MIN; + } + /* Allow recursive definitions */ + if (stmp) + { + load_model_from_file(v, stmp, depth + 1); + } while (tmp) { if (tmp->type == STP_MXML_ELEMENT) @@ -76,20 +89,21 @@ load_model_from_file(const stp_vars_t *v, stp_mxml_node_t *xmod, int model) const char *target = stp_mxmlElementGetAttr(tmp, "src"); if (target) { + /* FIXME need to allow override of these! */ if (!strcmp(name, "media")) - stp_escp2_load_media(v, target); + stpi_escp2_load_media(v, target); else if (!strcmp(name, "inputSlots")) - stp_escp2_load_input_slots(v, target); + stpi_escp2_load_input_slots(v, target); else if (!strcmp(name, "mediaSizes")) - stp_escp2_load_media_sizes(v, target); + stpi_escp2_load_media_sizes(v, target); else if (!strcmp(name, "printerWeaves")) - stp_escp2_load_printer_weaves(v, target); + stpi_escp2_load_printer_weaves(v, target); else if (!strcmp(name, "qualityPresets")) - stp_escp2_load_quality_presets(v, target); + stpi_escp2_load_quality_presets(v, target); else if (!strcmp(name, "resolutions")) - stp_escp2_load_resolutions(v, target); + stpi_escp2_load_resolutions(v, target, NULL); else if (!strcmp(name, "inkGroup")) - stp_escp2_load_inkgroup(v, target); + stpi_escp2_load_inkgroup(v, target); } else if (tmp->child && tmp->child->type == STP_MXML_TEXT) { @@ -170,14 +184,14 @@ load_model_from_file(const stp_vars_t *v, stp_mxml_node_t *xmod, int model) p->min_nozzles = data[1]; p->nozzle_start = data[2]; p->nozzle_separation = data[3]; - if (!found_black_head_config) + if (p->black_nozzles == 0) { p->black_nozzles = data[0]; p->min_black_nozzles = data[1]; p->black_nozzle_start = data[2]; p->black_nozzle_separation = data[3]; } - if (!found_fast_head_config) + if (p->fast_nozzles == 0) { p->fast_nozzles = data[0]; p->min_fast_nozzles = data[1]; @@ -191,7 +205,6 @@ load_model_from_file(const stp_vars_t *v, stp_mxml_node_t *xmod, int model) p->min_black_nozzles = data[1]; p->black_nozzle_start = data[2]; p->black_nozzle_separation = data[3]; - found_black_head_config = 1; } else if (!strcmp(htype, "fast")) { @@ -199,7 +212,6 @@ load_model_from_file(const stp_vars_t *v, stp_mxml_node_t *xmod, int model) p->min_fast_nozzles = data[1]; p->fast_nozzle_start = data[2]; p->fast_nozzle_separation = data[3]; - found_fast_head_config = 1; } } else if (!strcmp(name, "margins")) @@ -359,7 +371,9 @@ load_model_from_file(const stp_vars_t *v, stp_mxml_node_t *xmod, int model) } } else if (!strcmp(name, "resolutions")) - stp_escp2_load_resolutions_from_xml(v, tmp); + { + stpi_escp2_load_resolutions(v, filename, tmp); + } } else { @@ -378,55 +392,28 @@ load_model_from_file(const stp_vars_t *v, stp_mxml_node_t *xmod, int model) else if (!strcmp(name, "hasInterchangeableInkCartridges")) p->flags |= MODEL_INTERCHANGEABLE_INK_YES; else if (!strcmp(name, "resolutions")) - stp_escp2_load_resolutions_from_xml(v, tmp); + stpi_escp2_load_resolutions(v, filename, tmp); } } tmp = tmp->next; } + stp_xml_free_parsed_file(xmod); + return model; } void -stp_escp2_load_model(const stp_vars_t *v, int model) +stpi_escp2_load_model(const stp_vars_t *v, int model) { - stp_list_t *dirlist = stpi_data_path(); - stp_list_item_t *item; - char buf[1024]; - int found = 0; - + char buf[MAXPATHLEN+1]; stp_xml_init(); - sprintf(buf, "escp2/model/model_%d.xml", model); - item = stp_list_get_start(dirlist); - while (item) - { - const char *dn = (const char *) stp_list_item_get_data(item); - char *fn = stpi_path_merge(dn, buf); - stp_mxml_node_t *doc = stp_mxmlLoadFromFile(NULL, fn, STP_MXML_NO_CALLBACK); - stp_free(fn); - if (doc) - { - stp_mxml_node_t *node = - stp_mxmlFindElement(doc, doc, "escp2Model", NULL, NULL, - STP_MXML_DESCEND); - if (node) - { - const char *stmp = stp_mxmlElementGetAttr(node, "id"); - STPI_ASSERT(stmp && stp_xmlstrtol(stmp) == model, v); - load_model_from_file(v, node, model); - found = 1; - } - stp_mxmlDelete(doc); - if (found) - break; - } - item = stp_list_item_next(item); - } + snprintf(buf, MAXPATHLEN, "escp2/model/model_%d.xml", model); + int model_id_from_file = load_model_from_file(v, buf, 0); stp_xml_exit(); - stp_list_destroy(dirlist); - STPI_ASSERT(found, v); + STPI_ASSERT(model_id_from_file == model, v); } stpi_escp2_printer_t * -stp_escp2_get_printer(const stp_vars_t *v) +stpi_escp2_get_printer(const stp_vars_t *v) { int model = stp_get_model_id(v); STPI_ASSERT(model >= 0, v); @@ -447,24 +434,18 @@ stp_escp2_get_printer(const stp_vars_t *v) } if (!(escp2_model_capabilities[model].active)) { -#ifdef HAVE_LOCALE_H - char *locale = stp_strdup(setlocale(LC_ALL, NULL)); - setlocale(LC_ALL, "C"); -#endif + stp_xml_init(); escp2_model_capabilities[model].active = 1; - stp_escp2_load_model(v, model); -#ifdef HAVE_LOCALE_H - setlocale(LC_ALL, locale); - stp_free(locale); -#endif + stpi_escp2_load_model(v, model); + stp_xml_exit(); } return &(escp2_model_capabilities[model]); } model_featureset_t -stp_escp2_get_cap(const stp_vars_t *v, escp2_model_option_t feature) +stpi_escp2_get_cap(const stp_vars_t *v, escp2_model_option_t feature) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + const stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); model_featureset_t featureset = (((1ul << escp2_printer_attrs[feature].bit_width) - 1ul) << escp2_printer_attrs[feature].bit_shift); @@ -472,10 +453,10 @@ stp_escp2_get_cap(const stp_vars_t *v, escp2_model_option_t feature) } int -stp_escp2_has_cap(const stp_vars_t *v, escp2_model_option_t feature, +stpi_escp2_has_cap(const stp_vars_t *v, escp2_model_option_t feature, model_featureset_t class) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + const stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); model_featureset_t featureset = (((1ul << escp2_printer_attrs[feature].bit_width) - 1ul) << escp2_printer_attrs[feature].bit_shift); diff --git a/src/main/print-escp2.c b/src/main/print-escp2.c index f4e90f1..6fe807a 100644 --- a/src/main/print-escp2.c +++ b/src/main/print-escp2.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -1043,7 +1042,7 @@ escp2_##f(const stp_vars_t *v) \ return stp_get_int_parameter(v, "escp2_" #f); \ else \ { \ - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); \ + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); \ return printdef->f; \ } \ } @@ -1056,7 +1055,7 @@ escp2_##f(const stp_vars_t *v) \ return stp_get_dimension_parameter(v, "escp2_" #f); \ else \ { \ - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); \ + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); \ return (stp_dimension_t) printdef->f; \ } \ } @@ -1069,7 +1068,7 @@ escp2_##f(const stp_vars_t *v) \ return stp_get_raw_parameter(v, "escp2_" #f); \ else \ { \ - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); \ + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); \ return printdef->f; \ } \ } @@ -1082,8 +1081,8 @@ escp2_##f(const stp_vars_t *v, int rollfeed) \ return stp_get_dimension_parameter(v, "escp2_" #f); \ else \ { \ - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); \ - const res_t *res = stp_escp2_find_resolution(v); \ + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); \ + const res_t *res = stpi_escp2_find_resolution(v); \ if (res && res->command) \ { \ if (rollfeed) \ @@ -1172,63 +1171,63 @@ froundto(double value, double numerator, double denominator) static const resolution_list_t * escp2_reslist(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return printdef->resolutions; } static inline const printer_weave_list_t * escp2_printer_weaves(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return printdef->printer_weaves; } static inline const stp_string_list_t * escp2_channel_names(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return (printdef->channel_names); } static inline const inkgroup_t * escp2_inkgroup(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return (printdef->inkgroup); } static inline const quality_list_t * escp2_quality_list(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return printdef->quality_list; } static short escp2_duplex_left_margin(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return printdef->duplex_left_margin; } static short escp2_duplex_right_margin(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return printdef->duplex_right_margin; } static short escp2_duplex_top_margin(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return printdef->duplex_top_margin; } static short escp2_duplex_bottom_margin(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return printdef->duplex_bottom_margin; } @@ -1267,7 +1266,7 @@ escp2_res_param(const stp_vars_t *v, const char *param, const res_t *res) return stp_get_int_parameter(v, param); else { - const res_t *res1 = stp_escp2_find_resolution(v); + const res_t *res1 = stpi_escp2_find_resolution(v); if (res1->v && stp_check_int_parameter(res1->v, param, STP_PARAMETER_ACTIVE)) return stp_get_int_parameter(res1->v, param); @@ -1288,7 +1287,7 @@ escp2_density(const stp_vars_t *v) return stp_get_float_parameter(v, "escp2_density"); else { - const res_t *res1 = stp_escp2_find_resolution(v); + const res_t *res1 = stpi_escp2_find_resolution(v); if (res1->v && stp_check_float_parameter(res1->v, "escp2_density", STP_PARAMETER_ACTIVE)) return stp_get_float_parameter(res1->v, "escp2_density"); @@ -1341,7 +1340,7 @@ escp2_base_res_by_res(const stp_vars_t *v, const res_t *res) static escp2_dropsize_t * escp2_copy_dropsizes(const stp_vars_t *v) { - const res_t *res = stp_escp2_find_resolution(v); + const res_t *res = stpi_escp2_find_resolution(v); escp2_dropsize_t *ndrops; if (!res || !(res->v)) return NULL; @@ -1374,7 +1373,7 @@ escp2_free_dropsizes(escp2_dropsize_t *drops) } const inklist_t * -stp_escp2_inklist(const stp_vars_t *v) +stpi_escp2_inklist(const stp_vars_t *v) { int i; const char *ink_list_name = NULL; @@ -1397,7 +1396,7 @@ stp_escp2_inklist(const stp_vars_t *v) static const shade_t * escp2_shades(const stp_vars_t *v, int channel) { - const inklist_t *inklist = stp_escp2_inklist(v); + const inklist_t *inklist = stpi_escp2_inklist(v); return &(inklist->shades[channel]); } @@ -1406,7 +1405,7 @@ escp2_copy_shades(const stp_vars_t *v, int channel) { int i; shade_t *nshades; - const inklist_t *inklist = stp_escp2_inklist(v); + const inklist_t *inklist = stpi_escp2_inklist(v); if (!inklist) return NULL; nshades = stp_zalloc(sizeof(shade_t)); @@ -1431,24 +1430,24 @@ escp2_free_shades(shade_t *shades) static const stp_string_list_t * escp2_paperlist(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return printdef->papers; } static const stp_string_list_t * escp2_slotlist(const stp_vars_t *v) { - stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + stpi_escp2_printer_t *printdef = stpi_escp2_get_printer(v); return printdef->input_slots; } static int supports_borderless(const stp_vars_t *v) { - return (stp_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_YES) || - stp_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_FULL) || - stp_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_H_ONLY) || - stp_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_RESTR)); + return (stpi_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_YES) || + stpi_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_FULL) || + stpi_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_H_ONLY) || + stpi_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_RESTR)); } static int @@ -1470,7 +1469,7 @@ static const stp_raw_t * get_printer_weave(const stp_vars_t *v) { int i; - const res_t *res = stp_escp2_find_resolution(v); + const res_t *res = stpi_escp2_find_resolution(v); const printer_weave_list_t *p = escp2_printer_weaves(v); if (p) { @@ -1493,7 +1492,7 @@ get_printer_weave(const stp_vars_t *v) static int use_printer_weave(const stp_vars_t *v) { - const res_t *res = stp_escp2_find_resolution(v); + const res_t *res = stpi_escp2_find_resolution(v); return (!res || res->command); } @@ -1502,7 +1501,7 @@ get_resolution_bounds_by_paper_type(const stp_vars_t *v, unsigned *max_x, unsigned *max_y, unsigned *min_x, unsigned *min_y) { - const paper_t *paper = stp_escp2_get_media_type(v, 1); + const paper_t *paper = stpi_escp2_get_media_type(v, 1); *min_x = 0; *min_y = 0; *max_x = 0; @@ -1514,36 +1513,36 @@ get_resolution_bounds_by_paper_type(const stp_vars_t *v, case PAPER_PLAIN: *min_x = 0; *min_y = 0; - *max_x = 1440; - *max_y = 720; + *max_x = escp2_base_separation(v) * 4; + *max_y = escp2_base_separation(v) * 2; break; case PAPER_GOOD: - *min_x = 360; - *min_y = 360; - *max_x = 1440; - *max_y = 1440; + *min_x = escp2_base_separation(v); + *min_y = escp2_base_separation(v); + *max_x = escp2_base_separation(v) * 4; + *max_y = escp2_base_separation(v) * 4; break; case PAPER_PHOTO: - *min_x = 720; - *min_y = 360; + *min_x = escp2_base_separation(v) * 2; + *min_y = escp2_base_separation(v); *max_x = 2880; - *max_y = 1440; + *max_y = escp2_base_separation(v) * 4; if (*min_x >= escp2_max_hres(v)) *min_x = escp2_max_hres(v); break; case PAPER_PREMIUM_PHOTO: - *min_x = 720; - *min_y = 720; + *min_x = escp2_base_separation(v) * 2; + *min_y = escp2_base_separation(v) * 2; *max_x = 0; *max_y = 0; if (*min_x >= escp2_max_hres(v)) *min_x = escp2_max_hres(v); break; case PAPER_TRANSPARENCY: - *min_x = 360; - *min_y = 360; - *max_x = 720; - *max_y = 720; + *min_x = escp2_base_separation(v); + *min_y = escp2_base_separation(v); + *max_x = escp2_base_separation(v) * 2; + *max_y = escp2_base_separation(v) * 2; break; } stp_dprintf(STP_DBG_ESCP2, v, @@ -1651,7 +1650,7 @@ verify_papersize(const stp_vars_t *v, const stp_papersize_t *pt) stp_dimension_t height_limit, width_limit; stp_dimension_t min_height_limit, min_width_limit; unsigned int envelope_landscape = - stp_escp2_has_cap(v, MODEL_ENVELOPE_LANDSCAPE, MODEL_ENVELOPE_LANDSCAPE_YES); + stpi_escp2_has_cap(v, MODEL_ENVELOPE_LANDSCAPE, MODEL_ENVELOPE_LANDSCAPE_YES); width_limit = escp2_max_paper_width(v); height_limit = escp2_max_paper_height(v); min_width_limit = escp2_min_paper_width(v); @@ -1668,7 +1667,7 @@ verify_papersize(const stp_vars_t *v, const stp_papersize_t *pt) (pt->height >= min_height_limit || pt->height == 0) && (pt->width >= min_width_limit || pt->width == 0) && (pt->width == 0 || pt->height > 0 || - stp_escp2_printer_supports_rollfeed(v))) + stpi_escp2_printer_supports_rollfeed(v))) return 1; else return 0; @@ -1686,21 +1685,22 @@ verify_inktype(const stp_vars_t *v, const inkname_t *inks) static const char * get_default_inktype(const stp_vars_t *v) { - const inklist_t *ink_list = stp_escp2_inklist(v); + const inklist_t *ink_list = stpi_escp2_inklist(v); const paper_t *paper_type; if (!ink_list) return NULL; - paper_type = stp_escp2_get_media_type(v, 0); + paper_type = stpi_escp2_get_media_type(v, 0); if (!paper_type) - paper_type = stp_escp2_get_default_media_type(v); + paper_type = stpi_escp2_get_default_media_type(v); if (paper_type && paper_type->preferred_ink_type) return paper_type->preferred_ink_type; - else if (stp_escp2_has_cap(v, MODEL_FAST_360, MODEL_FAST_360_YES) && + else if (stpi_escp2_has_cap(v, MODEL_FAST_360, MODEL_FAST_360_YES) && stp_check_string_parameter(v, "Resolution", STP_PARAMETER_ACTIVE)) { - const res_t *res = stp_escp2_find_resolution(v); + const res_t *res = stpi_escp2_find_resolution(v); if (res) { + /* Hard-coded value for old printers */ if (res->vres == 360 && res->hres == escp2_base_res(v)) { int i; @@ -1718,7 +1718,7 @@ static const inkname_t * get_inktype(const stp_vars_t *v) { const char *ink_type = stp_get_string_parameter(v, "InkType"); - const inklist_t *ink_list = stp_escp2_inklist(v); + const inklist_t *ink_list = stpi_escp2_inklist(v); int i; if (!ink_type || strcmp(ink_type, "None") == 0 || @@ -1789,7 +1789,7 @@ printer_supports_inkset(const stp_vars_t *v, inkset_id_t inkset) static const stp_vars_t * get_media_adjustment(const stp_vars_t *v) { - const paper_t *pt = stp_escp2_get_media_type(v, 0); + const paper_t *pt = stpi_escp2_get_media_type(v, 0); if (pt) return pt->v; else @@ -2208,7 +2208,7 @@ get_raw_inktype(const stp_vars_t *v) { if (strcmp(stp_get_string_parameter(v, "InputImageType"), "Raw") == 0) { - const inklist_t *inks = stp_escp2_inklist(v); + const inklist_t *inks = stpi_escp2_inklist(v); int ninktypes = inks->n_inks; int i; const char *channel_name = stp_get_string_parameter(v, "RawChannels"); @@ -2233,6 +2233,7 @@ escp2_parameters(const stp_vars_t *v, const char *name, { int i; description->p_type = STP_PARAMETER_TYPE_INVALID; + int found = 0; if (name == NULL) return; @@ -2246,31 +2247,39 @@ escp2_parameters(const stp_vars_t *v, const char *name, description->deflt.dbl = float_parameters[i].defval; description->bounds.dbl.upper = float_parameters[i].max; description->bounds.dbl.lower = float_parameters[i].min; + found = 1; break; } - for (i = 0; i < int_parameter_count; i++) - if (strcmp(name, int_parameters[i].param.name) == 0) - { - stp_fill_parameter_settings(description, - &(int_parameters[i].param)); - description->deflt.integer = int_parameters[i].defval; - description->bounds.integer.upper = int_parameters[i].max; - description->bounds.integer.lower = int_parameters[i].min; - break; - } + if (!found) + { + for (i = 0; i < int_parameter_count; i++) + if (strcmp(name, int_parameters[i].param.name) == 0) + { + stp_fill_parameter_settings(description, + &(int_parameters[i].param)); + description->deflt.integer = int_parameters[i].defval; + description->bounds.integer.upper = int_parameters[i].max; + description->bounds.integer.lower = int_parameters[i].min; + found = 1; + break; + } + } - for (i = 0; i < the_parameter_count; i++) - if (strcmp(name, the_parameters[i].name) == 0) - { - stp_fill_parameter_settings(description, &(the_parameters[i])); - if (description->p_type == STP_PARAMETER_TYPE_INT) + if (!found) + { + for (i = 0; i < the_parameter_count; i++) + if (strcmp(name, the_parameters[i].name) == 0) { - description->deflt.integer = 0; - description->bounds.integer.upper = INT_MAX; - description->bounds.integer.lower = INT_MIN; + stp_fill_parameter_settings(description, &(the_parameters[i])); + if (description->p_type == STP_PARAMETER_TYPE_INT) + { + description->deflt.integer = 0; + description->bounds.integer.upper = INT_MAX; + description->bounds.integer.lower = INT_MIN; + } + break; } - break; - } + } if (strcmp(name, "AutoMode") == 0) { @@ -2283,8 +2292,7 @@ escp2_parameters(const stp_vars_t *v, const char *name, } else if (strcmp(name, "PageSize") == 0) { - int papersizes = stp_known_papersizes(); - const input_slot_t *slot = stp_escp2_get_input_slot(v); + const input_slot_t *slot = stpi_escp2_get_input_slot(v); description->bounds.str = stp_string_list_create(); if (slot && slot->is_cd && !stp_get_boolean_parameter(v, "CDAllowOtherMedia")) @@ -2298,12 +2306,17 @@ escp2_parameters(const stp_vars_t *v, const char *name, } else { - for (i = 0; i < papersizes; i++) + const stp_papersize_list_t *paper_sizes = + stpi_get_standard_papersize_list(); + const stp_papersize_list_item_t *ptli = + stpi_papersize_list_get_start(paper_sizes); + while (ptli) { - const stp_papersize_t *pt = stp_get_papersize_by_index(i); + const stp_papersize_t *pt = stpi_paperlist_item_get_data(ptli); if (verify_papersize(v, pt)) stp_string_list_add_string(description->bounds.str, pt->name, gettext(pt->text)); + ptli = stpi_paperlist_item_next(ptli); } } description->deflt.str = @@ -2311,8 +2324,8 @@ escp2_parameters(const stp_vars_t *v, const char *name, } else if (strcmp(name, "CDAllowOtherMedia") == 0) { - const input_slot_t *slot = stp_escp2_get_input_slot(v); - if (stp_escp2_printer_supports_print_to_cd(v) && + const input_slot_t *slot = stpi_escp2_get_input_slot(v); + if (stpi_escp2_printer_supports_print_to_cd(v) && (!slot || slot->is_cd)) description->is_active = 1; else @@ -2320,9 +2333,9 @@ escp2_parameters(const stp_vars_t *v, const char *name, } else if (strcmp(name, "CDInnerRadius") == 0 ) { - const input_slot_t *slot = stp_escp2_get_input_slot(v); + const input_slot_t *slot = stpi_escp2_get_input_slot(v); description->bounds.str = stp_string_list_create(); - if (stp_escp2_printer_supports_print_to_cd(v) && + if (stpi_escp2_printer_supports_print_to_cd(v) && (!slot || slot->is_cd) && (!stp_get_string_parameter(v, "PageSize") || strcmp(stp_get_string_parameter(v, "PageSize"), "CDCustom") != 0)) @@ -2339,11 +2352,11 @@ escp2_parameters(const stp_vars_t *v, const char *name, } else if (strcmp(name, "CDInnerDiameter") == 0 ) { - const input_slot_t *slot = stp_escp2_get_input_slot(v); + const input_slot_t *slot = stpi_escp2_get_input_slot(v); description->bounds.dimension.lower = 16 * 10 * 72 / 254; description->bounds.dimension.upper = 43 * 10 * 72 / 254; description->deflt.dimension = 43 * 10 * 72 / 254; - if (stp_escp2_printer_supports_print_to_cd(v) && + if (stpi_escp2_printer_supports_print_to_cd(v) && (!slot || slot->is_cd) && (!stp_get_string_parameter(v, "PageSize") || strcmp(stp_get_string_parameter(v, "PageSize"), "CDCustom") == 0)) @@ -2353,11 +2366,11 @@ escp2_parameters(const stp_vars_t *v, const char *name, } else if (strcmp(name, "CDOuterDiameter") == 0 ) { - const input_slot_t *slot = stp_escp2_get_input_slot(v); + const input_slot_t *slot = stpi_escp2_get_input_slot(v); description->bounds.dimension.lower = 65 * 10 * 72 / 254; description->bounds.dimension.upper = 120 * 10 * 72 / 254; description->deflt.dimension = 329; - if (stp_escp2_printer_supports_print_to_cd(v) && + if (stpi_escp2_printer_supports_print_to_cd(v) && (!slot || slot->is_cd) && (!stp_get_string_parameter(v, "PageSize") || strcmp(stp_get_string_parameter(v, "PageSize"), "CDCustom") == 0)) @@ -2368,11 +2381,11 @@ escp2_parameters(const stp_vars_t *v, const char *name, else if (strcmp(name, "CDXAdjustment") == 0 || strcmp(name, "CDYAdjustment") == 0) { - const input_slot_t *slot = stp_escp2_get_input_slot(v); + const input_slot_t *slot = stpi_escp2_get_input_slot(v); description->bounds.dimension.lower = -30; description->bounds.dimension.upper = 30; description->deflt.dimension = 0; - if (stp_escp2_printer_supports_print_to_cd(v) && (!slot || slot->is_cd)) + if (stpi_escp2_printer_supports_print_to_cd(v) && (!slot || slot->is_cd)) description->is_active = 1; else description->is_active = 0; @@ -2415,7 +2428,7 @@ escp2_parameters(const stp_vars_t *v, const char *name, } else if (strcmp(name, "InkType") == 0) { - const inklist_t *inks = stp_escp2_inklist(v); + const inklist_t *inks = stpi_escp2_inklist(v); int ninktypes = inks->n_inks; int verified_inktypes = 0; for (i = 0; i < ninktypes; i++) @@ -2510,9 +2523,9 @@ escp2_parameters(const stp_vars_t *v, const char *name, else if (strcmp(name, "Weave") == 0) { description->bounds.str = stp_string_list_create(); - if (stp_escp2_has_cap(v, MODEL_COMMAND, MODEL_COMMAND_PRO)) + if (stpi_escp2_has_cap(v, MODEL_COMMAND, MODEL_COMMAND_PRO)) { - const res_t *res = stp_escp2_find_resolution(v); + const res_t *res = stpi_escp2_find_resolution(v); const printer_weave_list_t *printer_weaves = escp2_printer_weaves(v); int nprinter_weaves = 0; if (printer_weaves && use_printer_weave(v) && (!res || res->command)) @@ -2555,7 +2568,7 @@ escp2_parameters(const stp_vars_t *v, const char *name, } else if (strcmp(name, "FullBleed") == 0) { - const input_slot_t *slot = stp_escp2_get_input_slot(v); + const input_slot_t *slot = stpi_escp2_get_input_slot(v); if (slot && slot->is_cd) description->is_active = 0; else if (supports_borderless(v)) @@ -2565,9 +2578,9 @@ escp2_parameters(const stp_vars_t *v, const char *name, } else if (strcmp(name, "Duplex") == 0) { - if (stp_escp2_printer_supports_duplex(v)) + if (stpi_escp2_printer_supports_duplex(v)) { - const input_slot_t *slot = stp_escp2_get_input_slot(v); + const input_slot_t *slot = stpi_escp2_get_input_slot(v); if (slot && !slot->duplex) description->is_active = 0; else @@ -2622,9 +2635,9 @@ escp2_parameters(const stp_vars_t *v, const char *name, strcmp(name, "DropSize2") == 0 || strcmp(name, "DropSize3") == 0) { - if (stp_escp2_has_cap(v, MODEL_VARIABLE_DOT, MODEL_VARIABLE_YES)) + if (stpi_escp2_has_cap(v, MODEL_VARIABLE_DOT, MODEL_VARIABLE_YES)) { - const res_t *res = stp_escp2_find_resolution(v); + const res_t *res = stpi_escp2_find_resolution(v); if (res && res->v && stp_check_float_parameter(v, name, STP_PARAMETER_ACTIVE)) description->deflt.dbl = stp_get_float_parameter(v, name); @@ -2706,7 +2719,7 @@ escp2_parameters(const stp_vars_t *v, const char *name, else if (strcmp(name, "SupportsInkChange") == 0) { description->deflt.integer = - stp_escp2_has_cap(v, MODEL_SUPPORTS_INK_CHANGE, + stpi_escp2_has_cap(v, MODEL_SUPPORTS_INK_CHANGE, MODEL_SUPPORTS_INK_CHANGE_YES); } else if (strcmp(name, "AlternateAlignmentPasses") == 0) @@ -2736,7 +2749,7 @@ escp2_parameters(const stp_vars_t *v, const char *name, else if (strcmp(name, "SupportsPacketMode") == 0) { description->deflt.boolean = - stp_escp2_has_cap(v, MODEL_PACKET_MODE, MODEL_PACKET_MODE_YES); + stpi_escp2_has_cap(v, MODEL_PACKET_MODE, MODEL_PACKET_MODE_YES); } else if (strcmp(name, "PrintingMode") == 0) { @@ -2750,7 +2763,7 @@ escp2_parameters(const stp_vars_t *v, const char *name, } else if (strcmp(name, "RawChannels") == 0) { - const inklist_t *inks = stp_escp2_inklist(v); + const inklist_t *inks = stpi_escp2_inklist(v); int ninktypes = inks->n_inks; description->bounds.str = stp_string_list_create(); if (ninktypes >= 1) @@ -2826,9 +2839,7 @@ escp2_parameters(const stp_vars_t *v, const char *name, strcmp(name, "PaperMediaSize") == 0 || strcmp(name, "PlatenGap") == 0) { - description->is_active = 0; - if (stp_escp2_has_media_feature(v, name)) - description->is_active = 1; + description->is_active = stpi_escp2_has_media_feature(v, name); } else if (strcmp(name, "BandEnhancement") == 0) { @@ -2837,7 +2848,7 @@ escp2_parameters(const stp_vars_t *v, const char *name, } const res_t * -stp_escp2_find_resolution(const stp_vars_t *v) +stpi_escp2_find_resolution(const stp_vars_t *v) { const char *resolution = stp_get_string_parameter(v, "Resolution"); if (resolution) @@ -2897,7 +2908,7 @@ escp2_media_size(const stp_vars_t *v, /* I */ const char *page_size = stp_get_string_parameter(v, "PageSize"); const stp_papersize_t *papersize = NULL; if (page_size) - papersize = stp_get_papersize_by_name(page_size); + papersize = stp_describe_papersize(v, page_size); if (!papersize) { *width = 1; @@ -2910,10 +2921,10 @@ escp2_media_size(const stp_vars_t *v, /* I */ } if (*width == 0 || *height == 0) { - const input_slot_t *slot = stp_escp2_get_input_slot(v); + const input_slot_t *slot = stpi_escp2_get_input_slot(v); if (slot && slot->is_cd) { - papersize = stp_get_papersize_by_name("CDCustom"); + papersize = stp_describe_papersize(v, "CDCustom"); if (papersize) { if (*width == 0) @@ -2924,11 +2935,13 @@ escp2_media_size(const stp_vars_t *v, /* I */ } else { - int papersizes = stp_known_papersizes(); - int i; - for (i = 0; i < papersizes; i++) + const stp_papersize_list_t *paper_sizes = + stpi_get_standard_papersize_list(); + const stp_papersize_list_item_t *ptli = + stpi_papersize_list_get_start(paper_sizes); + while (ptli) { - papersize = stp_get_papersize_by_index(i); + papersize = stpi_paperlist_item_get_data(ptli); if (verify_papersize(v, papersize)) { if (*width == 0) @@ -2937,9 +2950,11 @@ escp2_media_size(const stp_vars_t *v, /* I */ *height = papersize->height; break; } + ptli = stpi_paperlist_item_next(ptli); } } } + /* FIXME When we support A4/letter */ if (*width == 0) *width = 612; if (*height == 0) @@ -2966,9 +2981,9 @@ internal_imageable_area(const stp_vars_t *v, int use_paper_margins, const input_slot_t *input_slot = NULL; if (media_size) - pt = stp_get_papersize_by_name(media_size); + pt = stp_describe_papersize(v, media_size); - input_slot = stp_escp2_get_input_slot(v); + input_slot = stpi_escp2_get_input_slot(v); if (input_slot) { cd = input_slot->is_cd; @@ -3028,7 +3043,7 @@ internal_imageable_area(const stp_vars_t *v, int use_paper_margins, right_margin = delta; /* positioned correctly */ if (width - right_margin - 3 > width_limit) right_margin = width - width_limit - 3; - if (! stp_escp2_has_cap(v, MODEL_ZEROMARGIN, + if (! stpi_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_H_ONLY)) { top_margin = -7; @@ -3039,7 +3054,7 @@ internal_imageable_area(const stp_vars_t *v, int use_paper_margins, { left_margin = 0; right_margin = 0; - if (! stp_escp2_has_cap(v, MODEL_ZEROMARGIN, + if (! stpi_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_H_ONLY)) { top_margin = 0; @@ -3105,7 +3120,7 @@ escp2_limit(const stp_vars_t *v, /* I */ static void escp2_describe_resolution(const stp_vars_t *v, stp_resolution_t *x, stp_resolution_t *y) { - const res_t *res = stp_escp2_find_resolution(v); + const res_t *res = stpi_escp2_find_resolution(v); if (res && verify_resolution(v, res)) { *x = res->printed_hres; @@ -3156,23 +3171,23 @@ escp2_describe_output(const stp_vars_t *v) static int escp2_has_advanced_command_set(const stp_vars_t *v) { - return (stp_escp2_has_cap(v, MODEL_COMMAND, MODEL_COMMAND_PRO) || - stp_escp2_has_cap(v, MODEL_COMMAND, MODEL_COMMAND_1999) || - stp_escp2_has_cap(v, MODEL_COMMAND, MODEL_COMMAND_2000)); + return (stpi_escp2_has_cap(v, MODEL_COMMAND, MODEL_COMMAND_PRO) || + stpi_escp2_has_cap(v, MODEL_COMMAND, MODEL_COMMAND_1999) || + stpi_escp2_has_cap(v, MODEL_COMMAND, MODEL_COMMAND_2000)); } static int escp2_use_extended_commands(const stp_vars_t *v, int use_softweave) { - return (stp_escp2_has_cap(v, MODEL_COMMAND, MODEL_COMMAND_PRO) || - (stp_escp2_has_cap(v, MODEL_VARIABLE_DOT, MODEL_VARIABLE_YES) && + return (stpi_escp2_has_cap(v, MODEL_COMMAND, MODEL_COMMAND_PRO) || + (stpi_escp2_has_cap(v, MODEL_VARIABLE_DOT, MODEL_VARIABLE_YES) && use_softweave)); } static int set_raw_ink_type(stp_vars_t *v) { - const inklist_t *inks = stp_escp2_inklist(v); + const inklist_t *inks = stpi_escp2_inklist(v); int ninktypes = inks->n_inks; int i; const char *channel_name = stp_get_string_parameter(v, "RawChannels"); @@ -3728,9 +3743,9 @@ setup_basic(stp_vars_t *v) { escp2_privdata_t *pd = get_privdata(v); pd->advanced_command_set = escp2_has_advanced_command_set(v); - pd->command_set = stp_escp2_get_cap(v, MODEL_COMMAND); - pd->variable_dots = stp_escp2_has_cap(v, MODEL_VARIABLE_DOT, MODEL_VARIABLE_YES); - pd->has_graymode = stp_escp2_has_cap(v, MODEL_GRAYMODE, MODEL_GRAYMODE_YES); + pd->command_set = stpi_escp2_get_cap(v, MODEL_COMMAND); + pd->variable_dots = stpi_escp2_has_cap(v, MODEL_VARIABLE_DOT, MODEL_VARIABLE_YES); + pd->has_graymode = stpi_escp2_has_cap(v, MODEL_GRAYMODE, MODEL_GRAYMODE_YES); pd->preinit_sequence = escp2_preinit_sequence(v); pd->preinit_remote_sequence = escp2_preinit_remote_sequence(v); pd->deinit_remote_sequence = escp2_postinit_remote_sequence(v); @@ -3743,11 +3758,11 @@ static void setup_misc(stp_vars_t *v) { escp2_privdata_t *pd = get_privdata(v); - pd->input_slot = stp_escp2_get_input_slot(v); - pd->paper_type = stp_escp2_get_media_type(v, 0); + pd->input_slot = stpi_escp2_get_input_slot(v); + pd->paper_type = stpi_escp2_get_media_type(v, 0); pd->ink_group = escp2_inkgroup(v); pd->media_settings = stp_vars_create_copy(pd->paper_type->v); - stp_escp2_set_media_size(pd->media_settings, v); + stpi_escp2_set_media_size(pd->media_settings, v); if (stp_check_float_parameter(v, "PageDryTime", STP_PARAMETER_ACTIVE)) stp_set_float_parameter(pd->media_settings, "PageDryTime", stp_get_float_parameter(v, "PageDryTime")); @@ -3866,36 +3881,38 @@ lcm(unsigned a, unsigned b) return a * b / gcd(a, b); } +/* XXX -- How do we handle 300 DPI base? */ static int -adjusted_vertical_resolution(const res_t *res) +adjusted_vertical_resolution(const stp_vars_t *v, const res_t *res) { - if (res->vres >= 720) + if (res->vres >= escp2_base_separation(v) * 2) return res->vres; - else if (res->hres >= 720) /* Special case 720x360 */ - return 720; + else if (res->hres >= escp2_base_separation(v) * 2) /* Special case 720x360 */ + return escp2_base_separation(v) * 2; else if (res->vres % 90 == 0) return res->vres; else - return lcm(res->hres, res->vres); + return lcm(res->hres, res->vres); /* E. g. 360x240 => 720 */ } static int -adjusted_horizontal_resolution(const res_t *res) +adjusted_horizontal_resolution(const stp_vars_t *v, const res_t *res) { + /* XXX -- How do we handle 300 DPI base? */ if (res->vres % 90 == 0) return res->hres; else - return lcm(res->hres, res->vres); + return lcm(res->hres, res->vres); /* E. g. 360x240 => 720 */ } static void setup_resolution(stp_vars_t *v) { escp2_privdata_t *pd = get_privdata(v); - const res_t *res = stp_escp2_find_resolution(v); + const res_t *res = stpi_escp2_find_resolution(v); - int vertical = adjusted_vertical_resolution(res); - int horizontal = adjusted_horizontal_resolution(res); + int vertical = adjusted_vertical_resolution(v, res); + int horizontal = adjusted_horizontal_resolution(v, res); pd->res = res; pd->use_extended_commands = @@ -3912,6 +3929,7 @@ setup_resolution(stp_vars_t *v) } else { + /* Hard-coded values for older printers */ pd->unit_scale = 3600; if (pd->res->hres <= 720) pd->micro_units = vertical; @@ -3920,8 +3938,8 @@ setup_resolution(stp_vars_t *v) pd->horizontal_units = vertical; } /* Note hard-coded 1440 -- from Epson manuals */ - if (stp_escp2_has_cap(v, MODEL_COMMAND, MODEL_COMMAND_1999) && - stp_escp2_has_cap(v, MODEL_VARIABLE_DOT, MODEL_VARIABLE_NO)) + if (stpi_escp2_has_cap(v, MODEL_COMMAND, MODEL_COMMAND_1999) && + stpi_escp2_has_cap(v, MODEL_VARIABLE_DOT, MODEL_VARIABLE_NO)) pd->micro_units = 1440; pd->vertical_units = vertical; pd->page_management_units = vertical; @@ -4010,7 +4028,7 @@ setup_head_parameters(stp_vars_t *v) if (stp_check_int_parameter(v, "BandEnhancement", STP_PARAMETER_ACTIVE)) pd->extra_vertical_passes = 1 << stp_get_int_parameter(v, "BandEnhancement"); - if (stp_escp2_has_cap(v, MODEL_FAST_360, MODEL_FAST_360_YES) && + if (stpi_escp2_has_cap(v, MODEL_FAST_360, MODEL_FAST_360_YES) && (pd->inkname->inkset == INKSET_CMYK || pd->physical_channels == 1) && pd->res->hres == pd->physical_xdpi && pd->res->vres == 360) pd->use_fast_360 = 1; @@ -4081,7 +4099,7 @@ static void setup_page(stp_vars_t *v) { escp2_privdata_t *pd = get_privdata(v); - const input_slot_t *input_slot = stp_escp2_get_input_slot(v); + const input_slot_t *input_slot = stpi_escp2_get_input_slot(v); stp_dimension_t extra_left = 0; stp_dimension_t extra_top = 0; stp_dimension_t hub_size = 0; @@ -4116,7 +4134,7 @@ setup_page(stp_vars_t *v) /* Don't use full bleed mode if the paper itself has a margin */ if (pd->page_left > 0 || pd->page_top > 0) stp_set_boolean_parameter(v, "FullBleed", 0); - if (stp_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_FULL) && + if (stpi_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_FULL) && ((!input_slot || !(input_slot->is_cd)))) { pd->page_extra_height = @@ -4127,7 +4145,7 @@ setup_page(stp_vars_t *v) else pd->paper_extra_bottom = escp2_paper_extra_bottom(v); } - else if (stp_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_YES) && + else if (stpi_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_YES) && (stp_get_boolean_parameter(v, "FullBleed")) && ((!input_slot || !(input_slot->is_cd)))) { @@ -4136,14 +4154,14 @@ setup_page(stp_vars_t *v) escp2_zero_margin_offset(v) * pd->page_management_units / escp2_base_separation(v); } - else if (stp_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_RESTR) && + else if (stpi_escp2_has_cap(v, MODEL_ZEROMARGIN, MODEL_ZEROMARGIN_RESTR) && (stp_get_boolean_parameter(v, "FullBleed")) && ((!input_slot || !(input_slot->is_cd)))) { pd->paper_extra_bottom = 0; pd->page_extra_height = 0; } - else if (stp_escp2_printer_supports_duplex(v) && !pd->duplex) + else if (stpi_escp2_printer_supports_duplex(v) && !pd->duplex) { pd->paper_extra_bottom = escp2_paper_extra_bottom(v); pd->page_extra_height = @@ -4456,7 +4474,22 @@ escp2_do_print(stp_vars_t *v, stp_image_t *image, int print_op) int i; escp2_privdata_t *pd; - int page_number = stp_get_int_parameter(v, "PageNumber"); + + if (strcmp(stp_get_string_parameter(v, "PrintingMode"), "BW") == 0 && + (stp_get_string_parameter(v, "InkType") && + (strcmp(stp_get_string_parameter(v, "InkType"), "RGB") == 0 || + strcmp(stp_get_string_parameter(v, "InkType"), "CMY") == 0 || + strcmp(stp_get_string_parameter(v, "InkType"), "CMYRB") == 0 || + strcmp(stp_get_string_parameter(v, "InkType"), "CMYRBG") == 0 || + strcmp(stp_get_string_parameter(v, "InkType"), "CMYRO") == 0 || + strcmp(stp_get_string_parameter(v, "InkType"), "CMYROG") == 0 || + strcmp(stp_get_string_parameter(v, "InkType"), "PhotoCMY") == 0 || + strcmp(stp_get_string_parameter(v, "InkType"), "RGBG") == 0))) + { + stp_eprintf(v, "Warning: Inkset %s not available in BW\n", + stp_get_string_parameter(v, "InkType")); + stp_set_string_parameter(v, "InkType", "CMYK"); + } if (!stp_verify(v)) { @@ -4467,6 +4500,7 @@ escp2_do_print(stp_vars_t *v, stp_image_t *image, int print_op) if (strcmp(stp_get_string_parameter(v, "InputImageType"), "Raw") == 0 && !set_raw_ink_type(v)) return 0; + int page_number = stp_get_int_parameter(v, "PageNumber"); pd = (escp2_privdata_t *) stp_zalloc(sizeof(escp2_privdata_t)); @@ -4475,7 +4509,7 @@ escp2_do_print(stp_vars_t *v, stp_image_t *image, int print_op) pd->last_pass_offset = 0; pd->last_pass = -1; pd->send_zero_pass_advance = - stp_escp2_has_cap(v, MODEL_SEND_ZERO_ADVANCE, MODEL_SEND_ZERO_ADVANCE_YES); + stpi_escp2_has_cap(v, MODEL_SEND_ZERO_ADVANCE, MODEL_SEND_ZERO_ADVANCE_YES); stp_allocate_component_data(v, "Driver", NULL, NULL, pd); pd->inkname = get_inktype(v); @@ -4554,10 +4588,11 @@ escp2_print(const stp_vars_t *v, stp_image_t *image) stp_vars_t *nv = stp_vars_create_copy(v); int op = OP_JOB_PRINT; int status; + if (!stp_get_string_parameter(v, "JobMode") || strcmp(stp_get_string_parameter(v, "JobMode"), "Page") == 0) op = OP_JOB_START | OP_JOB_PRINT | OP_JOB_END; - stp_prune_inactive_options(nv); + status = escp2_do_print(nv, image, op); stp_vars_destroy(nv); return status; @@ -4568,7 +4603,6 @@ escp2_job_start(const stp_vars_t *v, stp_image_t *image) { stp_vars_t *nv = stp_vars_create_copy(v); int status; - stp_prune_inactive_options(nv); status = escp2_do_print(nv, image, OP_JOB_START); stp_vars_destroy(nv); return status; @@ -4579,7 +4613,6 @@ escp2_job_end(const stp_vars_t *v, stp_image_t *image) { stp_vars_t *nv = stp_vars_create_copy(v); int status; - stp_prune_inactive_options(nv); status = escp2_do_print(nv, image, OP_JOB_END); stp_vars_destroy(nv); return status; @@ -4599,7 +4632,8 @@ static const stp_printfuncs_t print_escp2_printfuncs = stp_verify_printer_params, escp2_job_start, escp2_job_end, - NULL + NULL, + stpi_standard_describe_papersize }; static stp_family_t print_escp2_module_data = @@ -4621,14 +4655,14 @@ print_escp2_module_init(void) "</sequence>\n" "</curve>\n" "</gutenprint>"); - return stp_family_register(print_escp2_module_data.printer_list); + return stpi_family_register(print_escp2_module_data.printer_list); } static int print_escp2_module_exit(void) { - return stp_family_unregister(print_escp2_module_data.printer_list); + return stpi_family_unregister(print_escp2_module_data.printer_list); } diff --git a/src/main/print-escp2.h b/src/main/print-escp2.h index 3f4bfa9..9f771e1 100644 --- a/src/main/print-escp2.h +++ b/src/main/print-escp2.h @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifndef GUTENPRINT_INTERNAL_ESCP2_H @@ -457,42 +456,40 @@ typedef struct escp2_printer /* From escp2-channels.c: */ extern const inkname_t *stpi_escp2_get_default_black_inkset(void); -extern int stp_escp2_load_inkgroup(const stp_vars_t *v, const char *name); +extern int stpi_escp2_load_inkgroup(const stp_vars_t *v, const char *name); /* From escp2-papers.c: */ -extern int stp_escp2_load_media(const stp_vars_t *v, const char *name); -extern int stp_escp2_has_media_feature(const stp_vars_t *v, const char *name); -extern const paper_t *stp_escp2_get_default_media_type(const stp_vars_t *v); -extern const paper_t *stp_escp2_get_media_type(const stp_vars_t *v, int ignore_res); -extern int stp_escp2_printer_supports_rollfeed(const stp_vars_t *v); -extern int stp_escp2_printer_supports_print_to_cd(const stp_vars_t *v); -extern int stp_escp2_printer_supports_duplex(const stp_vars_t *v); +extern int stpi_escp2_load_media(const stp_vars_t *v, const char *name); +extern int stpi_escp2_has_media_feature(const stp_vars_t *v, const char *name); +extern const paper_t *stpi_escp2_get_default_media_type(const stp_vars_t *v); +extern const paper_t *stpi_escp2_get_media_type(const stp_vars_t *v, int ignore_res); +extern int stpi_escp2_printer_supports_rollfeed(const stp_vars_t *v); +extern int stpi_escp2_printer_supports_print_to_cd(const stp_vars_t *v); +extern int stpi_escp2_printer_supports_duplex(const stp_vars_t *v); -extern int stp_escp2_load_input_slots(const stp_vars_t *v, const char *name); -extern const input_slot_t *stp_escp2_get_input_slot(const stp_vars_t *v); +extern int stpi_escp2_load_input_slots(const stp_vars_t *v, const char *name); +extern const input_slot_t *stpi_escp2_get_input_slot(const stp_vars_t *v); -extern int stp_escp2_load_media_sizes(const stp_vars_t *v, const char *name); -extern void stp_escp2_set_media_size(stp_vars_t *v, const stp_vars_t *src); +extern int stpi_escp2_load_media_sizes(const stp_vars_t *v, const char *name); +extern void stpi_escp2_set_media_size(stp_vars_t *v, const stp_vars_t *src); /* From escp2-resolutions.c: */ -extern int stp_escp2_load_resolutions(const stp_vars_t *v, const char *name); -extern int stp_escp2_load_resolutions_from_xml(const stp_vars_t *v, stp_mxml_node_t *node); -extern int stp_escp2_load_printer_weaves(const stp_vars_t *v, const char *name); -extern int stp_escp2_load_printer_weaves_from_xml(const stp_vars_t *v, stp_mxml_node_t *node); -extern int stp_escp2_load_quality_presets(const stp_vars_t *v, const char *name); -extern int stp_escp2_load_quality_presets_from_xml(const stp_vars_t *v, stp_mxml_node_t *node); +extern int stpi_escp2_load_resolutions(const stp_vars_t *v, const char *name, + stp_mxml_node_t *node); +extern int stpi_escp2_load_printer_weaves(const stp_vars_t *v, const char *name); +extern int stpi_escp2_load_quality_presets(const stp_vars_t *v, const char *name); /* From print-escp2.c: */ -extern const res_t *stp_escp2_find_resolution(const stp_vars_t *v); -extern const inklist_t *stp_escp2_inklist(const stp_vars_t *v); +extern const res_t *stpi_escp2_find_resolution(const stp_vars_t *v); +extern const inklist_t *stpi_escp2_inklist(const stp_vars_t *v); /* From print-escp2-data.c: */ -extern void stp_escp2_load_model(const stp_vars_t *v, int model); -extern stpi_escp2_printer_t *stp_escp2_get_printer(const stp_vars_t *v); -extern model_featureset_t stp_escp2_get_cap(const stp_vars_t *v, - escp2_model_option_t feature); -extern int stp_escp2_has_cap(const stp_vars_t *v, escp2_model_option_t feature, - model_featureset_t class); +extern void stpi_escp2_load_model(const stp_vars_t *v, int model); +extern stpi_escp2_printer_t *stpi_escp2_get_printer(const stp_vars_t *v); +extern model_featureset_t stpi_escp2_get_cap(const stp_vars_t *v, + escp2_model_option_t feature); +extern int stpi_escp2_has_cap(const stp_vars_t *v, escp2_model_option_t feature, + model_featureset_t class); typedef struct diff --git a/src/main/print-lexmark.c b/src/main/print-lexmark.c index 6c9df76..4672df9 100644 --- a/src/main/print-lexmark.c +++ b/src/main/print-lexmark.c @@ -21,8 +21,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -809,14 +808,14 @@ static int model_to_index(int model) static const lexmark_cap_t * -lexmark_get_model_capabilities(int model) +lexmark_get_model_capabilities(const stp_vars_t *v, int model) { int i = model_to_index(model); if (i != -1) { return &(lexmark_model_capabilities[i]); } - stp_deprintf(STP_DBG_LEXMARK, + stp_dprintf(STP_DBG_LEXMARK, v, "lexmark: model %d not found in capabilities list.\n",model); return &(lexmark_model_capabilities[0]); } @@ -953,7 +952,7 @@ get_media_type(const char *name, const lexmark_cap_t * caps) #pragma GCC diagnostic ignored "-Wunused-function" #pragma GCC diagnostic ignored "-Wpedantic" static inline int -lexmark_source_type(const char *name, const lexmark_cap_t * caps) +lexmark_source_type(const stp_vars_t *v, const char *name, const lexmark_cap_t * caps) { if (name) { @@ -962,7 +961,7 @@ lexmark_source_type(const char *name, const lexmark_cap_t * caps) if (!strcmp(name,"ManualNP")) return 1; } - stp_deprintf(STP_DBG_LEXMARK, + stp_dprintf(STP_DBG_LEXMARK, v, "lexmark: Unknown source type '%s' - reverting to auto\n",name); return 4; @@ -975,7 +974,8 @@ lexmark_source_type(const char *name, const lexmark_cap_t * caps) lexmark_head_offset *******************************/ static const lexmark_lineoff_t * -lexmark_head_offset(int ydpi, /* i */ +lexmark_head_offset(const stp_vars_t *v, + int ydpi, /* i */ const char *ink_type, /* i */ const lexmark_cap_t * caps, /* i */ const lexmark_inkparam_t *ink_parameter, /* i */ @@ -983,7 +983,7 @@ lexmark_head_offset(int ydpi, /* i */ { int i; - 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])); + stp_dprintf(STP_DBG_LEXMARK, v, " 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++) { @@ -1002,7 +1002,7 @@ lexmark_size_type static unsigned char lexmark_size_type(const stp_vars_t *v, const lexmark_cap_t * caps) { - const stp_papersize_t *pp = stp_get_papersize_by_size(stp_get_page_height(v), + const stp_papersize_t *pp = stpi_get_papersize_by_size(v, stp_get_page_height(v), stp_get_page_width(v)); if (pp) { @@ -1043,9 +1043,9 @@ static int lexmark_get_phys_resolution_horizontal(int model) #endif static const lexmark_res_t -*lexmark_get_resolution_para(int model, const char *resolution) +*lexmark_get_resolution_para(const stp_vars_t *v, int model, const char *resolution) { - const lexmark_cap_t * caps= lexmark_get_model_capabilities(model); + const lexmark_cap_t * caps= lexmark_get_model_capabilities(v, model); const lexmark_res_t *res = *(caps->res_parameters); /* get the resolution specific parameters of printer */ @@ -1062,15 +1062,15 @@ static const lexmark_res_t res++; } } - stp_deprintf(STP_DBG_LEXMARK, "lexmark_get_resolution_para: resolution not found (%s)\n", resolution); + stp_dprintf(STP_DBG_LEXMARK, v, "lexmark_get_resolution_para: resolution not found (%s)\n", resolution); return NULL; } static int -lexmark_print_bidirectional(int model, const char *resolution) +lexmark_print_bidirectional(const stp_vars_t *v, int model, const char *resolution) { - const lexmark_res_t *res_para = lexmark_get_resolution_para(model, resolution); + const lexmark_res_t *res_para = lexmark_get_resolution_para(v, model, resolution); return !res_para->unidirectional; } @@ -1099,7 +1099,7 @@ lexmark_describe_resolution(const stp_vars_t *v, { const char *resolution = stp_get_string_parameter(v, "Resolution"); const lexmark_res_t *res = - lexmark_get_resolution_para(stp_get_model_id(v), resolution); + lexmark_get_resolution_para(v, stp_get_model_id(v), resolution); if (res) { @@ -1149,7 +1149,7 @@ lexmark_describe_output(const stp_vars_t *v) { int printing_color = 0; int model = stp_get_model_id(v); - const lexmark_cap_t *caps = lexmark_get_model_capabilities(model); + const lexmark_cap_t *caps = lexmark_get_model_capabilities(v, model); const char *print_mode = stp_get_string_parameter(v, "PrintingMode"); const char *ink_type = stp_get_string_parameter(v, "InkType"); const lexmark_inkparam_t *ink_parameter; @@ -1174,7 +1174,7 @@ lexmark_parameters(const stp_vars_t *v, const char *name, { int i; - const lexmark_cap_t * caps= lexmark_get_model_capabilities(stp_get_model_id(v)); + const lexmark_cap_t * caps= lexmark_get_model_capabilities(v, stp_get_model_id(v)); description->p_type = STP_PARAMETER_TYPE_INVALID; if (name == NULL) @@ -1202,7 +1202,9 @@ lexmark_parameters(const stp_vars_t *v, const char *name, { unsigned int height_limit, width_limit; unsigned int min_height_limit, min_width_limit; - int papersizes = stp_known_papersizes(); + const stp_papersize_list_t *paper_sizes = stpi_get_standard_papersize_list(); + const stp_papersize_list_item_t *ptli = + stpi_papersize_list_get_start(paper_sizes); description->bounds.str = stp_string_list_create(); width_limit = caps->max_paper_width; @@ -1210,23 +1212,25 @@ lexmark_parameters(const stp_vars_t *v, const char *name, min_width_limit = caps->min_paper_width; min_height_limit = caps->min_paper_height; - for (i = 0; i < papersizes; i++) { - const stp_papersize_t *pt = stp_get_papersize_by_index(i); + while (ptli) + { + const stp_papersize_t *pt = stpi_paperlist_item_get_data(ptli); - if (pt->paper_size_type != PAPERSIZE_TYPE_STANDARD && - pt->paper_size_type != PAPERSIZE_TYPE_ENVELOPE) - continue; + if (pt->paper_size_type == PAPERSIZE_TYPE_STANDARD || + pt->paper_size_type == PAPERSIZE_TYPE_ENVELOPE) { - if (strlen(pt->name) > 0 && - pt->width <= width_limit && pt->height <= height_limit && - (pt->height >= min_height_limit || pt->height == 0) && - (pt->width >= min_width_limit || pt->width == 0)) - { - if (stp_string_list_count(description->bounds.str) == 0) - description->deflt.str = pt->name; - stp_string_list_add_string(description->bounds.str, - pt->name, gettext(pt->text)); + if (strlen(pt->name) > 0 && + pt->width <= width_limit && pt->height <= height_limit && + (pt->height >= min_height_limit || pt->height == 0) && + (pt->width >= min_width_limit || pt->width == 0)) + { + if (stp_string_list_count(description->bounds.str) == 0) + description->deflt.str = pt->name; + stp_string_list_add_string(description->bounds.str, + pt->name, gettext(pt->text)); + } } + ptli = stpi_paperlist_item_next(ptli); } } else if (strcmp(name, "Resolution") == 0) @@ -1321,11 +1325,11 @@ internal_imageable_area(const stp_vars_t *v, /* I */ const char *media_size = stp_get_string_parameter(v, "PageSize"); const stp_papersize_t *pt = NULL; const lexmark_cap_t *caps = - lexmark_get_model_capabilities(stp_get_model_id(v)); + lexmark_get_model_capabilities(v, stp_get_model_id(v)); if (media_size && use_paper_margins) - pt = stp_get_papersize_by_name(media_size); + pt = stp_describe_papersize(v, media_size); stp_default_media_size(v, &width, &length); if (pt) @@ -1363,7 +1367,7 @@ lexmark_limit(const stp_vars_t *v, /* I */ stp_dimension_t *min_width, stp_dimension_t *min_height) { - const lexmark_cap_t * caps= lexmark_get_model_capabilities(stp_get_model_id(v)); + const lexmark_cap_t * caps= lexmark_get_model_capabilities(v, stp_get_model_id(v)); *width = caps->max_paper_width; *height = caps->max_paper_height; *min_width = caps->min_paper_width; @@ -1442,7 +1446,7 @@ lexmark_init_printer(const stp_vars_t *v, const lexmark_cap_t * caps, break; default: - stp_erprintf("Unknown printer !! %i\n", caps->model); + stp_eprintf(v, "Unknown printer !! %i\n", caps->model); return 0; } @@ -1657,14 +1661,12 @@ lexmark_do_print(stp_vars_t *v, stp_image_t *image) stp_dimension_t top = stp_get_top(v); stp_dimension_t left = stp_get_left(v); - const lexmark_cap_t * caps= lexmark_get_model_capabilities(model); + const lexmark_cap_t * caps= lexmark_get_model_capabilities(v, model); const lexmark_res_t *res_para_ptr = - lexmark_get_resolution_para(model, resolution); + lexmark_get_resolution_para(v, model, resolution); const paper_t *media = get_media_type(media_type,caps); const lexmark_inkparam_t *ink_parameter; - stp_prune_inactive_options(v); - #ifdef DEBUG dbgfileprn = lex_open_tmp_file(); /* open file with xx */ #endif @@ -1893,7 +1895,7 @@ densityDivisor /= 1.2; /* initialize soft weaving */ privdata.ink_parameter = ink_parameter; - privdata.bidirectional = lexmark_print_bidirectional(model, resolution); + privdata.bidirectional = lexmark_print_bidirectional(v, model, resolution); privdata.outbuf = stp_malloc((((((pass_length/8)*11))+40) * out_width)+2000); privdata.direction = 0; stp_allocate_component_data(v, "Driver", NULL, NULL, &privdata); @@ -1912,7 +1914,7 @@ densityDivisor /= 1.2; ((top * ydpi) / 72)+(((caps->offset_top_border+add_top_offset)*ydpi) /caps->y_raster_res), (page_height * ydpi) / 72, - (const int *) lexmark_head_offset(ydpi, ink_type, caps, ink_parameter, &lineoff_buffer), + (const int *) lexmark_head_offset(v, ydpi, ink_type, caps, ink_parameter, &lineoff_buffer), STP_WEAVE_ZIGZAG, /* weave_strategy */ flush_pass, stp_fill_uncompressed, /* fill_start */ @@ -2182,7 +2184,8 @@ static const stp_printfuncs_t print_lexmark_printfuncs = stp_verify_printer_params, NULL, NULL, - NULL + NULL, + stpi_standard_describe_papersize }; @@ -2195,7 +2198,8 @@ static const stp_printfuncs_t print_lexmark_printfuncs = the pixels of the image could be printed. */ static unsigned char * -lexmark_init_line(int mode, unsigned char *prnBuf, +lexmark_init_line(const stp_vars_t *v, + int mode, unsigned char *prnBuf, int pass_length, int offset, /* offset from left in 1/"x_raster_res" DIP (printer resolution)*/ int width, int direction, @@ -2210,7 +2214,7 @@ lexmark_init_line(int mode, unsigned char *prnBuf, int header_size = 0; - /* stp_erprintf("#### width %d, length %d, pass_length %d\n", width, length, pass_length);*/ + /* stp_eprintf(v, "#### width %d, length %d, pass_length %d\n", width, length, pass_length);*/ /* first, we write the line header */ switch(caps->model) { case m_z52: @@ -2228,7 +2232,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 cartridge \n"); + stp_dprintf(STP_DBG_LEXMARK, v, "set photo/black cartridge \n"); prnBuf[LX_Z52_COLOR_MODE_POS] = LX_Z52_BLACK_PRINT; if (direction) { @@ -2236,7 +2240,7 @@ lexmark_init_line(int mode, unsigned char *prnBuf, offset += ink_parameter->h_direction_offset; } } else { - stp_deprintf(STP_DBG_LEXMARK, "set color cartridge \n"); + stp_dprintf(STP_DBG_LEXMARK, v, "set color cartridge \n"); prnBuf[LX_Z52_COLOR_MODE_POS] = LX_Z52_COLOR_PRINT; if (direction) { @@ -2380,7 +2384,7 @@ lexmark_init_line(int mode, unsigned char *prnBuf, break; case m_lex7500: - stp_erprintf("Lexmark 7500 not supported !\n"); + stp_eprintf(v, "Lexmark 7500 not supported !\n"); return NULL; break; } @@ -2466,7 +2470,7 @@ lexmark_write(const stp_vars_t *v, /* I - Print file or command */ xIter = -1; } - p = lexmark_init_line(mode, prnBuf, pass_length, offset, rwidth, + p = lexmark_init_line(v, mode, prnBuf, pass_length, offset, rwidth, direction, /* direction */ ink_parameter, caps); @@ -2648,7 +2652,7 @@ const stp_vars_t *lex_open_tmp_file() { const stp_vars_t *ofile; char tmpstr[256]; - stp_erprintf(" create file !\n"); + stp_eprintf(v, " create file !\n"); for (i=0, sprintf(tmpstr, "/tmp/xx%d.prn", i), ofile = fopen(tmpstr, "r"); ofile != NULL; i++, sprintf(tmpstr, "/tmp/xx%d.prn", i), ofile = fopen(tmpstr, "r")) { @@ -2657,14 +2661,14 @@ const stp_vars_t *lex_open_tmp_file() { fclose(ofile); } } - stp_erprintf("Create file %s !\n", tmpstr); + stp_eprintf(v, "Create file %s !\n", tmpstr); ofile = fopen(tmpstr, "wb"); STPI_ASSERT(ofile); return ofile; } void lex_tmp_file_deinit(const stp_vars_t *file) { - stp_erprintf("Close file %lx\n", file); + stp_eprintf(v, "Close file %lx\n", file); fclose(file); } @@ -2697,7 +2701,7 @@ flush_pass(stp_vars_t *v, int passno, int vertical_subpass) int prn_mode; int j; /* color counter */ - const lexmark_cap_t * caps= lexmark_get_model_capabilities(model); + const lexmark_cap_t * caps= lexmark_get_model_capabilities(v, model); int paperShift; Lexmark_head_colors head_colors[3]={{0, NULL, 0, 64/2, 64}, {0, NULL, 64/2, 128/2, 64}, @@ -2731,7 +2735,7 @@ flush_pass(stp_vars_t *v, int passno, int vertical_subpass) 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", - j, lineactive[0].v[j], bufs[0].v[j], linecount[0].v[j], + j, lineactive[0].v[j], (void *)bufs[0].v[j], linecount[0].v[j], lineoffs[0].v[j]); /*** do we have to print something with the color cartridge ? ***/ @@ -2900,7 +2904,7 @@ flush_pass(stp_vars_t *v, int passno, int vertical_subpass) linecount[0].v[j] = 0; } - stp_deprintf(STP_DBG_LEXMARK, "lexmark_write finished\n"); + stp_dprintf(STP_DBG_LEXMARK, v, "lexmark_write finished\n"); } @@ -2928,10 +2932,10 @@ static void testprint(testdata *td) fscanf(td->ifile, "%[^{]{%[^\"]\"%d %d %d %d\",", dummy1, dummy2, &(td->x), &(td->y), &(td->cols), &(td->deep)); td->cols -= 1; /* we reduce it by one because fist color will be ignored */ td->input_line = (char *)stp_malloc(td->x+10); - stp_erprintf("<%s> <%s>\n", dummy1, dummy2); - stp_erprintf("%d %d %d %d\n", td->x, td->y, td->cols, td->deep); + stp_eprintf(v, "<%s> <%s>\n", dummy1, dummy2); + stp_eprintf(v, "%d %d %d %d\n", td->x, td->y, td->cols, td->deep); if (td->cols > 16) { - stp_erprintf("too many colors !!\n"); + stp_eprintf(v, "too many colors !!\n"); return; } @@ -2939,7 +2943,7 @@ static void testprint(testdata *td) fscanf(td->ifile, "%[^\"]\"%c c %[^\"]\",", dummy1, dummy2, dummy2); /* jump over first color */ 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]); + stp_eprintf(v, "colchar %d <%c>\n", i, td->colchar[icol]); } @@ -2958,7 +2962,7 @@ static void testprint(testdata *td) linebufs.v[0] = (char *)stp_malloc((td->x+7)/8); /* allocate the color */ } } else { - stp_erprintf("can't open file !\n"); + stp_eprintf(v, "can't open file !\n"); } } @@ -2968,13 +2972,13 @@ static void readtestprintline(testdata *td, lexmark_linebufs_t *linebufs) char dummy1[256]; int icol, ix; - stp_erprintf("start readtestprintline\n"); + stp_eprintf(v, "start readtestprintline\n"); for (icol=0; icol < 7; icol++) { if (linebufs->v[icol] != NULL) { memset(linebufs->v[icol], 0, (td->x+7)/8); /* clean line */ } } - stp_erprintf("1 readtestprintline cols %d\n", td->cols); + stp_eprintf(v, "1 readtestprintline cols %d\n", td->cols); fscanf(td->ifile, "%[^\"]\"%[^\"]\",", dummy1, td->input_line); @@ -2993,7 +2997,7 @@ static void readtestprintline(testdata *td, lexmark_linebufs_t *linebufs) } } } - /* stp_erprintf("pixchar <%s><%s>\n",dummy1, td->input_line);*/ + /* stp_eprintf(v, "pixchar <%s><%s>\n",dummy1, td->input_line);*/ } #endif @@ -3008,14 +3012,14 @@ static stp_family_t print_lexmark_module_data = static int print_lexmark_module_init(void) { - return stp_family_register(print_lexmark_module_data.printer_list); + return stpi_family_register(print_lexmark_module_data.printer_list); } static int print_lexmark_module_exit(void) { - return stp_family_unregister(print_lexmark_module_data.printer_list); + return stpi_family_unregister(print_lexmark_module_data.printer_list); } diff --git a/src/main/print-list.c b/src/main/print-list.c index 8ea2c0f..5a0ea5b 100644 --- a/src/main/print-list.c +++ b/src/main/print-list.c @@ -17,8 +17,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -48,20 +47,20 @@ struct stp_list_item /** The internal representation of an stp_list_t list. */ struct stp_list { - int index_cache; /*!< Cached node index */ struct stp_list_item *start; /*!< Start node */ struct stp_list_item *end; /*!< End node */ struct stp_list_item *index_cache_node; /*!< Cached node (for index) */ - int length; /*!< Number of nodes */ + char *name_cache; /*!< Cached name */ + struct stp_list_item *name_cache_node; /*!< Cached node (for name) */ + char *long_name_cache; /*!< Cached long name */ + struct stp_list_item *long_name_cache_node; /*!< Cached node (for long name) */ stp_node_freefunc freefunc; /*!< Callback to free node data */ stp_node_copyfunc copyfunc; /*!< Callback to copy node */ stp_node_namefunc namefunc; /*!< Callback to get node name */ stp_node_namefunc long_namefunc; /*!< Callback to get node long name */ stp_node_sortfunc sortfunc; /*!< Callback to compare (sort) nodes */ - char *name_cache; /*!< Cached name */ - struct stp_list_item *name_cache_node; /*!< Cached node (for name) */ - char *long_name_cache; /*!< Cached long name */ - struct stp_list_item *long_name_cache_node; /*!< Cached node (for long name) */ + int index_cache; /*!< Cached node index */ + int length; /*!< Number of nodes */ }; /** @@ -252,7 +251,34 @@ stp_list_get_item_by_index(const stp_list_t *list, int idx) if (idx >= list->length) return NULL; - /* see if using the cache is worthwhile */ + /* + * Optimize the most likely cases of looking for the same, next, + * or previou item + * */ + if (ulist->index_cache_node) + { + if (idx == ulist->index_cache) + return ulist->index_cache_node; + else if (idx == ulist->index_cache + 1) + { + ulist->index_cache = idx; + ulist->index_cache_node = ulist->index_cache_node->next; + return ulist->index_cache_node; + } + else if (idx == ulist->index_cache - 1) + { + ulist->index_cache = idx; + ulist->index_cache_node = ulist->index_cache_node->prev; + return ulist->index_cache_node; + } + } + /* + * See if using the cache is worthwhile. If the desired index is closer + * to the cached index than it is to the start or end, it will be faster + * to start from the cached element. + * + * Otherwise, decide which direction is best to start from. + */ if (list->index_cache) { if (idx < (list->length/2)) @@ -272,8 +298,8 @@ stp_list_get_item_by_index(const stp_list_t *list, int idx) } } - - if (c) /* use the cached index and node */ + /* use the cached index and node */ + if (c) { if (idx > list->index_cache) /* forward */ d = 0; @@ -585,28 +611,6 @@ stp_list_item_create(stp_list_t *list, lnn = lnn->prev; } } -#if 0 - /* - * This code #ifdef'ed out by Robert Krawitz on April 3, 2004. - * Setting a debug variable should not result in taking a materially - * different code path. - */ - else if (stpi_get_debug_level() & STPI_DBG_LIST) - { - if (next) - { - lnn = list->start; - while (lnn) - { - if (lnn == next) - break; - lnn = lnn->prev; - } - } - else - lnn = NULL; - } -#endif else lnn = next; @@ -675,14 +679,14 @@ stp_list_item_destroy(stp_list_t *list, stp_list_item_t *item) return 0; } -/* get previous node */ +/* get previous node, but don't update the cache */ stp_list_item_t * stp_list_item_prev(const stp_list_item_t *item) { return item->prev; } -/* get next node */ +/* get next node, but don't update the cache */ stp_list_item_t * stp_list_item_next(const stp_list_item_t *item) { diff --git a/src/main/print-papers.c b/src/main/print-papers.c index b5fb1e7..c457295 100644 --- a/src/main/print-papers.c +++ b/src/main/print-papers.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -37,109 +36,129 @@ #endif #include <string.h> #include <stdlib.h> +#include <sys/param.h> -static stp_list_t *paper_list = NULL; +typedef struct +{ + char *name; + stp_papersize_list_t *list; +} papersize_list_impl_t; + +static stp_list_t *list_of_papersize_lists = NULL; static void -stpi_paper_freefunc(void *item) +papersize_list_impl_freefunc(void *item) +{ + papersize_list_impl_t *papersize_list = (papersize_list_impl_t *) item; + stp_list_destroy(papersize_list->list); + STP_SAFE_FREE(papersize_list->name); + STP_SAFE_FREE(papersize_list); +} + +static const char * +papersize_list_impl_namefunc(const void *item) +{ + return ((const papersize_list_impl_t *) item)->name; +} + +static const char * +papersize_list_impl_long_namefunc(const void *item) +{ + return ((const papersize_list_impl_t *) item)->name; +} + +static void +check_list_of_papersize_lists(void) +{ + if (! list_of_papersize_lists) + { + stp_deprintf(STP_DBG_PAPER, "Initializing...\n"); + list_of_papersize_lists = stp_list_create(); + stp_list_set_freefunc(list_of_papersize_lists, papersize_list_impl_freefunc); + stp_list_set_namefunc(list_of_papersize_lists, papersize_list_impl_namefunc); + stp_list_set_long_namefunc(list_of_papersize_lists, papersize_list_impl_long_namefunc); + } +} + +static void +stpi_papersize_freefunc(void *item) { stp_papersize_t *paper = (stp_papersize_t *) (item); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-qual" STP_SAFE_FREE(paper->name); STP_SAFE_FREE(paper->text); STP_SAFE_FREE(paper->comment); +#pragma GCC diagnostic pop STP_SAFE_FREE(paper); } static const char * -stpi_paper_namefunc(const void *item) +stpi_papersize_namefunc(const void *item) { const stp_papersize_t *paper = (const stp_papersize_t *) (item); return paper->name; } static const char * -stpi_paper_long_namefunc(const void *item) +stpi_papersize_long_namefunc(const void *item) { const stp_papersize_t *paper = (const stp_papersize_t *) (item); return paper->text; } -static int -stpi_paper_list_init(void) -{ - if (paper_list) - stp_list_destroy(paper_list); - paper_list = stp_list_create(); - stp_list_set_freefunc(paper_list, stpi_paper_freefunc); - stp_list_set_namefunc(paper_list, stpi_paper_namefunc); - stp_list_set_long_namefunc(paper_list, stpi_paper_long_namefunc); - /* stp_list_set_sortfunc(stpi_paper_sortfunc); */ - - return 0; -} - -static inline void -check_paperlist(void) +stp_papersize_list_t * +stpi_create_papersize_list(void) { - if (paper_list == NULL) - { - stp_xml_parse_file_named("papers.xml"); - if (paper_list == NULL) - { - stp_erprintf("No papers found: is STP_MODULE_PATH correct?\n"); - stpi_paper_list_init(); - } - } + stp_list_t *papersize_list = stp_list_create(); + stp_list_set_freefunc(papersize_list, stpi_papersize_freefunc); + stp_list_set_namefunc(papersize_list, stpi_papersize_namefunc); + stp_list_set_long_namefunc(papersize_list, stpi_papersize_long_namefunc); + return (stp_papersize_list_t *) papersize_list; } -static int -stpi_paper_create(stp_papersize_t *p) +int +stpi_papersize_create(stp_papersize_list_t *list, stp_papersize_t *p) { - stp_list_item_t *paper_item; - - if (paper_list == NULL) - { - stpi_paper_list_init(); - stp_deprintf(STP_DBG_PAPER, - "stpi_paper_create(): initialising paper_list...\n"); - } - - /* Check the paper does not already exist */ - paper_item = stp_list_get_start(paper_list); - while (paper_item) + stp_list_item_t *papersize_item; + + /* + * Check the paper does not already exist + * Not the most efficient way of doing it, but the number of papers + * is not large enough to be a significant bottleneck. + */ + papersize_item = stp_list_get_start(list); + while (papersize_item) { const stp_papersize_t *ep = - (const stp_papersize_t *) stp_list_item_get_data(paper_item); + (const stp_papersize_t *) stp_list_item_get_data(papersize_item); if (ep && !strcmp(p->name, ep->name)) { - stp_erprintf("Duplicate paper size `%s'\n", - p->name); - stpi_paper_freefunc(p); + stp_erprintf("Duplicate paper size `%s'\n", p->name); + stpi_papersize_freefunc(p); return 1; } - paper_item = stp_list_item_next(paper_item); + papersize_item = stp_list_item_next(papersize_item); } /* Add paper to list */ - stp_list_item_create(paper_list, NULL, (void *) p); + stp_list_item_create(list, NULL, (void *) p); return 0; } int -stp_known_papersizes(void) +stpi_papersize_count(const stp_papersize_list_t *paper_size_list) { - check_paperlist(); - return stp_list_get_length(paper_list); + return stp_list_get_length(paper_size_list); } const stp_papersize_t * -stp_get_papersize_by_name(const char *name) +stpi_get_papersize_by_name(const stp_papersize_list_t *list, const char *name) { stp_list_item_t *paper; - check_paperlist(); - paper = stp_list_get_item_by_name(paper_list, name); + paper = stp_list_get_item_by_name(list, name); if (!paper) return NULL; else @@ -147,37 +166,52 @@ stp_get_papersize_by_name(const char *name) } const stp_papersize_t * -stp_get_papersize_by_index(int idx) +stpi_get_listed_papersize(const char *name, const char *papersize_list) { - stp_list_item_t *paper; - - check_paperlist(); - paper = stp_list_get_item_by_index(paper_list, idx); - if (!paper) - return NULL; + const stp_papersize_list_t *list = + stpi_get_papersize_list_named(papersize_list, ""); + if (list) + return stpi_get_papersize_by_name(list, name); else - return (const stp_papersize_t *) stp_list_item_get_data(paper); + return NULL; +} + +const stp_papersize_t * +stpi_standard_describe_papersize(const stp_vars_t *v, const char *name) +{ + STPI_ASSERT(v, NULL); + return stpi_get_listed_papersize(name, "standard"); +} + +const stp_papersize_t * +stp_describe_papersize(const stp_vars_t *v, const char *name) +{ + return stpi_printer_describe_papersize(v, name); } static int -paper_size_mismatch(stp_dimension_t l, stp_dimension_t w, const stp_papersize_t *val) +papersize_size_mismatch(stp_dimension_t l, stp_dimension_t w, + const stp_papersize_t *val) { - stp_dimension_t hdiff = abs(l - (stp_dimension_t) val->height); - stp_dimension_t vdiff = abs(w - (stp_dimension_t) val->width); + stp_dimension_t hdiff = STP_DABS(l - (stp_dimension_t) val->height); + stp_dimension_t vdiff = STP_DABS(w - (stp_dimension_t) val->width); return hdiff > vdiff ? hdiff : vdiff; } -const stp_papersize_t * -stp_get_papersize_by_size(stp_dimension_t l, stp_dimension_t w) +static const stp_papersize_t * +get_papersize_by_size_internal(const stp_papersize_list_t *list, + stp_dimension_t l, stp_dimension_t w, + int exact) { int score = INT_MAX; const stp_papersize_t *ref = NULL; const stp_papersize_t *val = NULL; - int i; - int sizes = stp_known_papersizes(); - for (i = 0; i < sizes; i++) + const stp_papersize_list_item_t *ptli = + stpi_papersize_list_get_start(list); + STPI_ASSERT(list, NULL); + while (ptli) { - val = stp_get_papersize_by_index(i); + val = stpi_paperlist_item_get_data(ptli); if (val->width == w && val->height == l) { @@ -187,40 +221,32 @@ stp_get_papersize_by_size(stp_dimension_t l, stp_dimension_t w) else ref = val; } - else + else if (!exact) { - int myscore = paper_size_mismatch(l, w, val); + int myscore = papersize_size_mismatch(l, w, val); if (myscore < score && myscore < 5) { ref = val; score = myscore; } } + ptli = stpi_paperlist_item_next(ptli); } return ref; } const stp_papersize_t * -stp_get_papersize_by_size_exact(stp_dimension_t l, stp_dimension_t w) +stpi_get_papersize_by_size(const stp_papersize_list_t *list, + stp_dimension_t l, stp_dimension_t w) { - const stp_papersize_t *ref = NULL; - const stp_papersize_t *val = NULL; - int i; - int sizes = stp_known_papersizes(); - for (i = 0; i < sizes; i++) - { - val = stp_get_papersize_by_index(i); + return get_papersize_by_size_internal(list, l, w, 0); +} - if (val->width == w && val->height == l) - { - if (val->top == 0 && val->left == 0 && - val->bottom == 0 && val->right == 0) - return val; - else - ref = val; - } - } - return ref; +const stp_papersize_t * +stpi_get_papersize_by_size_exact(const stp_papersize_list_t *list, + stp_dimension_t l, stp_dimension_t w) +{ + return get_papersize_by_size_internal(list, l, w, 1); } void @@ -238,7 +264,7 @@ stp_default_media_size(const stp_vars_t *v, /* I */ const char *page_size = stp_get_string_parameter(v, "PageSize"); const stp_papersize_t *papersize = NULL; if (page_size) - papersize = stp_get_papersize_by_name(page_size); + papersize = stp_describe_papersize(v, page_size); if (!papersize) { *width = 1; @@ -262,8 +288,8 @@ stp_default_media_size(const stp_vars_t *v, /* I */ static stp_papersize_t * stp_xml_process_paper(stp_mxml_node_t *paper) /* The paper node */ { - stp_mxml_node_t *prop; /* Temporary node pointer */ - const char *stmp; /* Temporary string */ + stp_mxml_node_t *prop; /* Temporary node pointer */ + const char *stmp; /* Temporary string */ /* props[] (unused) is the correct tag sequence */ /* const char *props[] = { @@ -385,8 +411,6 @@ stp_xml_process_paper(stp_mxml_node_t *paper) /* The paper node */ { if (!strcmp(stmp, "envelope")) outpaper->paper_size_type = PAPERSIZE_TYPE_ENVELOPE; - else if (!strcmp(stmp, "special")) - outpaper->paper_size_type = PAPERSIZE_TYPE_SPECIAL; else outpaper->paper_size_type = PAPERSIZE_TYPE_STANDARD; } @@ -405,7 +429,8 @@ stp_xml_process_paper(stp_mxml_node_t *paper) /* The paper node */ * Parse the <paperdef> node. */ static int -stp_xml_process_paperdef(stp_mxml_node_t *paperdef, const char *file) /* The paperdef node */ +stp_xml_process_papersize_def(stp_mxml_node_t *paperdef, const char *file, + stp_papersize_list_t *papersize_list) { stp_mxml_node_t *paper; /* paper node pointer */ stp_papersize_t *outpaper; /* Generated paper */ @@ -415,12 +440,12 @@ stp_xml_process_paperdef(stp_mxml_node_t *paperdef, const char *file) /* The pap { if (paper->type == STP_MXML_ELEMENT) { - const char *paper_name = paper->value.element.name; - if (!strcmp(paper_name, "paper")) + const char *papersize_name = paper->value.element.name; + if (!strcmp(papersize_name, "paper")) { outpaper = stp_xml_process_paper(paper); if (outpaper) - stpi_paper_create(outpaper); + stpi_papersize_create(papersize_list, outpaper); } } paper = paper->next; @@ -428,8 +453,79 @@ stp_xml_process_paperdef(stp_mxml_node_t *paperdef, const char *file) /* The pap return 1; } -void -stpi_init_paper(void) +const stp_papersize_list_t * +stpi_get_papersize_list_named(const char *name, const char *file) +{ + stp_list_item_t *item; + papersize_list_impl_t *impl; + + check_list_of_papersize_lists(); + item = stp_list_get_item_by_name(list_of_papersize_lists, name); + if (item) + { + impl = (papersize_list_impl_t *) stp_list_item_get_data(item); + } + else + { + char buf[MAXPATHLEN+1]; + stp_deprintf(STP_DBG_PAPER, "Loading paper list %s from %s\n", + name, file ? file : "(null)"); + if (! file) + return NULL; + else if (!strcmp(file, "")) + (void) snprintf(buf, MAXPATHLEN, "papers/%s.xml", name); + else + strncpy(buf, file, MAXPATHLEN); + stp_mxml_node_t *node = + stp_xml_parse_file_from_path_safe(buf, "paperdef", NULL); + const char *stmp = stp_mxmlElementGetAttr(node, "name"); + STPI_ASSERT(stmp && !strcmp(name, stmp), NULL); + impl = stp_malloc(sizeof(papersize_list_impl_t)); + impl->name = stp_strdup(name); + impl->list = stpi_create_papersize_list(); + stp_deprintf(STP_DBG_PAPER, " Loading %s\n", stmp); + stp_list_item_create(list_of_papersize_lists, NULL, impl); + stp_xml_process_papersize_def(node, buf, impl->list); + } + return impl->list; +} + +stp_papersize_list_t * +stpi_find_papersize_list_named(const char *name) +{ + stp_list_item_t *item; + + check_list_of_papersize_lists(); + item = stp_list_get_item_by_name(list_of_papersize_lists, name); + if (item) + { + papersize_list_impl_t *impl = + (papersize_list_impl_t *) stp_list_item_get_data(item); + if (impl) + return impl->list; + } + return NULL; +} + +stp_papersize_list_t * +stpi_new_papersize_list(const char *name) +{ + stp_list_item_t *item; + papersize_list_impl_t *impl; + + check_list_of_papersize_lists(); + item = stp_list_get_item_by_name(list_of_papersize_lists, name); + if (item) + return NULL; + impl = stp_malloc(sizeof(papersize_list_impl_t)); + impl->name = stp_strdup(name); + impl->list = stpi_create_papersize_list(); + stp_list_item_create(list_of_papersize_lists, NULL, impl); + return impl->list; +} + +const stp_papersize_list_t * +stpi_get_standard_papersize_list(void) { - stp_register_xml_parser("paperdef", stp_xml_process_paperdef); + return stpi_get_papersize_list_named("standard", ""); } diff --git a/src/main/print-pcl.c b/src/main/print-pcl.c index 8752e58..9ae9b72 100644 --- a/src/main/print-pcl.c +++ b/src/main/print-pcl.c @@ -17,8 +17,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -38,6 +37,12 @@ /* #define DEBUG */ /* #define PCL_DEBUG_DISABLE_BLANKLINE_REMOVAL */ +#ifdef __GNUC__ +#define UNUSED __attribute__ ((unused)) +#else +#define UNUSED +#endif + /* * Local functions... */ @@ -52,6 +57,7 @@ typedef struct { int do_blank; int blank_lines; + unsigned char *row_buf; /* For color laser */ unsigned char *comp_buf; void (*writefunc)(stp_vars_t *, unsigned char *, int, int); /* PCL output function */ int do_cret; @@ -59,6 +65,7 @@ typedef struct int do_6color; int height; int duplex; + int copies; int tumble; int use_crd; int orientation; @@ -66,6 +73,7 @@ typedef struct unsigned int h_offset; /* decipoints */ unsigned int v_offset; /* decipoints */ int darkness; + int nodither; } pcl_privdata_t; /* @@ -324,6 +332,7 @@ typedef struct { #define PCL_COLOR_CMYK4 4 /* CRet printing */ #define PCL_COLOR_CMYKcm 8 /* CMY + Photo Cart */ #define PCL_COLOR_CMYK4b 16 /* CRet for HP840c */ +#define PCL_COLOR_RGB 32 /* RGB for color lasers */ #define PCL_PRINTER_LJ 1 #define PCL_PRINTER_DJ 2 @@ -335,6 +344,8 @@ typedef struct { #define PCL_PRINTER_BLANKLINE 64 /* Blank line removal supported */ #define PCL_PRINTER_DUPLEX 128 /* Printer can have duplexer */ #define PCL_PRINTER_LABEL 256 /* Datamax-O'Neil PCL Label Printer */ +#define PCL_PRINTER_LJ_COLOR 512 /* Color laser printers */ +#define PCL_PRINTER_COPIES 1024 /* Supports PCL5/HPGL2/HP-RTL copies */ /* * FIXME - the 520 shouldn't be lumped in with the 500 as it supports @@ -711,7 +722,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {0, 0, 0, 0}, /* A4 Margins */ PCL_COLOR_NONE, PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_LABEL | - PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE, + PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_COPIES, custom_papersizes, emptylist, emptylist, @@ -725,7 +736,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {0, 0, 0, 0}, /* A4 Margins */ PCL_COLOR_NONE, PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_LABEL | - PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE, + PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_COPIES, custom_papersizes, emptylist, emptylist, @@ -739,7 +750,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {0, 0, 0, 0}, /* A4 Margins */ PCL_COLOR_NONE, PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_LABEL | - PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE, + PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_COPIES, custom_papersizes, emptylist, emptylist, @@ -753,7 +764,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {0, 0, 0, 0}, /* A4 Margins */ PCL_COLOR_NONE, PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_LABEL | - PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE, + PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_COPIES, custom_papersizes, emptylist, emptylist, @@ -767,7 +778,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {0, 0, 0, 0}, /* A4 Margins */ PCL_COLOR_NONE, PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_LABEL | - PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE, + PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_COPIES, custom_papersizes, emptylist, emptylist, @@ -781,7 +792,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {0, 0, 0, 0}, /* A4 Margins */ PCL_COLOR_NONE, PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_LABEL | - PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE, + PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_COPIES, custom_papersizes, emptylist, emptylist, @@ -795,7 +806,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {0, 0, 0, 0}, /* A4 Margins */ PCL_COLOR_NONE, PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_LABEL | - PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE, + PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_COPIES, custom_papersizes, emptylist, emptylist, @@ -808,7 +819,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {49, 49, 15, 15}, {49, 49, 15, 15}, PCL_COLOR_NONE, - PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_NEW_ERG, + PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_NEW_ERG | PCL_PRINTER_COPIES, letter_a4_papersizes, basic_papertypes, standard_papersources, @@ -822,7 +833,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {49, 49, 15, 15}, {49, 49, 15, 15}, PCL_COLOR_CMYK, - PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_NEW_ERG, + PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_NEW_ERG | PCL_PRINTER_COPIES, letter_a4_papersizes, basic_papertypes, standard_papersources, @@ -835,7 +846,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {30, 30, 15, 15}, /* These margins are for sheet mode FIX */ {30, 30, 15, 15}, PCL_COLOR_NONE, - PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_NEW_ERG, + PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_NEW_ERG | PCL_PRINTER_COPIES, letter_a4_papersizes, basic_papertypes, standard_papersources, @@ -848,7 +859,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {30, 30, 15, 15}, /* These margins are for roll mode FIX */ {30, 30, 15, 15}, PCL_COLOR_CMYK, - PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_NEW_ERG, + PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_NEW_ERG | PCL_PRINTER_COPIES, letter_a4_papersizes, basic_papertypes, standard_papersources, @@ -861,7 +872,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {49, 49, 15, 15}, /* Check/Fix */ {49, 49, 15, 15}, PCL_COLOR_CMYK, - PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_NEW_ERG, + PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_NEW_ERG | PCL_PRINTER_COPIES, letter_a4_papersizes, basic_papertypes, standard_papersources, @@ -874,7 +885,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {49, 49, 15, 15}, /* Check/Fix */ {49, 49, 15, 15}, PCL_COLOR_CMYK, - PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_NEW_ERG, + PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_NEW_ERG | PCL_PRINTER_COPIES, letter_a4_papersizes, basic_papertypes, standard_papersources, @@ -1081,7 +1092,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 10, 10}, /* Check/Fix */ PCL_COLOR_CMY, PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_MEDIATYPE | - PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE, + PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE | PCL_PRINTER_COPIES, dj1200_papersizes, basic_papertypes, dj_papersources, @@ -1095,7 +1106,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 10, 10}, /* Check/Fix */ PCL_COLOR_CMYK, PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_MEDIATYPE | - PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE, + PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE | PCL_PRINTER_COPIES, dj1200_papersizes, basic_papertypes, dj_papersources, @@ -1201,7 +1212,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 18, 18}, {12, 12, 10, 10}, /* Check/Fix */ PCL_COLOR_NONE, - PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE, + PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_COPIES, ljsmall_papersizes, emptylist, laserjet_papersources, @@ -1214,7 +1225,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 18, 18}, {12, 12, 10, 10}, /* Check/Fix */ PCL_COLOR_NONE, - PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE, + PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_COPIES, ljsmall_papersizes, emptylist, laserjet_papersources, @@ -1227,7 +1238,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 18, 18}, {12, 12, 18, 18}, /* Check/Fix */ PCL_COLOR_NONE, - PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE, + PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_COPIES, ljsmall_papersizes, emptylist, laserjet_papersources, @@ -1240,7 +1251,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 18, 18}, {12, 12, 10, 10}, /* Check/Fix */ PCL_COLOR_NONE, - PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE, + PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_COPIES, ljbig_papersizes, emptylist, laserjet_papersources, @@ -1253,7 +1264,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 18, 18}, {12, 12, 18, 18}, /* Check/Fix */ PCL_COLOR_NONE, - PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE, + PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_COPIES, ljbig_papersizes, emptylist, laserjet_papersources, @@ -1266,7 +1277,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 18, 18}, {12, 12, 18, 18}, /* Check/Fix */ PCL_COLOR_NONE, - PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE, + PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_COPIES, ljtabloid_papersizes, emptylist, laserjet_papersources, @@ -1279,7 +1290,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 18, 18}, {12, 12, 10, 10}, /* Check/Fix */ PCL_COLOR_NONE, - PCL_PRINTER_LJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE, + PCL_PRINTER_LJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_COPIES, ljsmall_papersizes, emptylist, laserjet_papersources, @@ -1292,7 +1303,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 18, 18}, {12, 12, 10, 10}, /* Check/Fix */ PCL_COLOR_NONE, - PCL_PRINTER_LJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE, + PCL_PRINTER_LJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_COPIES, ljbig_papersizes, emptylist, laserjet_papersources, @@ -1306,7 +1317,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 10, 10}, /* Check/Fix */ PCL_COLOR_NONE, PCL_PRINTER_LJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | - PCL_PRINTER_DUPLEX, + PCL_PRINTER_DUPLEX | PCL_PRINTER_COPIES, ljbig_papersizes, emptylist, laserjet_papersources, @@ -1320,7 +1331,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 10, 10}, /* Check/Fix */ PCL_COLOR_NONE, PCL_PRINTER_LJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | - PCL_PRINTER_DUPLEX, + PCL_PRINTER_DUPLEX | PCL_PRINTER_COPIES, ljsmall_papersizes, emptylist, laserjet_papersources, @@ -1334,7 +1345,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 10, 10}, /* Check/Fix */ PCL_COLOR_NONE, PCL_PRINTER_LJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | - PCL_PRINTER_DUPLEX, + PCL_PRINTER_DUPLEX | PCL_PRINTER_COPIES, ljbig_papersizes, emptylist, laserjet_papersources, @@ -1348,7 +1359,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 18, 18}, /* Check/Fix */ PCL_COLOR_NONE, PCL_PRINTER_LJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | - PCL_PRINTER_DUPLEX, + PCL_PRINTER_DUPLEX | PCL_PRINTER_COPIES, ljsmall_papersizes, emptylist, laserjet_papersources, @@ -1362,7 +1373,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 18, 18}, /* Check/Fix */ PCL_COLOR_NONE, PCL_PRINTER_LJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | - PCL_PRINTER_DUPLEX, + PCL_PRINTER_DUPLEX | PCL_PRINTER_COPIES, ljbig_papersizes, emptylist, laserjet_papersources, @@ -1376,7 +1387,7 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 18, 18}, /* Check/Fix */ PCL_COLOR_NONE, PCL_PRINTER_LJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | - PCL_PRINTER_DUPLEX, + PCL_PRINTER_DUPLEX | PCL_PRINTER_COPIES, ljtabloid_papersizes, emptylist, laserjet_papersources, @@ -1390,17 +1401,98 @@ static const pcl_cap_t pcl_model_capabilities[] = {12, 12, 10, 10}, /* Check/Fix */ PCL_COLOR_NONE, PCL_PRINTER_LJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | - PCL_PRINTER_DUPLEX, + PCL_PRINTER_DUPLEX | PCL_PRINTER_COPIES, + ljbig_papersizes, + emptylist, + laserjet_papersources, + }, + /* Color laser printer, small format */ + { 50000, + 17 * 72 / 2, 14 * 72, + 1, 1, /* Min paper size */ + PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600, + {12, 12, 18, 18}, + {12, 12, 10, 10}, /* Check/Fix */ + PCL_COLOR_RGB, + PCL_PRINTER_LJ_COLOR | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | + PCL_PRINTER_DUPLEX | PCL_PRINTER_COPIES, + ljsmall_papersizes, + emptylist, + laserjet_papersources, + }, + /* Color laser printer, large format */ + { 50001, + 13 * 72, 19 * 72, + 1, 1, /* Min paper size */ + PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600, + {12, 12, 18, 18}, + {12, 12, 10, 10}, /* Check/Fix */ + PCL_COLOR_RGB, + PCL_PRINTER_LJ_COLOR | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | + PCL_PRINTER_DUPLEX | PCL_PRINTER_COPIES, + ljbig_papersizes, + emptylist, + laserjet_papersources, + }, + /* Color laser printer, small format, no expanded A4 margins */ + { 50002, + 17 * 72 / 2, 14 * 72, + 1, 1, /* Min paper size */ + PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600, + {12, 12, 18, 18}, + {12, 12, 18, 18}, /* Check/Fix */ + PCL_COLOR_RGB, + PCL_PRINTER_LJ_COLOR | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | + PCL_PRINTER_DUPLEX | PCL_PRINTER_COPIES, + ljsmall_papersizes, + emptylist, + laserjet_papersources, + }, + /* Color laser printer with large paper, no expanded A4 margins */ + { 50003, + 13 * 72, 19 * 72, + 1, 1, /* Min paper size */ + PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600, + {12, 12, 18, 18}, + {12, 12, 18, 18}, /* Check/Fix */ + PCL_COLOR_RGB, + PCL_PRINTER_LJ_COLOR | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | + PCL_PRINTER_DUPLEX | PCL_PRINTER_COPIES, ljbig_papersizes, emptylist, laserjet_papersources, }, + /* Color laser printer with tabloid paper, no expanded A4 margins */ + { 50004, + 118 * 72 / 10, 17 * 72, /* 11.8*17 */ + 1, 1, /* Min paper size */ + PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600, + {12, 12, 18, 18}, + {12, 12, 18, 18}, /* Check/Fix */ + PCL_COLOR_RGB, + PCL_PRINTER_LJ_COLOR | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | + PCL_PRINTER_DUPLEX | PCL_PRINTER_COPIES, + ljtabloid_papersizes, + emptylist, + laserjet_papersources, + }, + /* Special case the Color LaserJet 5 */ + { 50012, + 17 * 72 / 2, 14 * 72, + 1, 1, /* Min paper size */ + PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600, + {12, 12, 18, 18}, + {12, 12, 18, 18}, /* Check/Fix */ + PCL_COLOR_RGB, + PCL_PRINTER_LJ_COLOR | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | + PCL_PRINTER_DUPLEX | PCL_PRINTER_COPIES, + ljsmall_papersizes, + emptylist, + laserjet_papersources, + }, }; -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-const-variable" - -static const char standard_sat_adjustment[] = +static const char UNUSED standard_sat_adjustment[] = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<gutenprint>\n" "<curve wrap=\"wrap\" type=\"linear\" gamma=\"0\">\n" @@ -1414,7 +1506,6 @@ static const char standard_sat_adjustment[] = "</sequence>\n" "</curve>\n" "</gutenprint>\n"; -#pragma GCC diagnostic pop static const char standard_lum_adjustment[] = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" @@ -1521,6 +1612,12 @@ static const stp_parameter_t the_parameters[] = STP_PARAMETER_TYPE_INT, STP_PARAMETER_CLASS_FEATURE, STP_PARAMETER_LEVEL_BASIC, 0, 1, STP_CHANNEL_NONE, 1, 0 }, + { + "NativeCopies", N_("Printer Generates Copies Natively"), "Color=No,Category=Job Mode", + N_("Printer Generates Copies"), + STP_PARAMETER_TYPE_BOOLEAN, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_INTERNAL, 1, 0, STP_CHANNEL_NONE, 0, 1 + }, }; static const int the_parameter_count = @@ -1563,6 +1660,30 @@ static const float_param_t float_parameters[] = }, { { + "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, 1.0, 1.0, 1 + }, + { + { + "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, 1.0, 1.0, 1 + }, + { + { + "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, 1.0, 1.0, 1 + }, + { + { "BlackDensity", N_("Black Density"), "Color=Yes,Category=Output Level Adjustment", N_("Adjust the black density"), STP_PARAMETER_TYPE_DOUBLE, STP_PARAMETER_CLASS_OUTPUT, @@ -1612,7 +1733,8 @@ sizeof(float_parameters) / sizeof(const float_param_t); * Convert a name into it's option value */ -static int pcl_string_to_val(const char *string, /* I: String */ +static int pcl_string_to_val(const stp_vars_t *v, + const char *string, /* I: String */ const pcl_t *options, /* I: Options */ int num_options) /* I: Num options */ { @@ -1631,7 +1753,7 @@ static int pcl_string_to_val(const char *string, /* I: String */ } } - stp_deprintf(STP_DBG_PCL, "String: %s, Code: %d\n", string, code); + stp_dprintf(STP_DBG_PCL, v, "String: %s, Code: %d\n", string, code); return(code); } @@ -1640,7 +1762,8 @@ static int pcl_string_to_val(const char *string, /* I: String */ * Convert a value into it's option name */ -static const char * pcl_val_to_string(int code, /* I: Code */ +static const char * pcl_val_to_string(const stp_vars_t *v, + int code, /* I: Code */ const pcl_t *options, /* I: Options */ int num_options) /* I: Num options */ { @@ -1659,12 +1782,13 @@ static const char * pcl_val_to_string(int code, /* I: Code */ } } - stp_deprintf(STP_DBG_PCL, "Code: %d, String: %s\n", code, string); + stp_dprintf(STP_DBG_PCL, v, "Code: %d, String: %s\n", code, string); return(string); } -static const char * pcl_val_to_text(int code, /* I: Code */ +static const char * pcl_val_to_text(const stp_vars_t *v, + int code, /* I: Code */ const pcl_t *options, /* I: Options */ int num_options) /* I: Num options */ { @@ -1683,7 +1807,7 @@ static const char * pcl_val_to_text(int code, /* I: Code */ } } - stp_deprintf(STP_DBG_PCL, "Code: %d, String: %s\n", code, string); + stp_dprintf(STP_DBG_PCL, v, "Code: %d, String: %s\n", code, string); return(string); } @@ -1709,16 +1833,17 @@ static const stp_shade_t variable_shades[] = */ static const pcl_cap_t * /* O: Capabilities */ -pcl_get_model_capabilities(int model) /* I: Model */ +pcl_get_model_capabilities(const stp_vars_t *v) /* I: Model */ { int i; + int model = stp_get_model_id(v); int models= sizeof(pcl_model_capabilities) / sizeof(pcl_cap_t); for (i=0; i<models; i++) { if (pcl_model_capabilities[i].model == model) { return &(pcl_model_capabilities[i]); } } - stp_erprintf("pcl: model %d not found in capabilities list.\n",model); + stp_eprintf(v, "pcl: model %d not found in capabilities list.\n",model); return &(pcl_model_capabilities[0]); } @@ -1730,7 +1855,6 @@ static void pcl_describe_resolution(const stp_vars_t *v, stp_resolution_t *x, stp_resolution_t *y) { int i; - int model = stp_get_model_id(v); const char *resolution = stp_get_string_parameter(v, "Resolution"); const char *quality; const pcl_cap_t *caps = NULL; @@ -1747,7 +1871,7 @@ pcl_describe_resolution(const stp_vars_t *v, stp_resolution_t *x, stp_resolution } } quality = stp_get_string_parameter(v, "Quality"); - caps = pcl_get_model_capabilities(model); + caps = pcl_get_model_capabilities(v); if (quality && strcmp(quality, "None") == 0) quality = "Standard"; if (quality) @@ -1771,8 +1895,8 @@ pcl_describe_resolution(const stp_vars_t *v, stp_resolution_t *x, stp_resolution * Convert Media size name into PCL media code for printer */ -static int pcl_convert_media_size(const char *media_size, /* I: Media size string */ - int model) /* I: model number */ +static int pcl_convert_media_size(const stp_vars_t *v, + const char *media_size) { int i; @@ -1783,24 +1907,25 @@ static int pcl_convert_media_size(const char *media_size, /* I: Media size strin * First look up the media size in the table and convert to the code. */ - media_code = pcl_string_to_val(media_size, pcl_media_sizes, + media_code = pcl_string_to_val(v, media_size, pcl_media_sizes, NUM_PRINTER_PAPER_SIZES); - stp_deprintf(STP_DBG_PCL, "Media Size: %s, Code: %d\n", media_size, media_code); + stp_dprintf(STP_DBG_PCL, v, "Media Size: %s, Code: %d\n", media_size, media_code); /* * Now see if the printer supports the code found. */ if (media_code != -1) { - caps = pcl_get_model_capabilities(model); + int model = stp_get_model_id(v); + caps = pcl_get_model_capabilities(v); for (i=0; (i<NUM_PRINTER_PAPER_SIZES) && (caps->paper_sizes[i] != -1); i++) { if (media_code == (int) caps->paper_sizes[i]) return(media_code); /* Is supported */ } - stp_deprintf(STP_DBG_PCL, "Media Code %d not supported by printer model %d.\n", + stp_dprintf(STP_DBG_PCL, v, "Media Code %d not supported by printer model %d.\n", media_code, model); return(-1); /* Not supported */ } @@ -1864,11 +1989,11 @@ static const stp_param_string_t label_separator_types[] = */ static int -pcl_papersize_valid(const stp_papersize_t *pt, - int model) +pcl_papersize_valid(const stp_vars_t *v, + const stp_papersize_t *pt) { - const pcl_cap_t *caps = pcl_get_model_capabilities(model); + const pcl_cap_t *caps = pcl_get_model_capabilities(v); #ifdef PCL_NO_CUSTOM_PAPERSIZES int use_custom = 0; @@ -1907,7 +2032,7 @@ pcl_papersize_valid(const stp_papersize_t *pt, * Is it a recognized supported name? */ - if (pcl_convert_media_size(pt->name, model) != -1) + if (pcl_convert_media_size(v, pt->name) != -1) return(1); /* @@ -1983,21 +2108,21 @@ pcl_parameters(const stp_vars_t *v, const char *name, if (name == NULL) return; - stp_deprintf(STP_DBG_PCL, "pcl_parameters(): Name = %s\n", name); + stp_dprintf(STP_DBG_PCL, v, "pcl_parameters(): Name = %s\n", name); - caps = pcl_get_model_capabilities(model); + caps = pcl_get_model_capabilities(v); - stp_deprintf(STP_DBG_PCL, "Printer model = %d\n", model); - stp_deprintf(STP_DBG_PCL, "PageWidth = %d, PageHeight = %d\n", caps->custom_max_width, caps->custom_max_height); - stp_deprintf(STP_DBG_PCL, "MinPageWidth = %d, MinPageHeight = %d\n", caps->custom_min_width, caps->custom_min_height); - stp_deprintf(STP_DBG_PCL, "Normal Margins: top = %d, bottom = %d, left = %d, right = %d\n", + stp_dprintf(STP_DBG_PCL, v, "Printer model = %d\n", model); + stp_dprintf(STP_DBG_PCL, v, "PageWidth = %d, PageHeight = %d\n", caps->custom_max_width, caps->custom_max_height); + stp_dprintf(STP_DBG_PCL, v, "MinPageWidth = %d, MinPageHeight = %d\n", caps->custom_min_width, caps->custom_min_height); + stp_dprintf(STP_DBG_PCL, v, "Normal Margins: top = %d, bottom = %d, left = %d, right = %d\n", caps->normal_margins.top_margin, caps->normal_margins.bottom_margin, caps->normal_margins.left_margin, caps->normal_margins.right_margin); - stp_deprintf(STP_DBG_PCL, "A4 Margins: top = %d, bottom = %d, left = %d, right = %d\n", + stp_dprintf(STP_DBG_PCL, v, "A4 Margins: top = %d, bottom = %d, left = %d, right = %d\n", caps->a4_margins.top_margin, caps->a4_margins.bottom_margin, caps->a4_margins.left_margin, caps->a4_margins.right_margin); - stp_deprintf(STP_DBG_PCL, "Resolutions: %d\n", caps->resolutions); - stp_deprintf(STP_DBG_PCL, "ColorType = %d, PrinterType = %d\n", caps->color_type, caps->stp_printer_type); + stp_dprintf(STP_DBG_PCL, v, "Resolutions: %d\n", caps->resolutions); + stp_dprintf(STP_DBG_PCL, v, "ColorType = %d, PrinterType = %d\n", caps->color_type, caps->stp_printer_type); for (i = 0; i < the_parameter_count; i++) if (strcmp(name, the_parameters[i].name) == 0) @@ -2020,14 +2145,20 @@ pcl_parameters(const stp_vars_t *v, const char *name, if (strcmp(name, "PageSize") == 0) { - int papersizes = stp_known_papersizes(); + const stp_papersize_list_t *paper_sizes = + ((caps->stp_printer_type & PCL_PRINTER_LABEL) ? + stpi_get_papersize_list_named("labels", "") : + stpi_get_standard_papersize_list()); + const stp_papersize_list_item_t *ptli = + stpi_papersize_list_get_start(paper_sizes); description->bounds.str = stp_string_list_create(); - for (i = 0; i < papersizes; i++) + while (ptli) { - const stp_papersize_t *pt = stp_get_papersize_by_index(i); - if (strlen(pt->name) > 0 && pcl_papersize_valid(pt, model)) + const stp_papersize_t *pt = stpi_paperlist_item_get_data(ptli); + if (strlen(pt->name) > 0 && pcl_papersize_valid(v, pt)) stp_string_list_add_string(description->bounds.str, pt->name, gettext(pt->text)); + ptli = stpi_paperlist_item_next(ptli); } description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; @@ -2039,10 +2170,10 @@ pcl_parameters(const stp_vars_t *v, const char *name, { for (i=0; (i < NUM_PRINTER_PAPER_TYPES) && (caps->paper_types[i] != -1); i++) stp_string_list_add_string(description->bounds.str, - pcl_val_to_string(caps->paper_types[i], + pcl_val_to_string(v, caps->paper_types[i], pcl_media_types, NUM_PRINTER_PAPER_TYPES), - pcl_val_to_text(caps->paper_types[i], + pcl_val_to_text(v, caps->paper_types[i], pcl_media_types, NUM_PRINTER_PAPER_TYPES)); description->deflt.str = @@ -2058,10 +2189,10 @@ pcl_parameters(const stp_vars_t *v, const char *name, { for (i=0; (i < NUM_PRINTER_PAPER_SOURCES) && (caps->paper_sources[i] != -1); i++) stp_string_list_add_string(description->bounds.str, - pcl_val_to_string(caps->paper_sources[i], + pcl_val_to_string(v, caps->paper_sources[i], pcl_media_sources, NUM_PRINTER_PAPER_SOURCES), - pcl_val_to_text(caps->paper_sources[i], + pcl_val_to_text(v, caps->paper_sources[i], pcl_media_sources, NUM_PRINTER_PAPER_SOURCES)); description->deflt.str = @@ -2080,9 +2211,9 @@ pcl_parameters(const stp_vars_t *v, const char *name, { stp_string_list_add_string (description->bounds.str, - pcl_val_to_string(pcl_resolutions[i].pcl_code, + pcl_val_to_string(v, pcl_resolutions[i].pcl_code, pcl_resolutions, NUM_RESOLUTIONS), - pcl_val_to_text(pcl_resolutions[i].pcl_code, + pcl_val_to_text(v, pcl_resolutions[i].pcl_code, pcl_resolutions, NUM_RESOLUTIONS)); } } @@ -2096,12 +2227,12 @@ pcl_parameters(const stp_vars_t *v, const char *name, if (caps->resolutions & pcl_qualities[i].pcl_code) { const char *qual = - pcl_val_to_string(pcl_qualities[i].pcl_code, + pcl_val_to_string(v, pcl_qualities[i].pcl_code, pcl_qualities, NUM_QUALITIES); if (! stp_string_list_is_present(description->bounds.str, qual)) stp_string_list_add_string (description->bounds.str, qual, - pcl_val_to_text(pcl_qualities[i].pcl_code, + pcl_val_to_text(v, pcl_qualities[i].pcl_code, pcl_qualities, NUM_QUALITIES)); if (strcmp(qual, "Standard") == 0) has_standard_quality = 1; @@ -2212,7 +2343,18 @@ pcl_parameters(const stp_vars_t *v, const char *name, strcmp(name, "YellowDensity") == 0 || strcmp(name, "BlackDensity") == 0) { - if (caps->color_type != PCL_COLOR_NONE && + if ((caps->color_type & ~PCL_COLOR_RGB) != PCL_COLOR_NONE && + stp_check_string_parameter(v, "PrintingMode", STP_PARAMETER_DEFAULTED) && + strcmp(stp_get_string_parameter(v, "PrintingMode"), "Color") == 0) + description->is_active = 1; + else + description->is_active = 0; + } + else if (strcmp(name, "RedDensity") == 0 || + strcmp(name, "GreenDensity") == 0 || + strcmp(name, "BlueDensity") == 0) + { + if (caps->color_type & PCL_COLOR_RGB && stp_check_string_parameter(v, "PrintingMode", STP_PARAMETER_DEFAULTED) && strcmp(stp_get_string_parameter(v, "PrintingMode"), "Color") == 0) description->is_active = 1; @@ -2247,6 +2389,8 @@ pcl_parameters(const stp_vars_t *v, const char *name, description->deflt.integer = 6; else if (caps->color_type == PCL_COLOR_NONE) description->deflt.integer = 1; + else if (caps->color_type & PCL_COLOR_RGB) + description->deflt.integer = 3; else description->deflt.integer = 4; description->bounds.integer.lower = -1; @@ -2263,6 +2407,11 @@ pcl_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, "NativeCopies") == 0) + { + description->deflt.boolean = caps->stp_printer_type & PCL_PRINTER_COPIES; + description->is_active = 1; + } } @@ -2286,8 +2435,9 @@ internal_imageable_area(const stp_vars_t *v, /* I */ stp_dimension_t right_margin = 0; stp_dimension_t bottom_margin = 0; stp_dimension_t top_margin = 0; + const stp_papersize_list_t *papersize_list = stpi_get_standard_papersize_list(); - caps = pcl_get_model_capabilities(stp_get_model_id(v)); + caps = pcl_get_model_capabilities(v); stp_default_media_size(v, &width, &height); @@ -2299,16 +2449,16 @@ internal_imageable_area(const stp_vars_t *v, /* I */ if (!media_size) media_size = ""; if (strlen(media_size) == 0 && - ((pp = stp_get_papersize_by_size(stp_get_page_height(v), - stp_get_page_width(v))) != NULL)) + ((pp = stpi_get_papersize_by_size(papersize_list, stp_get_page_height(v), + stp_get_page_width(v))) != NULL)) media_size = pp->name; - stp_deprintf(STP_DBG_PCL, "pcl_imageable_area(): media_size: '%s'\n", + stp_dprintf(STP_DBG_PCL, v, "pcl_imageable_area(): media_size: '%s'\n", media_size); - pcl_media_size = pcl_convert_media_size(media_size, stp_get_model_id(v)); + pcl_media_size = pcl_convert_media_size(v, media_size); if (media_size) - pp = stp_get_papersize_by_name(media_size); + pp = stp_describe_papersize(v, media_size); if (pp && use_paper_margins) { left_margin = pp->left; @@ -2354,7 +2504,7 @@ pcl_limit(const stp_vars_t *v, /* I */ stp_dimension_t *min_width, stp_dimension_t *min_height) { - const pcl_cap_t *caps= pcl_get_model_capabilities(stp_get_model_id(v)); + const pcl_cap_t *caps= pcl_get_model_capabilities(v); *width = caps->custom_max_width; *height = caps->custom_max_height; *min_width = caps->custom_min_width; @@ -2365,8 +2515,7 @@ static const char * pcl_describe_output(const stp_vars_t *v) { int printing_color = 0; - int model = stp_get_model_id(v); - const pcl_cap_t *caps = pcl_get_model_capabilities(model); + const pcl_cap_t *caps = pcl_get_model_capabilities(v); const char *print_mode = stp_get_string_parameter(v, "PrintingMode"); stp_resolution_t xdpi, ydpi; @@ -2378,7 +2527,9 @@ pcl_describe_output(const stp_vars_t *v) printing_color = 0; if (printing_color) { - if ((caps->color_type & PCL_COLOR_CMY) == PCL_COLOR_CMY) + if ((caps->color_type & PCL_COLOR_RGB) == PCL_COLOR_RGB) + return "RGB"; + else if ((caps->color_type & PCL_COLOR_CMY) == PCL_COLOR_CMY) return "CMY"; else return "CMYK"; @@ -2387,6 +2538,16 @@ pcl_describe_output(const stp_vars_t *v) return "Grayscale"; } +static const stp_papersize_t * +pcl_describe_papersize(const stp_vars_t *v, const char *name) +{ + const pcl_cap_t *caps= pcl_get_model_capabilities(v); + if (caps->stp_printer_type & PCL_PRINTER_LABEL) + return stpi_get_listed_papersize(name, "labels"); + else + return stpi_get_listed_papersize(name, "standard"); +} + /* * 'pcl_print()' - Print an image to an HP printer. */ @@ -2425,7 +2586,7 @@ pcl_printfunc(stp_vars_t *v) if (pd->blank_lines > 1) /* Output accumulated lines */ { pd->blank_lines--; /* correct for one already output */ - stp_deprintf(STP_DBG_PCL, "Blank Lines = %d\n", pd->blank_lines); + stp_dprintf(STP_DBG_PCL, v, "Blank Lines = %d\n", pd->blank_lines); stp_zprintf(v, "\033*b%dY", pd->blank_lines); pd->blank_lines=0; } @@ -2513,12 +2674,53 @@ get_double_param(stp_vars_t *v, const char *param) return 1.0; } +static void +initialize_lj_color(stp_vars_t *v) +{ + /* Magic initialization sequence */ + stp_zprintf(v, "\033*v6W%c%c%c%c%c%c", 0, 3, 8, 8, 8, 8); /* RTL config */ + stp_puts("\033*t3J", v); /* Render alg (best) */ + stp_zprintf(v, "\033*o3W%c%c%c", 6, 4, 6); /* Driver config */ + stp_puts("\033*v255A", v); /* Color comp 1) */ + stp_puts("\033*v255B", v); /* Color comp 2) */ + stp_puts("\033*v255C", v); /* Color comp 3) */ + stp_puts("\033*v0I", v); /* Assign color idx 0 (white)*/ + stp_puts("\033*v255A", v); /* Color comp 1) */ + stp_puts("\033*v0B", v); /* Color comp 2) */ + stp_puts("\033*v0C", v); /* Color comp 3) */ + stp_puts("\033*v6I", v); /* Assign color idx 1 (red) */ + stp_puts("\033*v0A", v); /* Color comp 1) */ + stp_puts("\033*v255B", v); /* Color comp 2) */ + stp_puts("\033*v0C", v); /* Color comp 3) */ + stp_puts("\033*v5I", v); /* Assign color idx 5 (green) */ + stp_puts("\033*v0A", v); /* Color comp 1) */ + stp_puts("\033*v0B", v); /* Color comp 2) */ + stp_puts("\033*v255C", v); /* Color comp 3) */ + stp_puts("\033*v4I", v); /* Assign color idx 4 (blue) */ + stp_puts("\033*v255A", v); /* Color comp 1) */ + stp_puts("\033*v255B", v); /* Color comp 2) */ + stp_puts("\033*v0C", v); /* Color comp 3) */ + stp_puts("\033*v3I", v); /* Assign color idx 3 (yellow) */ + stp_puts("\033*v255A", v); /* Color comp 1) */ + stp_puts("\033*v0B", v); /* Color comp 2) */ + stp_puts("\033*v255C", v); /* Color comp 3) */ + stp_puts("\033*v2I", v); /* Assign color idx 2 (green)*/ + stp_puts("\033*v0A", v); /* Color comp 1) */ + stp_puts("\033*v255B", v); /* Color comp 2) */ + stp_puts("\033*v255C", v); /* Color comp 3) */ + stp_puts("\033*v1I", v); /* Assign color idx 1 (magenta) */ + stp_puts("\033*v0A", v); /* Color comp 1) */ + stp_puts("\033*v0B", v); /* Color comp 2) */ + stp_puts("\033*v0C", v); /* Color comp 3) */ + stp_puts("\033*v7I", v); /* Assign color idx (black) */ + stp_puts("\033*v7S", v); /* Set Foreground Color (black) */ +} + static int pcl_do_print(stp_vars_t *v, stp_image_t *image) { pcl_privdata_t privdata; int status = 1; - int model = stp_get_model_id(v); const char *media_size = stp_get_string_parameter(v, "PageSize"); const char *media_type = stp_get_string_parameter(v, "MediaType"); const char *media_source = stp_get_string_parameter(v, "InputSlot"); @@ -2554,6 +2756,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) errlast; /* Last raster line loaded */ unsigned zero_mask; int image_height; + int image_width; const pcl_cap_t *caps; /* Printer capabilities */ int planes = 3; /* # of output planes */ int pcl_media_size; /* PCL media size code */ @@ -2565,6 +2768,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) int extra_left_margin = 0; double density; int label = 0; + const stp_papersize_list_t *paper_sizes = stpi_get_standard_papersize_list(); if (!stp_verify(v)) { @@ -2574,7 +2778,9 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) if (strcmp(print_mode, "Color") == 0) printing_color = 1; - caps = pcl_get_model_capabilities(model); + (void) memset(&privdata, 0, sizeof(privdata)); + + caps = pcl_get_model_capabilities(v); /* * Setup a read-only pixel region for the entire image... @@ -2589,13 +2795,16 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) pcl_describe_resolution(v, &xdpi, &ydpi); - stp_deprintf(STP_DBG_PCL,"pcl: resolution=%dx%d\n",(int)xdpi,(int)ydpi); + stp_dprintf(STP_DBG_PCL, v,"pcl: resolution=%dx%d\n",(int)xdpi,(int)ydpi); if (xdpi <= 0 || ydpi <= 0) { stp_eprintf(v, "No resolution found; cannot print.\n"); return 0; } + if (printing_color && (caps->stp_printer_type & PCL_PRINTER_LJ_COLOR)) { + privdata.nodither = 1; + } /* * Choose the correct color conversion function... */ @@ -2619,15 +2828,15 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) dot_sizes_use=dot_sizes; } - stp_deprintf(STP_DBG_PCL, "privdata.do_cret = %d\n", privdata.do_cret); - stp_deprintf(STP_DBG_PCL, "privdata.do_cretb = %d\n", privdata.do_cretb); + stp_dprintf(STP_DBG_PCL, v, "privdata.do_cret = %d\n", privdata.do_cret); + stp_dprintf(STP_DBG_PCL, v, "privdata.do_cretb = %d\n", privdata.do_cretb); if (ink_type && printing_color) privdata.do_6color = (strcmp(ink_type, "Photo") == 0); else privdata.do_6color = 0; - stp_deprintf(STP_DBG_PCL, "privdata.do_6color = %d\n", privdata.do_6color); + stp_dprintf(STP_DBG_PCL, v, "privdata.do_6color = %d\n", privdata.do_6color); /* * Compute the output size... @@ -2642,6 +2851,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) top -= 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. @@ -2650,13 +2860,13 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) if (!media_size) media_size = ""; if (strlen(media_size) == 0 && - ((pp = stp_get_papersize_by_size(stp_get_page_height(v), - stp_get_page_width(v))) != NULL)) + ((pp = stpi_get_papersize_by_size(paper_sizes, stp_get_page_height(v), + stp_get_page_width(v))) != NULL)) media_size = pp->name; - pcl_media_size = pcl_convert_media_size(media_size, model); + pcl_media_size = pcl_convert_media_size(v, media_size); - stp_deprintf(STP_DBG_PCL,"pcl_media_size = %d, media_size = %s\n", pcl_media_size, media_size); + stp_dprintf(STP_DBG_PCL, v,"pcl_media_size = %d, media_size = %s\n", pcl_media_size, media_size); /* * If the media size requested is unknown, try it as a custom size. @@ -2665,15 +2875,16 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) */ if (pcl_media_size == -1) { - stp_deprintf(STP_DBG_PCL, "Paper size %s is not directly supported by printer.\n", + stp_dprintf(STP_DBG_PCL, v, "Paper size %s is not directly supported by printer.\n", media_size); - stp_deprintf(STP_DBG_PCL, "Trying as custom pagesize (watch the margins!)\n"); + stp_dprintf(STP_DBG_PCL, v, "Trying as custom pagesize (watch the margins!)\n"); pcl_media_size = PCL_PAPERSIZE_CUSTOM; /* Custom */ } - stp_deprintf(STP_DBG_PCL, "Duplex: %s, Page_Number: %d\n", duplex_mode, page_number); + stp_dprintf(STP_DBG_PCL, v, "Duplex: %s, Page_Number: %d\n", duplex_mode, page_number); privdata.duplex=0; privdata.tumble=0; + privdata.copies=1; /* * Duplex @@ -2690,6 +2901,15 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) } } + /* + * Multiple copies! + */ + + if (stp_check_boolean_parameter(v, "NativeCopies", STP_PARAMETER_ACTIVE) && + stp_get_boolean_parameter(v, "NativeCopies") && + stp_check_int_parameter(v, "NumCopies", STP_PARAMETER_ACTIVE)) + privdata.copies = stp_get_int_parameter(v, "NumCopies"); + /* * Label (PJL) settings and Orientation */ @@ -2748,7 +2968,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) int pcl_media_type, /* PCL media type code */ pcl_media_source; /* PCL media source code */ - stp_deprintf(STP_DBG_PCL, "Normal init\n"); + stp_dprintf(STP_DBG_PCL, v, "Normal init\n"); if (label) { @@ -2812,14 +3032,14 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) */ if (media_source && strlen(media_source) != 0) { - pcl_media_source = pcl_string_to_val(media_source, pcl_media_sources, + pcl_media_source = pcl_string_to_val(v, media_source, pcl_media_sources, sizeof(pcl_media_sources) / sizeof(pcl_t)); - stp_deprintf(STP_DBG_PCL,"pcl_media_source = %d, media_source = %s\n", pcl_media_source, + stp_dprintf(STP_DBG_PCL, v,"pcl_media_source = %d, media_source = %s\n", pcl_media_source, media_source); if (pcl_media_source == -1) - stp_deprintf(STP_DBG_PCL, "Unknown media source %s, ignored.\n", media_source); + stp_dprintf(STP_DBG_PCL, v, "Unknown media source %s, ignored.\n", media_source); else if (pcl_media_source != PCL_PAPERSOURCE_STANDARD) { /* Correct the value by taking the modulus */ @@ -2828,7 +3048,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) PAPERSOURCE_ADJ_GUIDE) { manual_feed_left_adjust = 1; - stp_deprintf(STP_DBG_PCL, "Adjusting left margin for manual feed.\n"); + stp_dprintf(STP_DBG_PCL, v, "Adjusting left margin for manual feed.\n"); } pcl_media_source = pcl_media_source % PAPERSOURCE_MOD; stp_zprintf(v, "\033&l%dH", pcl_media_source); @@ -2840,14 +3060,14 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) */ if (media_type && strlen(media_type) != 0) { - pcl_media_type = pcl_string_to_val(media_type, pcl_media_types, + pcl_media_type = pcl_string_to_val(v, media_type, pcl_media_types, sizeof(pcl_media_types) / sizeof(pcl_t)); - stp_deprintf(STP_DBG_PCL,"pcl_media_type = %d, media_type = %s\n", pcl_media_type, + stp_dprintf(STP_DBG_PCL, v,"pcl_media_type = %d, media_type = %s\n", pcl_media_type, media_type); if (pcl_media_type == -1) { - stp_deprintf(STP_DBG_PCL, "Unknown media type %s, set to PLAIN.\n", media_type); + stp_dprintf(STP_DBG_PCL, v, "Unknown media type %s, set to PLAIN.\n", media_type); pcl_media_type = PCL_PAPERTYPE_PLAIN; } @@ -2858,7 +3078,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) */ if (privdata.do_cretb && pcl_media_type == PCL_PAPERTYPE_GLOSSY) { - stp_deprintf(STP_DBG_PCL, "Media type GLOSSY, set to PREMIUM for PhotoRET II.\n"); + stp_dprintf(STP_DBG_PCL, v, "Media type GLOSSY, set to PREMIUM for PhotoRET II.\n"); pcl_media_type = PCL_PAPERTYPE_PREMIUM; } } @@ -2869,7 +3089,9 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) * Set DJ print quality to "best" if resolution >= 300 */ - if ((xdpi >= 300) && ((caps->stp_printer_type & PCL_PRINTER_DJ) == PCL_PRINTER_DJ)) + if (caps->stp_printer_type & PCL_PRINTER_LJ_COLOR) + stp_zprintf(v, "\033&l%dM", pcl_media_type); + else if ((xdpi >= 300) && ((caps->stp_printer_type & PCL_PRINTER_DJ) == PCL_PRINTER_DJ)) { if ((caps->stp_printer_type & PCL_PRINTER_MEDIATYPE) == PCL_PRINTER_MEDIATYPE) { @@ -2898,16 +3120,19 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) } } + /* Number of copies */ + if (privdata.copies > 1) + stp_zprintf(v,"\033&l%dX", privdata.copies); + /* * Duplex */ - if (privdata.duplex) stp_zprintf(v,"\033&l%dS", privdata.duplex + privdata.tumble); } else { - stp_deprintf(STP_DBG_PCL, "Back face init\n"); + stp_dprintf(STP_DBG_PCL, v, "Back face init\n"); stp_puts("\033&a2G", v); } @@ -2947,7 +3172,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) */ if (printing_color) - if ((caps->color_type & PCL_COLOR_CMY) == PCL_COLOR_CMY) + if (caps->color_type & (PCL_COLOR_CMY | PCL_COLOR_RGB)) planes = 3; else if (privdata.do_6color) @@ -2979,7 +3204,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) else { stp_zprintf(v, "\033*t%dR", (int) xdpi); /* Simple resolution */ - if (printing_color) + if (printing_color && ! (caps->stp_printer_type & PCL_PRINTER_LJ_COLOR)) { if ((caps->color_type & PCL_COLOR_CMY) == PCL_COLOR_CMY) stp_puts("\033*r-3U", v); /* Simple CMY color */ @@ -3016,7 +3241,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) the_top_margin = caps->normal_margins.top_margin; } - stp_deprintf(STP_DBG_PCL, "left %d margin %d top %d margin %d width %d height %d\n", + stp_dprintf(STP_DBG_PCL, v, "left %d margin %d top %d margin %d width %d height %d\n", left, the_left_margin, top, the_top_margin, out_width, out_height); if (manual_feed_left_adjust) @@ -3031,7 +3256,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) * of the difference between the maximum width and the actual * width experimentally yields correct results -- rlk 20081014 */ - stp_deprintf(STP_DBG_PCL, + stp_dprintf(STP_DBG_PCL, v, " Adjusting manual feed left margin by %d\n", wdelta / 3); extra_left_margin += wdelta / 3; } @@ -3045,6 +3270,12 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) stp_zprintf(v, "\033*r%dS", out_width); /* Set raster width */ stp_zprintf(v, "\033*r%dT", out_height); /* Set raster height */ + if (printing_color && caps->stp_printer_type & PCL_PRINTER_LJ_COLOR) + { + privdata.row_buf = stp_malloc(out_width * out_height); + initialize_lj_color(v); + } + if (privdata.do_cretb) { /* Move to top left of printed area */ @@ -3060,6 +3291,8 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) privdata.height = (out_width + 7) / 8; if (privdata.do_cret) privdata.height *= 2; + else if (printing_color && caps->stp_printer_type & PCL_PRINTER_LJ_COLOR) + privdata.height = out_width * 3; if (!printing_color) { @@ -3076,7 +3309,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) magenta = stp_malloc(privdata.height); yellow = stp_malloc(privdata.height); - if ((caps->color_type & PCL_COLOR_CMY) == PCL_COLOR_CMY) + if (caps->color_type & (PCL_COLOR_CMY | PCL_COLOR_RGB)) black = NULL; else black = stp_malloc(privdata.height); @@ -3099,6 +3332,8 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) else stp_set_string_parameter(v, "STPIOutputType", "Grayscale"); } + else if (caps->color_type & PCL_COLOR_RGB) + stp_set_string_parameter(v, "STPIOutputType", "RGB"); else stp_set_string_parameter(v, "STPIOutputType", "CMY"); @@ -3126,21 +3361,37 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) #endif stp_dither_init(v, image, out_width, xdpi, ydpi); - if (black) + if (privdata.nodither) { - stp_dither_add_channel(v, black, STP_ECOLOR_K, 0); - stp_channel_set_black_channel(v, STP_ECOLOR_K); + int i = 0; + stp_channel_reset(v); + if (black) + stp_channel_add(v, i++, 0, 1.0); + if (cyan) + stp_channel_add(v, i++, 0, 1.0); + if (magenta) + stp_channel_add(v, i++, 0, 1.0); + if (yellow) + stp_channel_add(v, i++, 0, 1.0); + } + else + { + if (black) + { + stp_dither_add_channel(v, black, STP_ECOLOR_K, 0); + stp_channel_set_black_channel(v, STP_ECOLOR_K); + } + if (cyan) + stp_dither_add_channel(v, cyan, STP_ECOLOR_C, 0); + if (lcyan) + stp_dither_add_channel(v, lcyan, STP_ECOLOR_C, 1); + if (magenta) + stp_dither_add_channel(v, magenta, STP_ECOLOR_M, 0); + if (lmagenta) + stp_dither_add_channel(v, lmagenta, STP_ECOLOR_M, 1); + if (yellow) + stp_dither_add_channel(v, yellow, STP_ECOLOR_Y, 0); } - if (cyan) - stp_dither_add_channel(v, cyan, STP_ECOLOR_C, 0); - if (lcyan) - stp_dither_add_channel(v, lcyan, STP_ECOLOR_C, 1); - if (magenta) - stp_dither_add_channel(v, magenta, STP_ECOLOR_M, 0); - if (lmagenta) - stp_dither_add_channel(v, lmagenta, STP_ECOLOR_M, 1); - if (yellow) - stp_dither_add_channel(v, yellow, STP_ECOLOR_Y, 0); /* Ensure that density does not exceed 1.0 */ @@ -3150,7 +3401,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) stp_set_float_parameter(v, "Density", 1.0); } - stp_deprintf(STP_DBG_PCL, "Density: %f\n", stp_get_float_parameter(v, "Density")); + stp_dprintf(STP_DBG_PCL, v, "Density: %f\n", stp_get_float_parameter(v, "Density")); if (stp_get_float_parameter(v, "Density") > 1.0) stp_set_float_parameter(v, "Density", 1.0); density = stp_get_float_parameter(v, "Density"); @@ -3219,36 +3470,45 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) density)); - if (!stp_check_curve_parameter(v, "HueMap", STP_PARAMETER_ACTIVE)) + if (!(caps->color_type & PCL_COLOR_RGB)) { - stp_curve_t *hue_adjustment = - stp_curve_create_from_string(standard_hue_adjustment); - stp_set_curve_parameter(v, "HueMap", hue_adjustment); - stp_curve_destroy(hue_adjustment); - } - if (!stp_check_curve_parameter(v, "LumMap", STP_PARAMETER_ACTIVE)) - { - stp_curve_t *lum_adjustment = - stp_curve_create_from_string(standard_lum_adjustment); + if (!stp_check_curve_parameter(v, "HueMap", STP_PARAMETER_ACTIVE)) + { + stp_curve_t *hue_adjustment = + stp_curve_create_from_string(standard_hue_adjustment); + stp_set_curve_parameter(v, "HueMap", hue_adjustment); + stp_curve_destroy(hue_adjustment); + } + if (!stp_check_curve_parameter(v, "LumMap", STP_PARAMETER_ACTIVE)) + { + stp_curve_t *lum_adjustment = + stp_curve_create_from_string(standard_lum_adjustment); #if 0 - /* - * This would represent a change to the PCL driver in 5.2.12 - * - * This call was missing and has represented a bug (if a clearly - * non-fatal one) in the PCL driver since time immemorial. The - * non-use of the variable was finally called out by gcc6. In my - * judgment, fixing the bug and changing the output of many PCL - * printers (even if it were for the better) would be more problematic - * than leaving the output as-is. - * - * - Robert Krawitz 2016-12-29 - */ - stp_set_curve_parameter(v, "LumMap", lum_adjustment); + /* + * This would represent a change to the PCL driver in 5.2.12 + * + * This call was missing and has represented a bug (if a clearly + * non-fatal one) in the PCL driver since time immemorial. The + * non-use of the variable was finally called out by gcc6. In my + * judgment, fixing the bug and changing the output of many PCL + * printers (even if it were for the better) would be more problematic + * than leaving the output as-is. + * + * - Robert Krawitz 2016-12-29 + */ + stp_set_curve_parameter(v, "LumMap", lum_adjustment); #endif - stp_curve_destroy(lum_adjustment); + stp_curve_destroy(lum_adjustment); + } } - (void) stp_color_init(v, image, 65536); + if (printing_color && (caps->stp_printer_type & PCL_PRINTER_LJ_COLOR)) + { + stp_set_float_parameter(v, "AppGammaScale", 1.0); + (void) stp_color_init(v, image, 256); + } + else + (void) stp_color_init(v, image, 65536); errdiv = image_height / out_height; errmod = image_height % out_height; @@ -3277,9 +3537,51 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) break; } } - stp_dither(v, y, duplicate_line, zero_mask, NULL); - pcl_printfunc(v); - stp_deprintf(STP_DBG_PCL,"pcl_print: y = %d, line = %d, val = %d, mod = %d, height = %d\n", + if (privdata.nodither) + { + if (! duplicate_line) + { + unsigned row_errdiv = image_width / out_width; + unsigned row_errmod = image_width % out_width; + unsigned row_errval = 0; + unsigned row_errlast = -1; + unsigned row_errcol = 0; + unsigned short *output = stp_channel_get_output(v); + unsigned char *optr = privdata.row_buf; + int x; + for (x = 0; x < out_width; x++) + { + if (row_errcol != row_errlast) + { + row_errlast = row_errcol; + optr[0] = output[(row_errcol * 3) + 0] / (unsigned short) 257; + optr[1] = output[(row_errcol * 3) + 1] / (unsigned short) 257; + optr[2] = output[(row_errcol * 3) + 2] / (unsigned short) 257; + } + else + { + optr[0] = optr[-3]; + optr[1] = optr[-2]; + optr[2] = optr[-1]; + } + optr += 3; + row_errval += row_errmod; + row_errcol += row_errdiv; + if (row_errval >= out_width) + { + row_errval -= out_width; + row_errcol++; + } + } + } + (*(privdata.writefunc))(v, privdata.row_buf, privdata.height, 1); + } + else + { + stp_dither(v, y, duplicate_line, zero_mask, NULL); + pcl_printfunc(v); + } + stp_dprintf(STP_DBG_PCL, v,"pcl_print: y = %d, line = %d, val = %d, mod = %d, height = %d\n", y, errline, errval, errmod, out_height); errval += errmod; errline += errdiv; @@ -3295,7 +3597,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) if (privdata.blank_lines > 1) { privdata.blank_lines--; /* correct for one already output */ - stp_deprintf(STP_DBG_PCL, "Blank Lines = %d\n", privdata.blank_lines); + stp_dprintf(STP_DBG_PCL, v, "Blank Lines = %d\n", privdata.blank_lines); stp_zprintf(v, "\033*b%dY", privdata.blank_lines); privdata.blank_lines=0; } @@ -3322,6 +3624,8 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image) if (privdata.comp_buf != NULL) stp_free(privdata.comp_buf); + if (privdata.row_buf != NULL) + stp_free(privdata.row_buf); if ((caps->stp_printer_type & PCL_PRINTER_NEW_ERG) == PCL_PRINTER_NEW_ERG) stp_puts("\033*rC", v); @@ -3345,7 +3649,6 @@ pcl_print(const stp_vars_t *v, stp_image_t *image) { int status; stp_vars_t *nv = stp_vars_create_copy(v); - stp_prune_inactive_options(nv); status = pcl_do_print(nv, image); stp_vars_destroy(nv); return status; @@ -3365,7 +3668,8 @@ static const stp_printfuncs_t print_pcl_printfuncs = stp_verify_printer_params, NULL, NULL, - NULL + NULL, + pcl_describe_papersize }; @@ -3420,14 +3724,14 @@ static stp_family_t print_pcl_module_data = static int print_pcl_module_init(void) { - return stp_family_register(print_pcl_module_data.printer_list); + return stpi_family_register(print_pcl_module_data.printer_list); } static int print_pcl_module_exit(void) { - return stp_family_unregister(print_pcl_module_data.printer_list); + return stpi_family_unregister(print_pcl_module_data.printer_list); } diff --git a/src/main/print-ps.c b/src/main/print-ps.c index 5a8ab9c..751424d 100644 --- a/src/main/print-ps.c +++ b/src/main/print-ps.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -94,7 +93,8 @@ static const int the_parameter_count = sizeof(the_parameters) / sizeof(const stp_parameter_t); static int -ps_option_to_param(stp_parameter_t *param, stp_mxml_node_t *option) +ps_option_to_param(const stp_vars_t *v, stp_parameter_t *param, + stp_mxml_node_t *option) { const char *group_text = stp_mxmlElementGetAttr(option, "grouptext"); @@ -120,7 +120,7 @@ ps_option_to_param(stp_parameter_t *param, stp_mxml_node_t *option) param->is_active = 1; param->verify_this_parameter = 1; param->name = stp_mxmlElementGetAttr(option, "stpname"); - stp_deprintf(STP_DBG_PS, + stp_dprintf(STP_DBG_PS, v, "Gutenprint parameter %s type %d mandatory %d class %d level %d channel %d default %s %f", param->name, param->p_type, param->is_mandatory, param->p_class, param->p_level, param->channel, @@ -131,7 +131,7 @@ ps_option_to_param(stp_parameter_t *param, stp_mxml_node_t *option) param->deflt.dbl = stp_default_value; param->bounds.dbl.upper = upper_bound; param->bounds.dbl.lower = lower_bound; - stp_deprintf(STP_DBG_PS, " %.3f %.3f %.3f\n", + stp_dprintf(STP_DBG_PS, v, " %.3f %.3f %.3f\n", param->deflt.dbl, param->bounds.dbl.upper, param->bounds.dbl.lower); break; @@ -139,7 +139,7 @@ ps_option_to_param(stp_parameter_t *param, stp_mxml_node_t *option) param->deflt.dimension = atoi(default_value); param->bounds.dimension.upper = (stp_dimension_t) upper_bound; param->bounds.dimension.lower = (stp_dimension_t) lower_bound; - stp_deprintf(STP_DBG_PS, " %f %f %f\n", + stp_dprintf(STP_DBG_PS, v, " %f %f %f\n", param->deflt.dimension, param->bounds.dimension.upper, param->bounds.dimension.lower); break; @@ -147,16 +147,16 @@ ps_option_to_param(stp_parameter_t *param, stp_mxml_node_t *option) param->deflt.integer = atoi(default_value); param->bounds.integer.upper = (int) upper_bound; param->bounds.integer.lower = (int) lower_bound; - stp_deprintf(STP_DBG_PS, " %d %d %d\n", + stp_dprintf(STP_DBG_PS, v, " %d %d %d\n", param->deflt.integer, param->bounds.integer.upper, param->bounds.integer.lower); break; case STP_PARAMETER_TYPE_BOOLEAN: param->deflt.boolean = strcasecmp(default_value, "true") == 0 ? 1 : 0; - stp_deprintf(STP_DBG_PS, " %d\n", param->deflt.boolean); + stp_dprintf(STP_DBG_PS, v, " %d\n", param->deflt.boolean); break; default: - stp_deprintf(STP_DBG_PS, "\n"); + stp_dprintf(STP_DBG_PS, v, "\n"); break; } } @@ -263,7 +263,7 @@ ps_list_parameters(const stp_vars_t *v) option = stpi_xmlppd_find_option_index(m_ppd, i); if (option) { - ps_option_to_param(param, option); + ps_option_to_param(v, param, option); if (param->p_type != STP_PARAMETER_TYPE_INVALID && strcmp(param->name, "PageRegion") != 0 && strcmp(param->name, "PageSize") != 0) @@ -314,8 +314,8 @@ ps_parameters_internal(const stp_vars_t *v, const char *name, nickname = stp_mxmlElementGetAttr(m_ppd, "nickname"); else nickname = _("None; please provide a PPD file"); - stp_string_list_add_string(description->bounds.str, - nickname, nickname); + stp_string_list_add_string_unsafe(description->bounds.str, + nickname, nickname); description->deflt.str = nickname; description->is_active = 1; return; @@ -374,7 +374,7 @@ ps_parameters_internal(const stp_vars_t *v, const char *name, } } - ps_option_to_param(description, option); + ps_option_to_param(v, description, option); if (description->p_type != STP_PARAMETER_TYPE_STRING_LIST) return; num_choices = atoi(stp_mxmlElementGetAttr(option, "num_choices")); @@ -470,6 +470,74 @@ ps_media_size_internal(const stp_vars_t *v, /* I */ return; } +static const stp_papersize_t * +ps_describe_papersize(const stp_vars_t *v, const char *name) +{ + int status = check_ppd_file(v); + if (status) + { + stp_mxml_node_t *paper = stpi_xmlppd_find_page_size(m_ppd, name); + if (paper) + { + const char *papersize_list_name = m_ppd_file ? m_ppd_file : "NOPPD"; + stp_papersize_list_t *ourlist = + stpi_find_papersize_list_named(papersize_list_name); + const stp_papersize_t *papersize; + const stp_papersize_t *standard_papersize = + stpi_get_listed_papersize(name, "standard"); + + if (! ourlist) + ourlist = stpi_new_papersize_list(papersize_list_name); + + papersize = stpi_get_papersize_by_name(ourlist, name); + if (! papersize) + { + stp_papersize_t *npapersize = stp_malloc(sizeof(stp_papersize_t)); + npapersize->name = stp_strdup(name); + npapersize->text = stp_strdup(name); + npapersize->comment = NULL; + /* + * Note that we used the width and height from the PPD file, + * not from the standard definition. This is so that if the + * PPD file is for another driver that uses slightly different + * dimensions than we do that our description matches that of + * driver in use. + */ + npapersize->width = atof(stp_mxmlElementGetAttr(paper, "width")); + npapersize->height = atof(stp_mxmlElementGetAttr(paper, "height")); + /* + * Only use auxiliary information from our list if our paper size + * really is substantially the same as what the PPD file says! + */ + if (standard_papersize && + fabs(npapersize->width - standard_papersize->width) < 1 && + fabs(npapersize->height - standard_papersize->height) < 1) + { + npapersize->paper_unit = standard_papersize->paper_unit; + npapersize->paper_size_type = standard_papersize->paper_size_type; + npapersize->top = standard_papersize->top; + npapersize->left = standard_papersize->left; + npapersize->bottom = standard_papersize->bottom; + npapersize->right = standard_papersize->right; + } + else + { + npapersize->top = 0; + npapersize->left = 0; + npapersize->bottom = 0; + npapersize->right = 0; + npapersize->paper_unit = PAPERSIZE_ENGLISH_STANDARD; + npapersize->paper_size_type = PAPERSIZE_TYPE_STANDARD; + } + if (stpi_papersize_create(ourlist, npapersize)) + return npapersize; + } + return papersize; + } + } + return NULL; +} + static void ps_media_size(const stp_vars_t *v, stp_dimension_t *width, stp_dimension_t *height) { @@ -954,7 +1022,7 @@ ps_print_internal(stp_vars_t *v, stp_image_t *image) * Output a standard PostScript header with DSC comments... */ - curtime = time(NULL); + curtime = stpi_time(NULL); top = paper_height - top; @@ -1175,7 +1243,6 @@ ps_print(const stp_vars_t *v, stp_image_t *image) char *locale; #endif stp_vars_t *nv = stp_vars_create_copy(v); - stp_prune_inactive_options(nv); if (!stp_verify(nv)) { stp_eprintf(nv, "Print options not verified; cannot print.\n"); @@ -1341,7 +1408,8 @@ static const stp_printfuncs_t print_ps_printfuncs = stp_verify_printer_params, NULL, NULL, - ps_external_options + ps_external_options, + ps_describe_papersize }; @@ -1355,14 +1423,14 @@ static stp_family_t print_ps_module_data = static int print_ps_module_init(void) { - return stp_family_register(print_ps_module_data.printer_list); + return stpi_family_register(print_ps_module_data.printer_list); } static int print_ps_module_exit(void) { - return stp_family_unregister(print_ps_module_data.printer_list); + return stpi_family_unregister(print_ps_module_data.printer_list); } diff --git a/src/main/print-raw.c b/src/main/print-raw.c index 131d095..756f7a9 100644 --- a/src/main/print-raw.c +++ b/src/main/print-raw.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -156,15 +155,17 @@ raw_parameters(const stp_vars_t *v, const char *name, } else if (strcmp(name, "PageSize") == 0) { - int papersizes = stp_known_papersizes(); + const stp_papersize_list_t *paper_sizes = + stpi_get_standard_papersize_list(); + const stp_papersize_list_item_t *ptli = + stpi_papersize_list_get_start(paper_sizes); description->bounds.str = stp_string_list_create(); - for (i = 0; i < papersizes; i++) + while (ptli) { - /* All users of the raw drivers should use "Custom" PageSize - and manually set page height/width! */ - const stp_papersize_t *pt = stp_get_papersize_by_index(i); + const stp_papersize_t *pt = stpi_paperlist_item_get_data(ptli); stp_string_list_add_string(description->bounds.str, pt->name, gettext(pt->text)); + ptli = stpi_paperlist_item_next(ptli); } description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; @@ -237,7 +238,6 @@ raw_print(const stp_vars_t *v, stp_image_t *image) const char *ink_type = stp_get_string_parameter(nv, "InkType"); stp_image_init(image); - stp_prune_inactive_options(nv); if (!stp_verify(nv)) { stp_eprintf(nv, _("Print options not verified; cannot print.\n")); @@ -361,7 +361,8 @@ static const stp_printfuncs_t print_raw_printfuncs = stp_verify_printer_params, NULL, NULL, - NULL + NULL, + stpi_standard_describe_papersize }; @@ -377,14 +378,14 @@ static stp_family_t print_raw_module_data = static int print_raw_module_init(void) { - return stp_family_register(print_raw_module_data.printer_list); + return stpi_family_register(print_raw_module_data.printer_list); } static int print_raw_module_exit(void) { - return stp_family_unregister(print_raw_module_data.printer_list); + return stpi_family_unregister(print_raw_module_data.printer_list); } diff --git a/src/main/print-util.c b/src/main/print-util.c index 400f7b7..1119484 100644 --- a/src/main/print-util.c +++ b/src/main/print-util.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -48,6 +47,11 @@ #define FMIN(a, b) ((a) < (b) ? (a) : (b)) +static stp_outfunc_t global_errfunc; +static void *global_errdata; +static stp_outfunc_t global_dbgfunc; +static void *global_dbgdata; + typedef struct { stp_outfunc_t ofunc; @@ -283,14 +287,68 @@ stp_send_command(const stp_vars_t *v, const char *command, } void +stp_set_global_errfunc(stp_outfunc_t val) +{ + global_errfunc = val; +} + +stp_outfunc_t +stp_get_global_errfunc(void) +{ + return global_errfunc; +} + +void +stp_set_global_errdata(void *val) +{ + global_errdata = val; +} + +void * +stp_get_global_errdata(void) +{ + return global_errdata; +} + +void +stp_set_global_dbgfunc(stp_outfunc_t val) +{ + global_dbgfunc = val; +} + +stp_outfunc_t +stp_get_global_dbgfunc(void) +{ + return global_dbgfunc; +} + +void +stp_set_global_dbgdata(void *val) +{ + global_dbgdata = val; +} + +void * +stp_get_global_dbgdata(void) +{ + return global_dbgdata; +} + +void stp_eprintf(const stp_vars_t *v, const char *format, ...) { int bytes; - if (stp_get_errfunc(v)) + stp_outfunc_t errfunc = stp_get_errfunc(v); + if (! errfunc) + errfunc = global_errfunc; + void * errdata = stp_get_errdata(v); + if (! errdata) + errdata = global_errdata; + if (errfunc) { char *result; STPI_VASPRINTF(result, bytes, format); - (stp_get_errfunc(v))((void *)(stp_get_errdata(v)), result, bytes); + errfunc(errdata, result, bytes); stp_free(result); } else @@ -305,16 +363,34 @@ stp_eprintf(const stp_vars_t *v, const char *format, ...) void stp_erputc(int ch) { - putc(ch, stderr); + if (global_errfunc) + { + char c[1]; + c[0] = (char) ch; + global_errfunc(global_errdata, c, 1); + } + else + putc(ch, stderr); } void stp_erprintf(const char *format, ...) { - va_list args; - va_start(args, format); - vfprintf(stderr, format, args); - va_end(args); + if (global_errfunc) + { + int bytes; + char *result; + STPI_VASPRINTF(result, bytes, format); + global_errfunc(global_errdata, result, bytes); + stp_free(result); + } + else + { + va_list args; + va_start(args, format); + vfprintf(stderr, format, args); + va_end(args); + } } static unsigned long stpi_debug_level = 0; @@ -345,17 +421,33 @@ stp_get_debug_level(void) void stp_dprintf(unsigned long level, const stp_vars_t *v, const char *format, ...) { - int bytes; stpi_init_debug(); if (level & stpi_debug_level) { - if (stp_get_errfunc(v)) + stp_outfunc_t dbgfunc = stp_get_dbgfunc(v); + if (! dbgfunc) + dbgfunc = global_dbgfunc; + if (! dbgfunc) + dbgfunc = stp_get_errfunc(v); + if (! dbgfunc) + dbgfunc = global_errfunc; + void *dbgdata = stp_get_dbgdata(v); + if (! dbgdata) + dbgdata = global_dbgdata; + if (! dbgdata) + dbgdata = stp_get_errdata(v); + if (! dbgdata) + dbgdata = global_errdata; + if (dbgfunc) { + int bytes; char *result; STPI_VASPRINTF(result, bytes, format); - (stp_get_errfunc(v))((void *)(stp_get_errdata(v)), result, bytes); + dbgfunc(dbgdata, result, bytes); stp_free(result); - } else { + } + else + { va_list args; va_start(args, format); vfprintf(stderr, format, args); @@ -367,12 +459,25 @@ stp_dprintf(unsigned long level, const stp_vars_t *v, const char *format, ...) void stp_deprintf(unsigned long level, const char *format, ...) { - va_list args; - va_start(args, format); stpi_init_debug(); if (level & stpi_debug_level) - vfprintf(stderr, format, args); - va_end(args); + { + if (global_dbgfunc) + { + int bytes; + char *result; + STPI_VASPRINTF(result, bytes, format); + global_dbgfunc(global_dbgdata, result, bytes); + stp_free(result); + } + else + { + va_list args; + va_start(args, format); + vfprintf(stderr, format, args); + va_end(args); + } + } } static void @@ -393,12 +498,12 @@ stp_init_debug_messages(stp_vars_t *v) { int verified_flag = stp_get_verified(v); debug_msgbuf_t *msgbuf = stp_malloc(sizeof(debug_msgbuf_t)); - msgbuf->ofunc = stp_get_errfunc(v); - msgbuf->odata = stp_get_errdata(v); + msgbuf->ofunc = stp_get_dbgfunc(v); + msgbuf->odata = stp_get_dbgdata(v); msgbuf->data = NULL; msgbuf->bytes = 0; - stp_set_errfunc((stp_vars_t *) v, fill_buffer_writefunc); - stp_set_errdata((stp_vars_t *) v, msgbuf); + stp_set_dbgfunc((stp_vars_t *) v, fill_buffer_writefunc); + stp_set_dbgdata((stp_vars_t *) v, msgbuf); stp_set_verified((stp_vars_t *) v, verified_flag); } @@ -406,13 +511,17 @@ void stp_flush_debug_messages(stp_vars_t *v) { int verified_flag = stp_get_verified(v); - debug_msgbuf_t *msgbuf = (debug_msgbuf_t *)stp_get_errdata(v); - stp_set_errfunc((stp_vars_t *) v, msgbuf->ofunc); - stp_set_errdata((stp_vars_t *) v, msgbuf->odata); + debug_msgbuf_t *msgbuf = (debug_msgbuf_t *)stp_get_dbgdata(v); + stp_set_dbgfunc((stp_vars_t *) v, msgbuf->ofunc); + stp_set_dbgdata((stp_vars_t *) v, msgbuf->odata); stp_set_verified((stp_vars_t *) v, verified_flag); if (msgbuf->bytes > 0) { - stp_eprintf(v, "%s", msgbuf->data); + /* + * Messages aren't tagged by debug value, so we force them + * out if any debug flag is set. + */ + stp_dprintf((unsigned long) -1, v, "%s", msgbuf->data); stp_free(msgbuf->data); } stp_free(msgbuf); @@ -485,7 +594,6 @@ stp_init(void) stpi_init_debug(); stp_xml_preinit(); stpi_init_printer(); - stpi_init_paper(); stpi_init_dither(); /* Load modules */ if (stp_module_load()) @@ -596,7 +704,7 @@ stp_merge_printvars(stp_vars_t *user, const stp_vars_t *print) int i; stp_parameter_list_t params = stp_get_parameter_list(print); int count = stp_parameter_list_count(params); - stp_deprintf(STP_DBG_VARS, "Merging printvars from %s\n", + stp_dprintf(STP_DBG_VARS, user, "Merging printvars from %s\n", stp_get_driver(print)); for (i = 0; i < count; i++) { @@ -631,7 +739,7 @@ stp_merge_printvars(stp_vars_t *user, const stp_vars_t *print) stp_parameter_description_destroy(&desc); } } - stp_deprintf(STP_DBG_VARS, "Exiting merge printvars\n"); + stp_dprintf(STP_DBG_VARS, user, "Exiting merge printvars\n"); stp_parameter_list_destroy(params); } @@ -666,3 +774,16 @@ stp_abort(void) } abort(); } + +time_t +stpi_time(time_t *t) +{ + if (stp_get_debug_level() & STP_DBG_STATIC_TIME) + { + if (t) + *t = (time_t) 0; + return (time_t) 0; + } + else + return time(t); +} diff --git a/src/main/print-vars.c b/src/main/print-vars.c index 4526f71..e6a9e3f 100644 --- a/src/main/print-vars.c +++ b/src/main/print-vars.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -79,6 +78,8 @@ struct stp_vars /* Plug-in variables */ void *outdata; void (*errfunc)(void *data, const char *buffer, size_t bytes); void *errdata; + void (*dbgfunc)(void *data, const char *buffer, size_t bytes); + void *dbgdata; int verified; /* Ensure that params are OK! */ }; @@ -366,10 +367,10 @@ pre##_set_##s(stp_vars_t *v, const char *val) \ { \ CHECK_VARS(v); \ if (val) \ - stp_deprintf(STP_DBG_VARS, "set %s to %s (0x%p)\n", #s, val, \ + stp_dprintf(STP_DBG_VARS, v, "set %s to %s (0x%p)\n", #s, val, \ (const void *) v); \ else \ - stp_deprintf(STP_DBG_VARS, "clear %s (0x%p)\n", #s, \ + stp_dprintf(STP_DBG_VARS, v, "clear %s (0x%p)\n", #s, \ (const void *) v); \ if (v->s == val) \ return; \ @@ -422,8 +423,10 @@ DEF_FUNCS(page_width, stp_dimension_t, stp) DEF_FUNCS(page_height, stp_dimension_t, stp) DEF_FUNCS(outdata, void *, stp) DEF_FUNCS(errdata, void *, stp) +DEF_FUNCS(dbgdata, void *, stp) DEF_FUNCS(outfunc, stp_outfunc_t, stp) DEF_FUNCS(errfunc, stp_outfunc_t, stp) +DEF_FUNCS(dbgfunc, stp_outfunc_t, stp) void stp_set_verified(stp_vars_t *v, int val) @@ -490,10 +493,10 @@ stp_set_string_parameter_n(stp_vars_t *v, const char *parameter, { stp_list_t *list = v->params[STP_PARAMETER_TYPE_STRING_LIST]; if (value) - stp_deprintf(STP_DBG_VARS, "stp_set_string_parameter(0x%p, %s, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_string_parameter(0x%p, %s, %s)\n", (const void *) v, parameter, value); else - stp_deprintf(STP_DBG_VARS, "stp_set_string_parameter(0x%p, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_string_parameter(0x%p, %s)\n", (const void *) v, parameter); set_raw_parameter(list, parameter, value, bytes, STP_PARAMETER_TYPE_STRING_LIST); @@ -507,7 +510,7 @@ stp_set_string_parameter(stp_vars_t *v, const char *parameter, int byte_count = 0; if (value) byte_count = strlen(value); - stp_deprintf(STP_DBG_VARS, "stp_set_string_parameter(0x%p, %s, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_string_parameter(0x%p, %s, %s)\n", (const void *) v, parameter, value ? value : "NULL"); stp_set_string_parameter_n(v, parameter, value, byte_count); stp_set_verified(v, 0); @@ -518,7 +521,7 @@ stp_set_default_string_parameter_n(stp_vars_t *v, const char *parameter, const char *value, size_t bytes) { stp_list_t *list = v->params[STP_PARAMETER_TYPE_STRING_LIST]; - stp_deprintf(STP_DBG_VARS, "stp_set_default_string_parameter(0x%p, %s, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_default_string_parameter(0x%p, %s, %s)\n", (const void *) v, parameter, value ? value : "NULL"); set_default_raw_parameter(list, parameter, value, bytes, STP_PARAMETER_TYPE_STRING_LIST); @@ -605,7 +608,7 @@ stp_set_file_parameter(stp_vars_t *v, const char *parameter, size_t byte_count = 0; if (value) byte_count = strlen(value); - stp_deprintf(STP_DBG_VARS, "stp_set_file_parameter(0x%p, %s, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_file_parameter(0x%p, %s, %s)\n", (const void *) v, parameter, value ? value : "NULL"); set_raw_parameter(list, parameter, value, byte_count, STP_PARAMETER_TYPE_FILE); @@ -617,7 +620,7 @@ stp_set_file_parameter_n(stp_vars_t *v, const char *parameter, const char *value, size_t byte_count) { stp_list_t *list = v->params[STP_PARAMETER_TYPE_FILE]; - stp_deprintf(STP_DBG_VARS, "stp_set_file_parameter(0x%p, %s, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_file_parameter(0x%p, %s, %s)\n", (const void *) v, parameter, value ? value : "NULL"); set_raw_parameter(list, parameter, value, byte_count, STP_PARAMETER_TYPE_FILE); @@ -632,7 +635,7 @@ stp_set_default_file_parameter(stp_vars_t *v, const char *parameter, size_t byte_count = 0; if (value) byte_count = strlen(value); - stp_deprintf(STP_DBG_VARS, "stp_set_default_file_parameter(0x%p, %s, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_default_file_parameter(0x%p, %s, %s)\n", (const void *) v, parameter, value ? value : "NULL"); set_default_raw_parameter(list, parameter, value, byte_count, STP_PARAMETER_TYPE_FILE); @@ -644,7 +647,7 @@ stp_set_default_file_parameter_n(stp_vars_t *v, const char *parameter, const char *value, size_t byte_count) { stp_list_t *list = v->params[STP_PARAMETER_TYPE_FILE]; - stp_deprintf(STP_DBG_VARS, "stp_set_default_file_parameter(0x%p, %s, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_default_file_parameter(0x%p, %s, %s)\n", (const void *) v, parameter, value ? value : "NULL"); set_default_raw_parameter(list, parameter, value, byte_count, STP_PARAMETER_TYPE_FILE); @@ -678,7 +681,7 @@ stp_set_curve_parameter(stp_vars_t *v, const char *parameter, { stp_list_t *list = v->params[STP_PARAMETER_TYPE_CURVE]; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_set_curve_parameter(0x%p, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_curve_parameter(0x%p, %s)\n", (const void *) v, parameter); if (curve) { @@ -712,7 +715,7 @@ stp_set_default_curve_parameter(stp_vars_t *v, const char *parameter, { stp_list_t *list = v->params[STP_PARAMETER_TYPE_CURVE]; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_set_default_curve_parameter(0x%p, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_default_curve_parameter(0x%p, %s)\n", (const void *) v, parameter); if (!item) { @@ -757,7 +760,7 @@ stp_set_array_parameter(stp_vars_t *v, const char *parameter, { stp_list_t *list = v->params[STP_PARAMETER_TYPE_ARRAY]; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_set_array_parameter(0x%p, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_array_parameter(0x%p, %s)\n", (const void *) v, parameter); if (array) { @@ -790,7 +793,7 @@ stp_set_default_array_parameter(stp_vars_t *v, const char *parameter, { stp_list_t *list = v->params[STP_PARAMETER_TYPE_ARRAY]; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_set_default_array_parameter(0x%p, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_default_array_parameter(0x%p, %s)\n", (const void *) v, parameter); if (!item) { @@ -835,7 +838,7 @@ stp_set_int_parameter(stp_vars_t *v, const char *parameter, int ival) stp_list_t *list = v->params[STP_PARAMETER_TYPE_INT]; value_t *val; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_set_int_parameter(0x%p, %s, %d)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_int_parameter(0x%p, %s, %d)\n", (const void *) v, parameter, ival); if (item) { @@ -861,7 +864,7 @@ stp_set_default_int_parameter(stp_vars_t *v, const char *parameter, int ival) stp_list_t *list = v->params[STP_PARAMETER_TYPE_INT]; value_t *val; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_set_default_int_parameter(0x%p, %s, %d)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_default_int_parameter(0x%p, %s, %d)\n", (const void *) v, parameter, ival); if (!item) { @@ -880,7 +883,7 @@ stp_clear_int_parameter(stp_vars_t *v, const char *parameter) { stp_list_t *list = v->params[STP_PARAMETER_TYPE_INT]; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_clear_int_parameter(0x%p, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_clear_int_parameter(0x%p, %s)\n", (const void *) v, parameter); if (item) stp_list_item_destroy(list, item); @@ -910,8 +913,8 @@ stp_get_int_parameter(const stp_vars_t *v, const char *parameter) else { stp_parameter_description_destroy(&desc); - stp_erprintf - ("Gutenprint: Attempt to retrieve unset integer parameter %s\n", + stp_eprintf + (v, "Gutenprint: Attempt to retrieve unset integer parameter %s\n", parameter); return 0; } @@ -924,7 +927,7 @@ stp_set_boolean_parameter(stp_vars_t *v, const char *parameter, int ival) stp_list_t *list = v->params[STP_PARAMETER_TYPE_BOOLEAN]; value_t *val; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_set_boolean_parameter(0x%p, %s, %d)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_boolean_parameter(0x%p, %s, %d)\n", (const void *) v, parameter, ival); if (item) { @@ -954,7 +957,7 @@ stp_set_default_boolean_parameter(stp_vars_t *v, const char *parameter, stp_list_t *list = v->params[STP_PARAMETER_TYPE_BOOLEAN]; value_t *val; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_set_default_boolean_parameter(0x%p, %s, %d)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_default_boolean_parameter(0x%p, %s, %d)\n", (const void *) v, parameter, ival); if (!item) { @@ -976,7 +979,7 @@ stp_clear_boolean_parameter(stp_vars_t *v, const char *parameter) { stp_list_t *list = v->params[STP_PARAMETER_TYPE_BOOLEAN]; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_clear_boolean_parameter(0x%p, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_clear_boolean_parameter(0x%p, %s)\n", (const void *) v, parameter); if (item) stp_list_item_destroy(list, item); @@ -1006,8 +1009,8 @@ stp_get_boolean_parameter(const stp_vars_t *v, const char *parameter) else { stp_parameter_description_destroy(&desc); - stp_erprintf - ("Gutenprint: Attempt to retrieve unset boolean parameter %s\n", + stp_eprintf + (v, "Gutenprint: Attempt to retrieve unset boolean parameter %s\n", parameter); return 0; } @@ -1020,7 +1023,7 @@ stp_set_dimension_parameter(stp_vars_t *v, const char *parameter, stp_dimension_ stp_list_t *list = v->params[STP_PARAMETER_TYPE_DIMENSION]; value_t *val; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_set_dimension_parameter(0x%p, %s, %f)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_dimension_parameter(0x%p, %s, %f)\n", (const void *) v, parameter, sval); if (item) { @@ -1047,7 +1050,7 @@ stp_set_default_dimension_parameter(stp_vars_t *v, const char *parameter, stp_list_t *list = v->params[STP_PARAMETER_TYPE_DIMENSION]; value_t *val; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_set_default_dimension_parameter(0x%p, %s, %f)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_default_dimension_parameter(0x%p, %s, %f)\n", (const void *) v, parameter, sval); if (!item) { @@ -1066,7 +1069,7 @@ stp_clear_dimension_parameter(stp_vars_t *v, const char *parameter) { stp_list_t *list = v->params[STP_PARAMETER_TYPE_DIMENSION]; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_clear_dimension_parameter(0x%p, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_clear_dimension_parameter(0x%p, %s)\n", (const void *) v, parameter); if (item) stp_list_item_destroy(list, item); @@ -1096,8 +1099,8 @@ stp_get_dimension_parameter(const stp_vars_t *v, const char *parameter) else { stp_parameter_description_destroy(&desc); - stp_erprintf - ("Gutenprint: Attempt to retrieve unset dimension parameter %s\n", + stp_eprintf + (v, "Gutenprint: Attempt to retrieve unset dimension parameter %s\n", parameter); return 0; } @@ -1110,7 +1113,7 @@ stp_set_float_parameter(stp_vars_t *v, const char *parameter, double dval) stp_list_t *list = v->params[STP_PARAMETER_TYPE_DOUBLE]; value_t *val; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_set_float_parameter(0x%p, %s, %f)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_float_parameter(0x%p, %s, %f)\n", (const void *) v, parameter, dval); if (item) { @@ -1137,7 +1140,7 @@ stp_set_default_float_parameter(stp_vars_t *v, const char *parameter, stp_list_t *list = v->params[STP_PARAMETER_TYPE_DOUBLE]; value_t *val; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_set_default_float_parameter(0x%p, %s, %f)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_set_default_float_parameter(0x%p, %s, %f)\n", (const void *) v, parameter, dval); if (!item) { @@ -1156,7 +1159,7 @@ stp_clear_float_parameter(stp_vars_t *v, const char *parameter) { stp_list_t *list = v->params[STP_PARAMETER_TYPE_DOUBLE]; stp_list_item_t *item = stp_list_get_item_by_name(list, parameter); - stp_deprintf(STP_DBG_VARS, "stp_clear_float_parameter(0x%p, %s)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_clear_float_parameter(0x%p, %s)\n", (const void *) v, parameter); if (item) stp_list_item_destroy(list, item); @@ -1186,8 +1189,8 @@ stp_get_float_parameter(const stp_vars_t *v, const char *parameter) else { stp_parameter_description_destroy(&desc); - stp_erprintf - ("Gutenprint: Attempt to retrieve unset float parameter %s\n", + stp_eprintf + (v, "Gutenprint: Attempt to retrieve unset float parameter %s\n", parameter); return 1.0; } @@ -1213,7 +1216,7 @@ stp_scale_float_parameter(stp_vars_t *v, const char *parameter, val = desc.deflt.dbl; stp_parameter_description_destroy(&desc); } - stp_deprintf(STP_DBG_VARS, "stp_scale_float_parameter(%p, %s, %f*%f)\n", + stp_dprintf(STP_DBG_VARS, v, "stp_scale_float_parameter(%p, %s, %f*%f)\n", (const void *) v, parameter, val, scale); stp_set_float_parameter(v, parameter, val * scale); } @@ -1387,7 +1390,7 @@ void \ stp_set_##type##_parameter_active(stp_vars_t *v, const char *parameter, \ stp_parameter_activity_t active) \ { \ - stp_deprintf(STP_DBG_VARS, \ + stp_dprintf(STP_DBG_VARS, v, \ "stp_set_%s_parameter_active(0x%p, %s, %d)\n", \ #type, (const void *) v, parameter, active); \ stp_set_parameter_active(v, parameter, active, index); \ @@ -1434,6 +1437,12 @@ stp_vars_copy(stp_vars_t *vd, const stp_vars_t *vs) if (vs == vd) return; + stp_set_outdata(vd, stp_get_outdata(vs)); + stp_set_errdata(vd, stp_get_errdata(vs)); + stp_set_dbgdata(vd, stp_get_dbgdata(vs)); + stp_set_outfunc(vd, stp_get_outfunc(vs)); + stp_set_errfunc(vd, stp_get_errfunc(vs)); + stp_set_dbgfunc(vd, stp_get_dbgfunc(vs)); stp_set_driver(vd, stp_get_driver(vs)); stp_set_color_conversion(vd, stp_get_color_conversion(vs)); stp_set_left(vd, stp_get_left(vs)); @@ -1442,10 +1451,6 @@ stp_vars_copy(stp_vars_t *vd, const stp_vars_t *vs) stp_set_height(vd, stp_get_height(vs)); stp_set_page_width(vd, stp_get_page_width(vs)); stp_set_page_height(vd, stp_get_page_height(vs)); - stp_set_outdata(vd, stp_get_outdata(vs)); - stp_set_errdata(vd, stp_get_errdata(vs)); - stp_set_outfunc(vd, stp_get_outfunc(vs)); - stp_set_errfunc(vd, stp_get_errfunc(vs)); for (i = 0; i < STP_PARAMETER_TYPE_INVALID; i++) { stp_list_destroy(vd->params[i]); @@ -1457,7 +1462,7 @@ stp_vars_copy(stp_vars_t *vd, const stp_vars_t *vs) } void -stpi_vars_print_error(const stp_vars_t *v, const char *prefix) +stp_vars_print_error(const stp_vars_t *v, const char *prefix) { int i; char *cptr; @@ -1473,13 +1478,15 @@ stpi_vars_print_error(const stp_vars_t *v, const char *prefix) "Dimension", "(Inactive)" }; - stp_erprintf("%s: Gutenprint: === BEGIN GUTENPRINT SETTINGS ===\n", prefix); - stp_erprintf("%s: Gutenprint: Driver: %s\n", prefix, stp_get_driver(v)); - stp_erprintf("%s: Gutenprint: L: %f T: %f W: %f H: %f\n", prefix, stp_get_left(v), - stp_get_top(v), stp_get_width(v), stp_get_height(v)); - stp_erprintf("%s: Gutenprint: Page: %fx%f\n", prefix, stp_get_page_width(v), - stp_get_page_height(v)); - stp_erprintf("%s: Gutenprint: Conversion: %s\n", prefix, stp_get_color_conversion(v)); + if (! prefix) + prefix = ""; + stp_eprintf(v, "%s: Gutenprint: === BEGIN GUTENPRINT SETTINGS ===\n", prefix); + stp_eprintf(v, "%s: Gutenprint: Driver: %s\n", prefix, stp_get_driver(v)); + stp_eprintf(v, "%s: Gutenprint: L: %f T: %f W: %f H: %f\n", prefix, stp_get_left(v), + stp_get_top(v), stp_get_width(v), stp_get_height(v)); + stp_eprintf(v, "%s: Gutenprint: Page: %fx%f\n", prefix, stp_get_page_width(v), + stp_get_page_height(v)); + stp_eprintf(v, "%s: Gutenprint: Conversion: %s\n", prefix, stp_get_color_conversion(v)); for (i = 0; i < STP_PARAMETER_TYPE_INVALID; i++) { const stp_list_item_t *item = @@ -1499,9 +1506,9 @@ stpi_vars_print_error(const stp_vars_t *v, const char *prefix) *cptr = ' '; cptr++; } - stp_erprintf("%s: Gutenprint: (%s) (%i) (%s) [%s]\n", prefix, - val->name, val->active, data_types[val->typ], - crep ? crep : "NULL"); + stp_eprintf(v, "%s: Gutenprint: (%s) (%i) (%s) [%s]\n", prefix, + val->name, val->active, data_types[val->typ], + crep ? crep : "NULL"); if (crep) stp_free(crep); break; @@ -1511,27 +1518,27 @@ stpi_vars_print_error(const stp_vars_t *v, const char *prefix) case STP_PARAMETER_TYPE_FILE: case STP_PARAMETER_TYPE_RAW: crep = stp_rawtoxmlstr(&(val->value.rval)); - stp_erprintf("%s: Gutenprint: (%s) (%i) (%s) [%s]\n", prefix, - val->name, val->active, data_types[val->typ], - crep ? crep : "NULL"); + stp_eprintf(v, "%s: Gutenprint: (%s) (%i) (%s) [%s]\n", prefix, + val->name, val->active, data_types[val->typ], + crep ? crep : "NULL"); if (crep) stp_free(crep); break; case STP_PARAMETER_TYPE_DIMENSION: - stp_erprintf("%s: Gutenprint: (%s) (%i) (%s) [%f]\n", prefix, - val->name, val->active, data_types[val->typ], - val->value.sval); + stp_eprintf(v, "%s: Gutenprint: (%s) (%i) (%s) [%f]\n", prefix, + val->name, val->active, data_types[val->typ], + val->value.sval); break; case STP_PARAMETER_TYPE_INT: case STP_PARAMETER_TYPE_BOOLEAN: - stp_erprintf("%s: Gutenprint: (%s) (%i) (%s) [%d]\n", prefix, - val->name, val->active, data_types[val->typ], - val->value.ival); + stp_eprintf(v, "%s: Gutenprint: (%s) (%i) (%s) [%d]\n", prefix, + val->name, val->active, data_types[val->typ], + val->value.ival); break; case STP_PARAMETER_TYPE_DOUBLE: - stp_erprintf("%s: Gutenprint: (%s) (%i) (%s) [%f]\n", prefix, - val->name, val->active, data_types[val->typ], - val->value.dval); + stp_eprintf(v, "%s: Gutenprint: (%s) (%i) (%s) [%f]\n", prefix, + val->name, val->active, data_types[val->typ], + val->value.dval); break; default: break; @@ -1539,7 +1546,7 @@ stpi_vars_print_error(const stp_vars_t *v, const char *prefix) item = stp_list_item_next(item); } } - stp_erprintf("%s: Gutenprint: === END GUTENPRINT SETTINGS ===\n", prefix); + stp_eprintf(v, "%s: Gutenprint: === END GUTENPRINT SETTINGS ===\n", prefix); } void @@ -1611,75 +1618,75 @@ debug_print_parameter_description(const stp_parameter_t *desc, const char *who, char *curve; if (! (stp_get_debug_level() & STP_DBG_VARS)) return; - stp_deprintf(STP_DBG_VARS, "Describe %s: vars 0x%p from %s type %d class %d level %d\n", + stp_dprintf(STP_DBG_VARS, v, "Describe %s: vars 0x%p from %s type %d class %d level %d\n", desc->name, (const void *) v, who, desc->p_type, desc->p_class, desc->p_level); - stp_deprintf(STP_DBG_VARS, " driver %s mandatory %d active %d channel %d verify %d ro %d\n", + stp_dprintf(STP_DBG_VARS, v, " driver %s mandatory %d active %d channel %d verify %d ro %d\n", stp_get_driver(v), desc->is_mandatory, desc->is_active, desc->channel, desc->verify_this_parameter, desc->read_only); switch (desc->p_type) { case STP_PARAMETER_TYPE_STRING_LIST: - stp_deprintf(STP_DBG_VARS, + stp_dprintf(STP_DBG_VARS, v, " String default: %s\n", desc->deflt.str ? desc->deflt.str : "(null)"); if (desc->bounds.str) for (i = 0; i < stp_string_list_count(desc->bounds.str); i++) { if (i == 0) - stp_deprintf(STP_DBG_VARS, " Choices: %s\n", + stp_dprintf(STP_DBG_VARS, v, " Choices: %s\n", stp_string_list_param(desc->bounds.str, i)->name); else - stp_deprintf(STP_DBG_VARS, " : %s\n", + stp_dprintf(STP_DBG_VARS, v, " : %s\n", stp_string_list_param(desc->bounds.str, i)->name); } break; case STP_PARAMETER_TYPE_INT: - stp_deprintf(STP_DBG_VARS, + stp_dprintf(STP_DBG_VARS, v, " Integer default: %d Bounds: %d %d\n", desc->deflt.integer, desc->bounds.integer.lower, desc->bounds.integer.upper); break; case STP_PARAMETER_TYPE_DIMENSION: - stp_deprintf(STP_DBG_VARS, + stp_dprintf(STP_DBG_VARS, v, " Dimension default: %f Bounds: %f %f\n", desc->deflt.dimension, desc->bounds.dimension.lower, desc->bounds.dimension.upper); break; case STP_PARAMETER_TYPE_BOOLEAN: - stp_deprintf(STP_DBG_VARS, + stp_dprintf(STP_DBG_VARS, v, " Boolean default: %d\n", desc->deflt.boolean); break; case STP_PARAMETER_TYPE_DOUBLE: - stp_deprintf(STP_DBG_VARS, + stp_dprintf(STP_DBG_VARS, v, " Double default: %f Bounds: %f %f\n", desc->deflt.dbl, desc->bounds.dbl.lower, desc->bounds.dbl.upper); break; case STP_PARAMETER_TYPE_FILE: - stp_deprintf(STP_DBG_VARS, " File (no default)\n"); + stp_dprintf(STP_DBG_VARS, v, " File (no default)\n"); break; case STP_PARAMETER_TYPE_RAW: - stp_deprintf(STP_DBG_VARS, " Raw (no default)\n"); + stp_dprintf(STP_DBG_VARS, v, " Raw (no default)\n"); break; case STP_PARAMETER_TYPE_CURVE: curve = stp_curve_write_string(desc->deflt.curve); - stp_deprintf(STP_DBG_VARS, + stp_dprintf(STP_DBG_VARS, v, " Curve default: %s\n", curve); stp_free(curve); curve = stp_curve_write_string(desc->bounds.curve); - stp_deprintf(STP_DBG_VARS, + stp_dprintf(STP_DBG_VARS, v, " bounds: %s\n", curve); stp_free(curve); break; case STP_PARAMETER_TYPE_ARRAY: - stp_deprintf(STP_DBG_VARS, " Array\n"); + stp_dprintf(STP_DBG_VARS, v, " Array\n"); break; case STP_PARAMETER_TYPE_INVALID: - stp_deprintf(STP_DBG_VARS, " *** Invalid ***\n"); + stp_dprintf(STP_DBG_VARS, v, " *** Invalid ***\n"); break; default: - stp_deprintf(STP_DBG_VARS, " Unknown type!\n"); + stp_dprintf(STP_DBG_VARS, v, " Unknown type!\n"); } } @@ -1713,7 +1720,7 @@ stp_describe_parameter(const stp_vars_t *v, const char *name, if (description->p_type != STP_PARAMETER_TYPE_INVALID) debug_print_parameter_description(description, "generic", v); else - stp_deprintf(STP_DBG_VARS, "Describing invalid parameter %s\n", name); + stp_dprintf(STP_DBG_VARS, v, "Describing invalid parameter %s\n", name); } stp_string_list_t * @@ -1948,10 +1955,10 @@ fill_vars_from_xmltree(stp_mxml_node_t *prop, stp_mxml_node_t *root, char *locale = stp_strdup(setlocale(LC_ALL, NULL)); setlocale(LC_ALL, "C"); #endif - stp_deprintf(STP_DBG_XML, "Enter fill_vars_from_xmltree()\n"); + stp_dprintf(STP_DBG_XML, v, "Enter fill_vars_from_xmltree()\n"); while (prop) { - stp_deprintf(STP_DBG_XML, "Property type %d (%s)\n", prop->type, + stp_dprintf(STP_DBG_XML, v, "Property type %d (%s)\n", prop->type, prop->type == STP_MXML_ELEMENT ? prop->value.element.name : (prop->type == STP_MXML_TEXT ? prop->value.text.string : "(nil)")); if (prop->type == STP_MXML_ELEMENT && @@ -1962,7 +1969,7 @@ fill_vars_from_xmltree(stp_mxml_node_t *prop, stp_mxml_node_t *root, const char *p_type = stp_mxmlElementGetAttr(prop, "type"); const char *p_name = stp_mxmlElementGetAttr(prop, "name"); if (!strcmp(prop_name, "parameter") && (!p_type || !p_name)) - stp_erprintf("Bad property found!\n"); + stp_eprintf(v, "Bad property found!\n"); else if (!strcmp(prop_name, "parameter")) { const char *active = stp_mxmlElementGetAttr(prop, "active"); @@ -1976,7 +1983,7 @@ fill_vars_from_xmltree(stp_mxml_node_t *prop, stp_mxml_node_t *root, STP_MXML_DESCEND); STPI_ASSERT(cnode && cnode->type == STP_MXML_ELEMENT && cnode->child, v); - stp_deprintf(STP_DBG_XML, "Found parameter ref %s\n", cref); + stp_dprintf(STP_DBG_XML, v, "Found parameter ref %s\n", cref); cnode = cnode->child; } if (strcmp(p_type, "float") == 0) @@ -1987,7 +1994,7 @@ fill_vars_from_xmltree(stp_mxml_node_t *prop, stp_mxml_node_t *root, (v, p_name, stp_xmlstrtod(cnode->value.text.string)); type = STP_PARAMETER_TYPE_DOUBLE; if (stp_get_debug_level() & STP_DBG_XML) - stp_deprintf(STP_DBG_XML, " Set float '%s' to '%s' (%f)\n", + stp_dprintf(STP_DBG_XML, v, " Set float '%s' to '%s' (%f)\n", p_name, cnode->value.text.string, stp_get_float_parameter(v, p_name)); } @@ -2000,7 +2007,7 @@ fill_vars_from_xmltree(stp_mxml_node_t *prop, stp_mxml_node_t *root, (v, p_name, (int) stp_xmlstrtol(cnode->value.text.string)); type = STP_PARAMETER_TYPE_DOUBLE; if (stp_get_debug_level() & STP_DBG_XML) - stp_deprintf(STP_DBG_XML, " Set int '%s' to '%s' (%d)\n", + stp_dprintf(STP_DBG_XML, v, " Set int '%s' to '%s' (%d)\n", p_name, cnode->value.text.string, stp_get_int_parameter(v, p_name)); } @@ -2013,7 +2020,7 @@ fill_vars_from_xmltree(stp_mxml_node_t *prop, stp_mxml_node_t *root, (v, p_name, (int) stp_xmlstrtodim(cnode->value.text.string)); type = STP_PARAMETER_TYPE_DOUBLE; if (stp_get_debug_level() & STP_DBG_XML) - stp_deprintf(STP_DBG_XML, " Set dimension '%s' to '%s' (%f)\n", + stp_dprintf(STP_DBG_XML, v, " Set dimension '%s' to '%s' (%f)\n", p_name, cnode->value.text.string, stp_get_dimension_parameter(v, p_name)); } @@ -2026,7 +2033,7 @@ fill_vars_from_xmltree(stp_mxml_node_t *prop, stp_mxml_node_t *root, (v, p_name, (int) stp_xmlstrtol(cnode->value.text.string)); type = STP_PARAMETER_TYPE_DOUBLE; if (stp_get_debug_level() & STP_DBG_XML) - stp_deprintf(STP_DBG_XML, " Set bool '%s' to '%s' (%d)\n", + stp_dprintf(STP_DBG_XML, v, " Set bool '%s' to '%s' (%d)\n", p_name, cnode->value.text.string, stp_get_boolean_parameter(v, p_name)); } @@ -2039,7 +2046,7 @@ fill_vars_from_xmltree(stp_mxml_node_t *prop, stp_mxml_node_t *root, (v, p_name, cnode->value.text.string); type = STP_PARAMETER_TYPE_DOUBLE; if (stp_get_debug_level() & STP_DBG_XML) - stp_deprintf(STP_DBG_XML, " Set string '%s' to '%s' (%s)\n", + stp_dprintf(STP_DBG_XML, v, " Set string '%s' to '%s' (%s)\n", p_name, cnode->value.text.string, stp_get_string_parameter(v, p_name)); } @@ -2052,7 +2059,7 @@ fill_vars_from_xmltree(stp_mxml_node_t *prop, stp_mxml_node_t *root, (v, p_name, cnode->value.text.string); type = STP_PARAMETER_TYPE_DOUBLE; if (stp_get_debug_level() & STP_DBG_XML) - stp_deprintf(STP_DBG_XML, " Set file '%s' to '%s' (%s)\n", + stp_dprintf(STP_DBG_XML, v, " Set file '%s' to '%s' (%s)\n", p_name, cnode->value.text.string, stp_get_file_parameter(v, p_name)); } @@ -2066,7 +2073,7 @@ fill_vars_from_xmltree(stp_mxml_node_t *prop, stp_mxml_node_t *root, { stp_set_raw_parameter(v, p_name, raw->data,raw->bytes); type = STP_PARAMETER_TYPE_DOUBLE; - stp_deprintf(STP_DBG_XML, " Set raw '%s' to '%s'\n", + stp_dprintf(STP_DBG_XML, v, " Set raw '%s' to '%s'\n", p_name, cnode->value.text.string); stp_free(stpi_cast_safe(raw->data)); stp_free(raw); @@ -2086,7 +2093,7 @@ fill_vars_from_xmltree(stp_mxml_node_t *prop, stp_mxml_node_t *root, if (stp_get_debug_level() & STP_DBG_XML) { char *cv = stp_curve_write_string(curve); - stp_deprintf(STP_DBG_XML, " Set curve '%s' (%s)\n", + stp_dprintf(STP_DBG_XML, v, " Set curve '%s' (%s)\n", p_name, cv); stp_free(cv); } @@ -2102,12 +2109,12 @@ fill_vars_from_xmltree(stp_mxml_node_t *prop, stp_mxml_node_t *root, STPI_ASSERT(array, v); type = STP_PARAMETER_TYPE_DOUBLE; stp_set_array_parameter(v, p_name, array); - stp_deprintf(STP_DBG_XML, " Set array '%s'\n", p_name); + stp_dprintf(STP_DBG_XML, v, " Set array '%s'\n", p_name); stp_array_destroy(array); } else { - stp_erprintf("Bad property %s type %s\n", p_name, p_type); + stp_eprintf(v, "Bad property %s type %s\n", p_name, p_type); } if (active && type != STP_PARAMETER_TYPE_INVALID) { @@ -2122,7 +2129,7 @@ fill_vars_from_xmltree(stp_mxml_node_t *prop, stp_mxml_node_t *root, } else if (child->type == STP_MXML_TEXT) { - stp_deprintf(STP_DBG_XML, " Set property %s ('%s')\n", + stp_dprintf(STP_DBG_XML, v, " Set property %s ('%s')\n", prop_name, child->value.text.string ? child->value.text.string : "(nil)"); if (!strcmp(prop_name, "driver")) @@ -2146,12 +2153,12 @@ fill_vars_from_xmltree(stp_mxml_node_t *prop, stp_mxml_node_t *root, else { if (prop->type == STP_MXML_ELEMENT) - stp_deprintf(STP_DBG_XML, "Unexpected node type %d name %s\n", + stp_dprintf(STP_DBG_XML, v, "Unexpected node type %d name %s\n", prop->type, prop->value.element.name); } prop = prop->next; } - stp_deprintf(STP_DBG_XML, "End fill_vars_from_xmltree()\n"); + stp_dprintf(STP_DBG_XML, v, "End fill_vars_from_xmltree()\n"); #ifdef HAVE_LOCALE_H setlocale(LC_ALL, locale); stp_free(locale); diff --git a/src/main/print-version.c b/src/main/print-version.c index ca8ac3c..2ddd70e 100644 --- a/src/main/print-version.c +++ b/src/main/print-version.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* diff --git a/src/main/print-weave.c b/src/main/print-weave.c index c9f36ff..f510e01 100644 --- a/src/main/print-weave.c +++ b/src/main/print-weave.c @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -1572,9 +1571,9 @@ stp_flush_all(stp_vars_t *v) } static void -finalize_row(stp_vars_t *v, int row) +finalize_row(stp_vars_t *v, stpi_softweave_t *sw) { - stpi_softweave_t *sw = get_sw(v); + int row = sw->lineno; int i,j; stp_dprintf(STP_DBG_ROWS, v, "Finalizing row %d...\n", row); for (i = 0; i < sw->oversample; i++) @@ -1686,7 +1685,7 @@ stp_write_weave(stp_vars_t *v, unsigned char *const cols[]) sw->current_vertical_subpass++; if (sw->current_vertical_subpass >= sw->vertical_oversample) { - finalize_row(v, sw->lineno); + finalize_row(v, sw); sw->lineno++; sw->current_vertical_subpass = 0; } diff --git a/src/main/printers.c b/src/main/printers.c index d9fb458..58787fa 100644 --- a/src/main/printers.c +++ b/src/main/printers.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -31,6 +30,7 @@ #include <gutenprint/gutenprint.h> #include "gutenprint-internal.h" #include <gutenprint/gutenprint-intl-internal.h> +#include <stdint.h> #include <math.h> #ifdef HAVE_LIMITS_H #include <limits.h> @@ -197,13 +197,6 @@ stp_printer_get_manufacturer(const stp_printer_t *printer) } const char * -stp_printer_get_foomatic_id(const stp_printer_t *printer) -{ - stp_erprintf("stp_printer_get_foomatic_id is DEPRECATED\n"); - return NULL; -} - -const char * stp_printer_get_comment(const stp_printer_t *printer) { return printer->comment; @@ -278,13 +271,6 @@ stp_get_printer_by_device_id(const char *device_id) return NULL; } -const stp_printer_t * -stp_get_printer_by_foomatic_id(const char *foomatic_id) -{ - stp_erprintf("stp_get_printer_by_foomatic_id is DEPRECATED\n"); - return NULL; -} - int stp_get_printer_index_by_driver(const char *driver) { @@ -508,6 +494,8 @@ stp_describe_output(const stp_vars_t *v) int stp_verify(stp_vars_t *v) { + if (stp_get_verified(v)) + return 1; const stp_printfuncs_t *printfuncs = stpi_get_printfuncs(stp_get_printer(v)); stp_vars_t *nv = stp_vars_create_copy(v); @@ -566,6 +554,14 @@ stp_get_external_options(const stp_vars_t *v) return NULL; } +const stp_papersize_t * +stpi_printer_describe_papersize(const stp_vars_t *v, const char *name) +{ + const stp_printfuncs_t *printfuncs = + stpi_get_printfuncs(stp_get_printer(v)); + return (printfuncs->describe_papersize)(v, name); +} + static int verify_string_param(const stp_vars_t *v, const char *parameter, stp_parameter_t *desc, int quiet) @@ -578,7 +574,6 @@ verify_string_param(const stp_vars_t *v, const char *parameter, const char *checkval = stp_get_string_parameter(v, parameter); stp_string_list_t *vptr = desc->bounds.str; size_t count = 0; - int i; stp_dprintf(STP_DBG_VARS, v, " value %s\n", checkval ? checkval : "(null)"); if (vptr) @@ -597,12 +592,8 @@ verify_string_param(const stp_vars_t *v, const char *parameter, } else if (count > 0) { - for (i = 0; i < count; i++) - if (!strcmp(checkval, stp_string_list_param(vptr, i)->name)) - { - answer = PARAMETER_OK; - break; - } + if (stp_string_list_is_present(vptr, checkval)) + answer = PARAMETER_OK; if (!answer && !quiet) stp_eprintf(v, _("`%s' is not a valid %s\n"), checkval, parameter); } @@ -956,8 +947,76 @@ stp_find_params(const char *name, const char *family) return NULL; } +/* Why couldn't strcmp be a valid comparison function... */ +static int +compare_names(const void *n1, const void *n2) +{ + return strcmp((const char *) n2, (const char *) n2); +} + +void +stpi_find_duplicate_printers(void) +{ + size_t nelts = stp_list_get_length(printer_list); + const char **str_data = stp_zalloc(sizeof(const char *) * nelts); + stp_list_item_t *printer_item = stp_list_get_start(printer_list); + size_t i = 0; + int found_dups = 0; + const stp_printer_t *printer; + while (printer_item) + { + printer = stp_list_item_get_data(printer_item); + STPI_ASSERT(i < nelts, NULL); + str_data[i] = printer->driver; + printer_item = stp_list_item_next(printer_item); + i++; + } + qsort(str_data, nelts, sizeof(const char *), compare_names); + for (i = 0; i < nelts - 1; i++) + { + if (!strcmp(str_data[i], str_data[i+1])) + { + printer_item = + stp_list_get_item_by_name(printer_list, str_data[i]); + printer = stp_list_item_get_data(printer_item); + stp_erprintf("Duplicate printer entry '%s' (%s)\n", + printer->driver, printer->long_name); + found_dups++; + } + } + printer_item = stp_list_get_start(printer_list); + i = 0; + while (printer_item) + { + printer = stp_list_item_get_data(printer_item); + STPI_ASSERT(i < nelts, NULL); + str_data[i] = printer->long_name; + printer_item = stp_list_item_next(printer_item); + i++; + } + qsort(str_data, nelts, sizeof(const char *), compare_names); + for (i = 0; i < nelts - 1; i++) + { + if (!strcmp(str_data[i], str_data[i+1])) + { + printer_item = + stp_list_get_item_by_long_name(printer_list, str_data[i]); + printer = stp_list_item_get_data(printer_item); + stp_erprintf("Duplicate printer entry '%s' (%s)\n", + printer->driver, printer->long_name); + found_dups++; + } + } + stp_free(str_data); + if (found_dups > 0) + { + stp_erprintf("FATAL Duplicate printers in printer list. Aborting!\n"); + stp_abort(); + } +} + int -stp_family_register(stp_list_t *family) +stpi_family_register(stp_list_t *family) { stp_list_item_t *printer_item; const stp_printer_t *printer; @@ -972,25 +1031,21 @@ stp_family_register(stp_list_t *family) if (family) { + /* Check for duplicates after loading printers */ printer_item = stp_list_get_start(family); while(printer_item) { 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); + stp_list_item_create(printer_list, NULL, printer); printer_item = stp_list_item_next(printer_item); } } - return 0; } int -stp_family_unregister(stp_list_t *family) +stpi_family_unregister(stp_list_t *family) { stp_list_item_t *printer_item; stp_list_item_t *old_printer_item; @@ -1256,5 +1311,4 @@ void stpi_init_printer(void) { stp_register_xml_parser("printdef", stpi_xml_process_printdef); - stp_register_xml_preload("printers.xml"); } diff --git a/src/main/refcache.c b/src/main/refcache.c new file mode 100644 index 0000000..9664528 --- /dev/null +++ b/src/main/refcache.c @@ -0,0 +1,231 @@ +/* + * Object cache for Gutenprint + * + * Copyright 2017 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, see <https://www.gnu.org/licenses/>. + */ + +#include <gutenprint/gutenprint.h> +#include "gutenprint-internal.h" +#include <gutenprint/gutenprint-intl-internal.h> +#include <ctype.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> +#include <errno.h> + +/* + * Lists aren't exactly the right data structure for this...if we start + * getting into enough items for it to matter, we'll reimplement it them. + */ + +static stp_list_t *global_cache_list = NULL; +static stp_string_list_t *global_cache_names = NULL; + +typedef struct stp_cache +{ + char *name; + stp_list_t *cache; + stp_string_list_t *cache_items; +} stp_refcache_t; + +typedef struct +{ + char *name; + void *content; +} stp_refcache_item_t; + +static const char * +stp_refcache_namefunc(const void *cache) +{ + return ((const stp_refcache_t *) cache)->name; +} + +static void +stp_refcache_freefunc(void *item) +{ + stp_refcache_t *cache = (stp_refcache_t *) item; + STP_SAFE_FREE(cache->name); + stp_list_destroy(cache->cache); + stp_string_list_destroy(cache->cache_items); + STP_SAFE_FREE(item); +} + +static const char * +stp_refcache_item_namefunc(const void *item) +{ + return ((const stp_refcache_item_t *) item)->name; +} + +static void +stp_refcache_item_freefunc(void *item) +{ + stp_refcache_item_t *cache_item = (stp_refcache_item_t *) item; + STP_SAFE_FREE(cache_item->name); + STP_SAFE_FREE(item); +} + +static void +check_stp_cache(void) +{ + if (! global_cache_list) + { + global_cache_list = stp_list_create(); + stp_list_set_namefunc(global_cache_list, stp_refcache_namefunc); + stp_list_set_freefunc(global_cache_list, stp_refcache_freefunc); + global_cache_names = stp_string_list_create(); + } +} + +int +stp_refcache_create(const char *name) +{ + check_stp_cache(); + if (stp_list_get_item_by_name(global_cache_list, name)) + return 0; + else + { + stp_refcache_t *cache = stp_zalloc(sizeof(stp_refcache_t)); + cache->name = stp_strdup(name); + cache->cache = stp_list_create(); + cache->cache_items = stp_string_list_create(); + stp_list_set_namefunc(cache->cache, stp_refcache_item_namefunc); + stp_list_set_freefunc(cache->cache, stp_refcache_item_freefunc); + stp_list_item_create(global_cache_list, NULL, cache); + stp_string_list_add_string_unsafe(global_cache_names, name, name); + return 1; + } +} + +static stp_refcache_t * +find_cache_named(const char *cache) +{ + check_stp_cache(); + stp_list_item_t *item = stp_list_get_item_by_name(global_cache_list, cache); + if (item) + return (stp_refcache_t *) stp_list_item_get_data(item); + else + return NULL; +} + +static stp_refcache_t * +find_or_create_cache_named(const char *cache) +{ + check_stp_cache(); + stp_list_item_t *item = stp_list_get_item_by_name(global_cache_list, cache); + if (!item) + { + stp_refcache_create(cache); + item = stp_list_get_item_by_name(global_cache_list, cache); + } + return (stp_refcache_t *) stp_list_item_get_data(item); +} + +void * +stp_refcache_find_item(const char *cache, const char *item) +{ + stp_refcache_t *cache_impl = find_cache_named(cache); + if (cache_impl) + { + stp_list_item_t *item_impl = + stp_list_get_item_by_name(cache_impl->cache, item); + if (item_impl) + return ((stp_refcache_item_t *)stp_list_item_get_data(item_impl))->content; + } + return NULL; +} + +static void +add_item_to_cache(stp_refcache_t *cache, const char *item, void *data) +{ + stp_refcache_item_t *item_impl = stp_zalloc(sizeof(stp_refcache_item_t)); + item_impl->name = stp_strdup(item); + item_impl->content = data; + stp_list_item_create(cache->cache, NULL, item_impl); + stp_string_list_add_string_unsafe(cache->cache_items, item, item); +} + +int +stp_refcache_add_item(const char *cache, const char *item, void *data) +{ + stp_refcache_t *cache_impl = find_or_create_cache_named(cache); + if (!stp_list_get_item_by_name(cache_impl->cache, item)) + { + add_item_to_cache(cache_impl, item, data); + return 1; + } + return 0; +} + +void +stp_refcache_remove_item(const char *cache, const char *item) +{ + stp_refcache_t *cache_impl = find_cache_named(cache); + if (cache_impl) + { + stp_list_item_t *item_impl = + stp_list_get_item_by_name(cache_impl->cache, item); + if (item_impl) + { + stp_list_item_destroy(cache_impl->cache, item_impl); + stp_string_list_remove_string(cache_impl->cache_items, item); + } + } +} + +void +stp_refcache_replace_item(const char *cache, const char *item, void *data) +{ + stp_refcache_t *cache_impl = find_or_create_cache_named(cache); + stp_list_item_t *item_item = + stp_list_get_item_by_name(cache_impl->cache, item); + if (item_item) + { + stp_refcache_item_t *item_impl = + (stp_refcache_item_t *) stp_list_item_get_data(item_item); + item_impl->content = data; + } + else + { + add_item_to_cache(cache_impl, item, data); + } +} + +void +stp_refcache_destroy(const char *cache) +{ + check_stp_cache(); + stp_list_item_t *item = stp_list_get_item_by_name(global_cache_list, cache); + if (item) + { + stp_list_item_destroy(global_cache_list, item); + stp_string_list_remove_string(global_cache_names, cache); + } +} + +const stp_string_list_t * +stp_refcache_list_caches(void) +{ + check_stp_cache(); + return global_cache_names; +} + +const stp_string_list_t * +stp_refcache_list_cache_items(const char *cache) +{ + stp_refcache_t *cache_impl = find_cache_named(cache); + return cache_impl ? cache_impl->cache_items : NULL; +} diff --git a/src/main/sequence.c b/src/main/sequence.c index 9792181..8be0911 100644 --- a/src/main/sequence.c +++ b/src/main/sequence.c @@ -17,8 +17,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H @@ -254,7 +253,7 @@ stp_sequence_set_data(stp_sequence_t *sequence, sequence->size = size; if (sequence->data) stp_free(sequence->data); - sequence->data = stp_zalloc(sizeof(double) * size); + sequence->data = stp_malloc(sizeof(double) * size); memcpy(sequence->data, data, (sizeof(double) * size)); invalidate_auxilliary_data(sequence); sequence->recompute_range = 1; @@ -384,6 +383,12 @@ stp_sequence_create_from_xmltree(stp_mxml_node_t *da) if (child->type == STP_MXML_TEXT) { char *endptr; + /* + * Explicitly documented that callers to strtod should clear + * errno before calling it if they want to check the return + * status. + */ + errno = 0; double tmpval = strtod(child->value.text.string, &endptr); if (endptr == child->value.text.string) { @@ -399,8 +404,9 @@ stp_sequence_create_from_xmltree(stp_mxml_node_t *da) { stp_erprintf("stp_sequence_create_from_xmltree: " "read aborted: datum out of bounds: " - "%g (require %g <= x <= %g), n = %d\n", - tmpval, low, high, i); + "%g %d %s (require %g <= x <= %g), n = %d\n", + tmpval, errno, child->value.text.string, + low, high, i); goto error; } /* Datum was valid, so now add to the sequence */ diff --git a/src/main/string-list.c b/src/main/string-list.c index 3d39822..ac888ef 100644 --- a/src/main/string-list.c +++ b/src/main/string-list.c @@ -16,8 +16,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H diff --git a/src/main/xml.c b/src/main/xml.c index c4c92f4..5587a12 100644 --- a/src/main/xml.c +++ b/src/main/xml.c @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ @@ -51,6 +50,10 @@ static stp_list_t *stpi_xml_registry; static stp_list_t *stpi_xml_preloads; +static stp_list_t *stpi_xml_files_loaded; + +static stp_string_list_t *cached_xml_files; + static const char * xml_registry_namefunc(const void *item) { @@ -130,16 +133,28 @@ static int xml_is_initialised; /* Flag for init */ void stp_xml_preinit(void) { - static int xml_is_preinitialized = 0; - if (!xml_is_preinitialized) + if (! stpi_xml_registry) { stpi_xml_registry = stp_list_create(); stp_list_set_freefunc(stpi_xml_registry, xml_registry_freefunc); stp_list_set_namefunc(stpi_xml_registry, xml_registry_namefunc); + } + if (! stpi_xml_preloads) + { stpi_xml_preloads = stp_list_create(); stp_list_set_freefunc(stpi_xml_preloads, xml_preload_freefunc); stp_list_set_namefunc(stpi_xml_preloads, xml_preload_namefunc); } + if (! stpi_xml_files_loaded) + { + stpi_xml_files_loaded = stp_list_create(); + stp_list_set_freefunc(stpi_xml_files_loaded, xml_preload_freefunc); + stp_list_set_namefunc(stpi_xml_files_loaded, xml_preload_namefunc); + } + if (! cached_xml_files) + { + cached_xml_files = stp_string_list_create(); + } } /* @@ -183,11 +198,14 @@ stp_xml_exit(void) return; } else if (xml_is_initialised < 1) - return; + { + stp_erprintf("stp_xml_exit: unmatched stp_xml_init!\n"); + stp_abort(); + } /* Restore locale */ #ifdef HAVE_LOCALE_H - stp_deprintf(STP_DBG_XML, "stp_xml_init: restoring locale %s\n", saved_locale); + stp_deprintf(STP_DBG_XML, "stp_xml_exit: restoring locale %s\n", saved_locale); setlocale(LC_ALL, saved_locale); stp_free(saved_locale); saved_locale = NULL; @@ -198,21 +216,19 @@ stp_xml_exit(void) void stp_xml_parse_file_named(const char *name) { - stp_list_t *file_list = stpi_list_files_on_data_path(name); /* List of XML files */ - stp_list_item_t *item; /* Pointer to current list item */ - item = stp_list_get_start(file_list); - while (item) + stp_xml_preinit(); + stp_deprintf(STP_DBG_XML, "stp_xml_parse_file_named(%s)\n", name); + if (! stp_list_get_item_by_name(stpi_xml_files_loaded, name)) { - stp_deprintf(STP_DBG_XML, - "stp_xml_parse_file_named: source file: %s\n", - (const char *) stp_list_item_get_data(item)); - stp_xml_parse_file((const char *) stp_list_item_get_data(item)); - item = stp_list_item_next(item); + char *file_name = stp_path_find_file(NULL, name); + if (file_name) + { + stp_xml_parse_file(file_name); + free(file_name); + } } - stp_list_destroy(file_list); } - /* * Read all available XML files. */ @@ -239,7 +255,6 @@ stp_xml_init_defaults(void) return 0; } - /* * Parse a single XML file. */ @@ -248,55 +263,186 @@ stp_xml_parse_file(const char *file) /* File to parse */ { stp_mxml_node_t *doc; stp_mxml_node_t *cur; - FILE *fp; + int status = 0; stp_deprintf(STP_DBG_XML, "stp_xml_parse_file: reading `%s'...\n", file); - fp = fopen(file, "r"); - if (!fp) + stp_xml_init(); + + doc = stp_mxmlLoadFromFile(NULL, file, STP_MXML_NO_CALLBACK); + + if ((cur = stp_xml_get_node(doc, "gutenprint", NULL)) == NULL) { - stp_erprintf("stp_xml_parse_file: unable to open %s: %s\n", file, - strerror(errno)); - return 1; + stp_erprintf("stp_xml_parse_file: %s: parse error\n", file); + status = 1; } + else + /* The XML file was read and is the right format */ + stpi_xml_process_gutenprint(cur, file); - stp_xml_init(); + stp_mxmlDelete(doc); - doc = stp_mxmlLoadFile(NULL, fp, STP_MXML_NO_CALLBACK); - fclose(fp); + stp_xml_exit(); - cur = doc->child; - while (cur && - (cur->type != STP_MXML_ELEMENT || - (strcmp(cur->value.element.name, "gutenprint") != 0 && - strcmp(cur->value.element.name, "gimp-print") != 0))) - cur = cur->next; + return status; +} - if (cur == NULL || cur->type != STP_MXML_ELEMENT) +static stp_mxml_node_t * +xml_try_parse_file_1(const char *pathname, const char *topnodename) +{ + stp_mxml_node_t *root = + stp_mxmlLoadFromFile(NULL, pathname, STP_MXML_NO_CALLBACK); + if (root) { - stp_erprintf("stp_xml_parse_file: %s: parse error\n", file); - stp_mxmlDelete(doc); - return 1; + stp_mxml_node_t *answer = + stp_xml_get_node(root, "gutenprint", topnodename, NULL); + if (answer) + return answer; + stp_mxmlDelete(root); + return NULL; } + else + return NULL; +} + +static stp_mxml_node_t * +xml_try_parse_file(const char *pathname, const char *topnodename) +{ + stp_xml_init(); + stp_mxml_node_t *answer = xml_try_parse_file_1(pathname, topnodename); + stp_xml_exit(); + return answer; +} - if (strcmp(cur->value.element.name, "gutenprint") != 0 && - strcmp(cur->value.element.name, "gimp-print") != 0) +static void +xml_cache_file(const char *name, const char *cache, stp_mxml_node_t *node) +{ + char *addr_string; + stp_asprintf(&addr_string, "%p", (void *) node); + /* + * A given XML object should never be in multiple caches! However, + * it's possible that different nodes of the same file will be in different + * caches. + */ + STPI_ASSERT(!stp_string_list_is_present(cached_xml_files, addr_string), NULL); + if (cache) { - stp_erprintf - ("XML file of the wrong type, root node is %s != (gutenprint || gimp-print)", - cur->value.element.name); - stp_mxmlDelete(doc); - return 1; + stp_refcache_add_item(cache, name, node); + stp_string_list_add_string_unsafe(cached_xml_files, addr_string, cache); } + else + stp_string_list_add_string_unsafe(cached_xml_files, addr_string, ""); + stp_free(addr_string); +} - /* The XML file was read and is the right format */ +static stp_mxml_node_t * +xml_parse_file_from_path(const char *name, const char *topnodename, + const char *path, const char *cache) +{ + stp_mxml_node_t *answer = NULL; + if (!(name[0] != '/' && strncmp(name, "./", 2) && strncmp(name, "../", 3))) + answer = xml_try_parse_file(name, topnodename); + else + { + stp_list_t *path_to_search; + stp_list_item_t *item; + if (path) + path_to_search = stp_generate_path(path); + else + path_to_search = stp_data_path(); + item = stp_list_get_start(path_to_search); + while (item) + { + const char *dn = (const char *) stp_list_item_get_data(item); + char *ffn = stpi_path_merge(dn, name); + answer = xml_try_parse_file(ffn, topnodename); + stp_free(ffn); + if (answer) + break; + item = stp_list_item_next(item); + } + stp_list_destroy(path_to_search); + } + if (answer) + xml_cache_file(name, cache, answer); + return answer; +} - stpi_xml_process_gutenprint(cur, file); - stp_mxmlDelete(doc); +stp_mxml_node_t * +stp_xml_parse_file_from_path_uncached(const char *name, const char *topnodename, + const char *path) +{ + return xml_parse_file_from_path(name, topnodename, path, NULL); +} - stp_xml_exit(); +stp_mxml_node_t * +stp_xml_parse_file_from_path_uncached_safe(const char *name, + const char *topnodename, + const char *path) +{ + stp_mxml_node_t *answer = + xml_parse_file_from_path(name, topnodename, path, NULL); + if (! answer) + { + stp_erprintf("Cannot find file %s of type %s\n", name, topnodename); + stp_abort(); + } + return answer; +} - return 0; +stp_mxml_node_t * +stp_xml_parse_file_from_path(const char *name, const char *topnodename, + const char *path) +{ + char *cache; + void *data; + stp_asprintf(&cache, "%s_%s_%s", "xml_cache", topnodename, + path ? path : "DEFAULT"); + data = stp_refcache_find_item(cache, name); + if (! data) + data = xml_parse_file_from_path(name, topnodename, path, cache); + stp_free(cache); + return (stp_mxml_node_t *) data; +} + +stp_mxml_node_t * +stp_xml_parse_file_from_path_safe(const char *name, const char *topnodename, + const char *path) +{ + stp_mxml_node_t *answer = stp_xml_parse_file_from_path(name, topnodename, + path); + if (! answer) + { + stp_erprintf("FATAL: Cannot find file %s of type %s\n", name, topnodename); + stp_abort(); + } + return answer; +} + +void +stp_xml_free_parsed_file(stp_mxml_node_t *node) +{ + char *addr_string; + /* free(NULL) is legal and a no-op. */ + if (! node) + return; + stp_asprintf(&addr_string, "%p", (void *) node); + stp_param_string_t *cache_entry = + stp_string_list_find(cached_xml_files, addr_string); + if (! cache_entry) + { + stp_erprintf("FATAL: Trying to free unrecorded node %s\n", addr_string); + stp_abort(); + } + if (cache_entry->text && cache_entry->text[0] != '\0') + stp_refcache_remove_item(cache_entry->text, addr_string); + stp_string_list_remove_string(cached_xml_files, addr_string); + stp_free(addr_string); + while (node->parent && node->parent != node) + node = node->parent; + stp_xml_init(); + stp_mxmlDelete(node); + stp_xml_exit(); } /* @@ -494,11 +640,14 @@ stp_xml_get_node(stp_mxml_node_t *xmlroot, ...) child = xmlroot; target = va_arg(ap, const char *); + stp_xml_init(); while (target && child) { - child = stp_mxmlFindElement(child, child, target, NULL, NULL, STP_MXML_DESCEND); + child = stp_mxmlFindElement(child, child, target, NULL, NULL, + STP_MXML_DESCEND); target = va_arg(ap, const char *); } + stp_xml_exit(); va_end(ap); return child; } @@ -543,6 +692,7 @@ stp_xmldoc_create_generic(void) stp_mxml_node_t *doc; stp_mxml_node_t *rootnode; + stp_xml_init(); /* Create the XML tree */ doc = stp_mxmlNewElement(NULL, "?xml"); stp_mxmlElementSetAttr(doc, "version", "1.0"); @@ -555,6 +705,50 @@ stp_xmldoc_create_generic(void) stp_mxmlElementSetAttr (rootnode, "xsi:schemaLocation", "http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint.xsd"); + stp_xml_exit(); return doc; } + +void +stpi_print_xml_node(stp_mxml_node_t *node) +{ + int i; + stp_erprintf("Node @%p:\n", (void *) node); + stp_erprintf(" Type %d\n", node->type); + stp_erprintf(" Next @%p\n", (void *) node->next); + stp_erprintf(" Prev @%p\n", (void *) node->prev); + stp_erprintf(" Parent @%p\n", (void *) node->parent); + stp_erprintf(" Child @%p\n", (void *) node->child); + stp_erprintf(" Last @%p\n", (void *) node->last_child); + stp_erprintf(" Value: "); + switch (node->type) + { + case STP_MXML_ELEMENT: + stp_erprintf("\n Element, name: %s\n", node->value.element.name); + stp_erprintf(" Attrs: %d\n", node->value.element.num_attrs); + for (i = 0; i < node->value.element.num_attrs; i++) + stp_erprintf(" %s => %s\n", + node->value.element.attrs[i].name, + node->value.element.attrs[i].value); + break; + case STP_MXML_INTEGER: + stp_erprintf(" Integer: %d\n", node->value.integer); + break; + case STP_MXML_REAL: + stp_erprintf(" Real: %f\n", node->value.real); + break; + case STP_MXML_DIMENSION: + stp_erprintf(" Dimension: %f\n", node->value.real); + break; + case STP_MXML_OPAQUE: + stp_erprintf(" Opaque: '%s'\n", node->value.opaque); + break; + case STP_MXML_TEXT: + stp_erprintf(" Text: %d '%s'\n", node->value.text.whitespace, + node->value.text.string); + break; + default: + stp_erprintf("UNKNOWN!\n"); + } +} diff --git a/src/main/xmlppd.h b/src/main/xmlppd.h index a0ca355..c7689ab 100644 --- a/src/main/xmlppd.h +++ b/src/main/xmlppd.h @@ -13,8 +13,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifndef GUTENPRINT_INTERNAL_XMLPPD_H diff --git a/src/testpattern/Makefile.am b/src/testpattern/Makefile.am index 25f075b..a0a2715 100644 --- a/src/testpattern/Makefile.am +++ b/src/testpattern/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. @@ -27,15 +26,6 @@ pkgdatadir = $(datadir)/$(PACKAGE)/samples ## Programs -if BUILD_TESTPATTERN - -TESTS = run-testpattern-1 run-testpattern-2 - -bin_PROGRAMS = testpattern -noinst_PROGRAMS = printers printer_options -noinst_SCRIPTS = run-testpattern-2 compare-checksums compress-checksums -endif - AM_LFLAGS = -i AM_YFLAGS = -d @@ -55,10 +45,20 @@ if INSTALL_SAMPLES pkgdata_DATA = testpattern.sample extended.sample endif -## Generate checksums - if BUILD_TESTPATTERN +AM_TESTS_ENVIRONMENT=STP_MODULE_PATH=$(top_builddir)/src/main/.libs:$(top_builddir)/src/main STP_DATA_PATH=$(top_srcdir)/src/xml +run-testpattern-2.check: run-testpattern-2 + +TESTS = run-testpattern-1 run-testpattern-2.check + +bin_PROGRAMS = testpattern +noinst_PROGRAMS = printers printer_options +noinst_SCRIPTS = run-testpattern-2 compare-checksums compress-checksums \ + run-testpattern-2.check run-testpattern-1 +CSUM_DEPS=testpattern run-testpattern-2 compress-checksums Checksums \ + run-testpattern-2.check + # This suffix is *not* static during development! CSUM_SUFFIX=`@PKGROOT@/scripts/gversion` CSUM_RELEASE_SUFFIX=@GUTENPRINT_VERSION@ @@ -67,14 +67,23 @@ CSUM_RELEASE_FILE=Checksums/sums.$(CSUM_RELEASE_SUFFIX) .PHONY: checksums checksums-release +CHECKSUM_ENV=STP_TEST_PROFILE=checksums STP_DATA_PATH='@PKGROOT@/src/xml' + Checksums: $(MKDIR_P) Checksums -checksums: testpattern run-testpattern-2 ./compress-checksums Checksums - ./run-testpattern-2 -q -M - | ./compress-checksums | $(COMPRESS) > "$(CSUM_FILE)@CSUF@" +checksums: $(CSUM_DEPS) + $(CHECKSUM_ENV) ./run-testpattern-2.check 4>&1 | ./compress-checksums | $(COMPRESS) > "$(CSUM_FILE)@CSUF@" + +checksums-fast: $(CSUM_DEPS) + $(CHECKSUM_ENV) ./run-testpattern-2.check -s 4>&1 | ./compress-checksums | $(COMPRESS) > "$(CSUM_FILE)@CSUF@" -checksums-release: testpattern run-testpattern-2 ./compress-checksums Checksums - ./run-testpattern-2 -q -M - | ./compress-checksums | $(COMPRESS) > "$(CSUM_RELEASE_FILE)@CSUF@" +checksums-release: $(CSUM_DEPS) + if [ -n "$$STP_TEST_LOG_PREFIX" ] ; then \ + $(CHECKSUM_ENV) ./run-testpattern-2.check 4>&1 | ./compress-checksums | $(COMPRESS) | tee "$${STP_TEST_LOG_PREFIX}checksums_$$$$@CSUF@" > "$(CSUM_RELEASE_FILE)@CSUF@" ; \ + else \ + $(CHECKSUM_ENV) ./run-testpattern-2.check 4>&1 | ./compress-checksums | $(COMPRESS) > "$(CSUM_RELEASE_FILE)@CSUF@" ; \ + fi endif ## Clean @@ -84,7 +93,5 @@ MAINTAINERCLEANFILES = Makefile.in testpatternl.c testpatterny.c testpatterny.h EXTRA_DIST = \ testpatterny.h \ $(pkgdata_DATA) \ - run-testpattern \ - run-testpattern-1 \ compare-checksums.in \ compress-checksums.in diff --git a/src/testpattern/Makefile.in b/src/testpattern/Makefile.in index 2b920bf..70e801c 100644 --- a/src/testpattern/Makefile.in +++ b/src/testpattern/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -22,7 +22,17 @@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -84,33 +94,29 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(srcdir)/run-testpattern-2.in \ - $(srcdir)/compare-checksums.in $(srcdir)/compress-checksums.in \ - testpatterny.h testpatterny.c testpatternl.c \ - $(top_srcdir)/scripts/depcomp $(top_srcdir)/scripts/ylwrap \ - $(top_srcdir)/scripts/test-driver @BUILD_TESTPATTERN_TRUE@bin_PROGRAMS = testpattern$(EXEEXT) @BUILD_TESTPATTERN_TRUE@noinst_PROGRAMS = printers$(EXEEXT) \ @BUILD_TESTPATTERN_TRUE@ printer_options$(EXEEXT) subdir = src/testpattern ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = run-testpattern-2 compare-checksums \ - compress-checksums +CONFIG_CLEAN_FILES = compare-image-files run-testpattern \ + run-testpattern-1 run-testpattern-2 run-testpattern-2.check \ + compare-checksums compress-checksums CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)" PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) @@ -144,7 +150,10 @@ 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__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/printer_options.Po \ + ./$(DEPDIR)/printers.Po ./$(DEPDIR)/testpattern.Po \ + ./$(DEPDIR)/testpatternl.Po ./$(DEPDIR)/testpatterny.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -414,6 +423,14 @@ 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) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/compare-checksums.in \ + $(srcdir)/compare-image-files.in \ + $(srcdir)/compress-checksums.in $(srcdir)/run-testpattern-1.in \ + $(srcdir)/run-testpattern-2.check.in \ + $(srcdir)/run-testpattern-2.in $(srcdir)/run-testpattern.in \ + $(top_srcdir)/scripts/depcomp $(top_srcdir)/scripts/global.mk \ + $(top_srcdir)/scripts/test-driver $(top_srcdir)/scripts/ylwrap \ + testpatternl.c testpatterny.c testpatterny.h DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/$(PACKAGE)/samples ACLOCAL = @ACLOCAL@ @@ -425,6 +442,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -445,7 +464,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -462,6 +480,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -524,10 +543,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -551,7 +572,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -569,9 +589,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -639,9 +661,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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 -@BUILD_TESTPATTERN_TRUE@TESTS = run-testpattern-1 run-testpattern-2 -@BUILD_TESTPATTERN_TRUE@noinst_SCRIPTS = run-testpattern-2 compare-checksums compress-checksums AM_LFLAGS = -i AM_YFLAGS = -d testpattern_SOURCES = testpattern.c testpatterny.y testpatternl.l testpattern.h @@ -649,18 +668,25 @@ testpattern_LDADD = $(GUTENPRINT_LIBS) $(LIBM) printers_LDADD = $(GUTENPRINT_LIBS) printer_options_LDADD = $(GUTENPRINT_LIBS) @INSTALL_SAMPLES_TRUE@pkgdata_DATA = testpattern.sample extended.sample +@BUILD_TESTPATTERN_TRUE@AM_TESTS_ENVIRONMENT = STP_MODULE_PATH=$(top_builddir)/src/main/.libs:$(top_builddir)/src/main STP_DATA_PATH=$(top_srcdir)/src/xml +@BUILD_TESTPATTERN_TRUE@TESTS = run-testpattern-1 run-testpattern-2.check +@BUILD_TESTPATTERN_TRUE@noinst_SCRIPTS = run-testpattern-2 compare-checksums compress-checksums \ +@BUILD_TESTPATTERN_TRUE@ run-testpattern-2.check run-testpattern-1 + +@BUILD_TESTPATTERN_TRUE@CSUM_DEPS = testpattern run-testpattern-2 compress-checksums Checksums \ +@BUILD_TESTPATTERN_TRUE@ run-testpattern-2.check + # This suffix is *not* static during development! @BUILD_TESTPATTERN_TRUE@CSUM_SUFFIX = `@PKGROOT@/scripts/gversion` @BUILD_TESTPATTERN_TRUE@CSUM_RELEASE_SUFFIX = @GUTENPRINT_VERSION@ @BUILD_TESTPATTERN_TRUE@CSUM_FILE = Checksums/sums.$(SPREFIX)$(CSUM_SUFFIX) @BUILD_TESTPATTERN_TRUE@CSUM_RELEASE_FILE = Checksums/sums.$(CSUM_RELEASE_SUFFIX) +@BUILD_TESTPATTERN_TRUE@CHECKSUM_ENV = STP_TEST_PROFILE=checksums STP_DATA_PATH='@PKGROOT@/src/xml' MAINTAINERCLEANFILES = Makefile.in testpatternl.c testpatterny.c testpatterny.h EXTRA_DIST = \ testpatterny.h \ $(pkgdata_DATA) \ - run-testpattern \ - run-testpattern-1 \ compare-checksums.in \ compress-checksums.in @@ -680,16 +706,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/testpattern/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/testpattern/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -699,8 +724,16 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): +compare-image-files: $(top_builddir)/config.status $(srcdir)/compare-image-files.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +run-testpattern: $(top_builddir)/config.status $(srcdir)/run-testpattern.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +run-testpattern-1: $(top_builddir)/config.status $(srcdir)/run-testpattern-1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ run-testpattern-2: $(top_builddir)/config.status $(srcdir)/run-testpattern-2.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +run-testpattern-2.check: $(top_builddir)/config.status $(srcdir)/run-testpattern-2.check.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ compare-checksums: $(top_builddir)/config.status $(srcdir)/compare-checksums.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ compress-checksums: $(top_builddir)/config.status $(srcdir)/compress-checksums.in @@ -785,25 +818,31 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printer_options.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printers.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpattern.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpatternl.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpatterny.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printer_options.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printers.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpattern.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpatternl.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpatterny.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) .c.o: @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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -927,7 +966,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS) if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ - else \ + elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ @@ -1017,7 +1056,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS) fi; \ $$success || exit 1 -check-TESTS: +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) @@ -1045,9 +1084,9 @@ run-testpattern-1.log: run-testpattern-1 --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'; \ +run-testpattern-2.check.log: run-testpattern-2.check + @p='run-testpattern-2.check'; \ + b='run-testpattern-2.check'; \ $(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) \ @@ -1067,7 +1106,10 @@ run-testpattern-2.log: run-testpattern-2 @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) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -1148,7 +1190,11 @@ clean-am: clean-binPROGRAMS clean-generic clean-libtool \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/printer_options.Po + -rm -f ./$(DEPDIR)/printers.Po + -rm -f ./$(DEPDIR)/testpattern.Po + -rm -f ./$(DEPDIR)/testpatternl.Po + -rm -f ./$(DEPDIR)/testpatterny.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -1194,7 +1240,11 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/printer_options.Po + -rm -f ./$(DEPDIR)/printers.Po + -rm -f ./$(DEPDIR)/testpattern.Po + -rm -f ./$(DEPDIR)/testpatternl.Po + -rm -f ./$(DEPDIR)/testpatterny.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -1215,8 +1265,8 @@ uninstall-am: uninstall-binPROGRAMS uninstall-pkgdataDATA .MAKE: check-am install-am install-strip -.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ - clean-binPROGRAMS clean-generic clean-libtool \ +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \ + check-am clean clean-binPROGRAMS clean-generic clean-libtool \ 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 \ @@ -1231,6 +1281,8 @@ uninstall-am: uninstall-binPROGRAMS uninstall-pkgdataDATA recheck tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-pkgdataDATA +.PRECIOUS: Makefile + @SET_MAKE@ @@ -1240,27 +1292,31 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) testpatternl.o: testpatterny.o testpattern.o: testpatterny.o +@BUILD_TESTPATTERN_TRUE@run-testpattern-2.check: run-testpattern-2 @BUILD_TESTPATTERN_TRUE@.PHONY: checksums checksums-release @BUILD_TESTPATTERN_TRUE@Checksums: @BUILD_TESTPATTERN_TRUE@ $(MKDIR_P) Checksums -@BUILD_TESTPATTERN_TRUE@checksums: testpattern run-testpattern-2 ./compress-checksums Checksums -@BUILD_TESTPATTERN_TRUE@ ./run-testpattern-2 -q -M - | ./compress-checksums | $(COMPRESS) > "$(CSUM_FILE)@CSUF@" +@BUILD_TESTPATTERN_TRUE@checksums: $(CSUM_DEPS) +@BUILD_TESTPATTERN_TRUE@ $(CHECKSUM_ENV) ./run-testpattern-2.check 4>&1 | ./compress-checksums | $(COMPRESS) > "$(CSUM_FILE)@CSUF@" + +@BUILD_TESTPATTERN_TRUE@checksums-fast: $(CSUM_DEPS) +@BUILD_TESTPATTERN_TRUE@ $(CHECKSUM_ENV) ./run-testpattern-2.check -s 4>&1 | ./compress-checksums | $(COMPRESS) > "$(CSUM_FILE)@CSUF@" -@BUILD_TESTPATTERN_TRUE@checksums-release: testpattern run-testpattern-2 ./compress-checksums Checksums -@BUILD_TESTPATTERN_TRUE@ ./run-testpattern-2 -q -M - | ./compress-checksums | $(COMPRESS) > "$(CSUM_RELEASE_FILE)@CSUF@" +@BUILD_TESTPATTERN_TRUE@checksums-release: $(CSUM_DEPS) +@BUILD_TESTPATTERN_TRUE@ if [ -n "$$STP_TEST_LOG_PREFIX" ] ; then \ +@BUILD_TESTPATTERN_TRUE@ $(CHECKSUM_ENV) ./run-testpattern-2.check 4>&1 | ./compress-checksums | $(COMPRESS) | tee "$${STP_TEST_LOG_PREFIX}checksums_$$$$@CSUF@" > "$(CSUM_RELEASE_FILE)@CSUF@" ; \ +@BUILD_TESTPATTERN_TRUE@ else \ +@BUILD_TESTPATTERN_TRUE@ $(CHECKSUM_ENV) ./run-testpattern-2.check 4>&1 | ./compress-checksums | $(COMPRESS) > "$(CSUM_RELEASE_FILE)@CSUF@" ; \ +@BUILD_TESTPATTERN_TRUE@ fi # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/src/testpattern/compare-checksums.in b/src/testpattern/compare-checksums.in index 759e76e..e148974 100755..100644 --- a/src/testpattern/compare-checksums.in +++ b/src/testpattern/compare-checksums.in @@ -12,19 +12,83 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. + +# Reference compression methods and other documentation from +# compress-checksums. +# +# This is believed back compatible with all earlier versions of the +# Gutenprint test case compression utility. use strict; +my ($progname) = $0; + my (%old_modes, %old_printers, %new_modes, %new_printers); my ($detail1) = 0; +my ($spc) = unpack("C", " "); while ($#ARGV >= 0 && $ARGV[0] eq '-d') { $detail1++; shift @ARGV; } +my (%asc_table); +map { $asc_table{pack("C", $_ + 128)} = pack("C", $_) . " "; } (0..127); +$asc_table{pack("C", 27)} = "=+"; +$asc_table{pack("C", 26)} = "!+"; +$asc_table{pack("C", 25)} = '"+'; +$asc_table{pack("C", 24)} = ",+"; +$asc_table{pack("C", 23)} = "'+"; +$asc_table{pack("C", 22)} = "%+"; +$asc_table{pack("C", 21)} = ">+"; +$asc_table{pack("C", 20)} = "20+"; +$asc_table{pack("C", 19)} = "19+"; +$asc_table{pack("C", 18)} = "18+"; +$asc_table{pack("C", 17)} = "17+"; +$asc_table{pack("C", 16)} = "16+"; +$asc_table{pack("C", 15)} = "15+"; +$asc_table{pack("C", 14)} = "14+"; +$asc_table{pack("C", 13)} = "13+"; +$asc_table{pack("C", 12)} = "12+"; +$asc_table{pack("C", 11)} = "11+"; +$asc_table{pack("C", 9)} = "10+"; # 0xa is newline +$asc_table{pack("C", 8)} = "9+"; +$asc_table{pack("C", 7)} = "8+"; +$asc_table{pack("C", 6)} = "7+"; +$asc_table{pack("C", 5)} = "6+"; +$asc_table{pack("C", 4)} = "5+"; +$asc_table{pack("C", 3)} = "4+"; +$asc_table{pack("C", 2)} = "3+"; +$asc_table{pack("C", 1)} = "2\+"; + +my (%respack_tbl); +$respack_tbl{"d"} = "draft"; +$respack_tbl{"h"} = "high"; +$respack_tbl{"m"} = "mono"; +$respack_tbl{"p"} = "photo"; +$respack_tbl{"s"} = "std"; +$respack_tbl{"t"} = "tshirt"; + +my (%sub_table); +$sub_table{"P;"} = "PrintingMode"; +$sub_table{"S;"} = "PageSize"; +$sub_table{"D;"} = "DitherAlgorithm"; +$sub_table{"R;"} = "Resolution"; +$sub_table{"C;"} = "ColorCorrection"; +$sub_table{"c;"} = "Color"; +$sub_table{"M;"} = "MediaType"; +$sub_table{"I;"} = "InputSlot"; + +my (%us_table); +$us_table{'>'} = "__"; +$us_table{'%'} = "___"; +$us_table{"'"} = "____"; +$us_table{','} = "_____"; +$us_table{'"'} = "______"; +$us_table{'!'} = "_______"; +$us_table{'='} = "________"; + if ($#ARGV <= 0) { print_file($ARGV[0]); } elsif ($#ARGV == 1) { @@ -45,15 +109,10 @@ sub get_mode($) { return $mode; } -sub uncompress_chunk($$) { - my ($chunk, $sub_table) = @_; - $$sub_table{$chunk} = $chunk if (! defined $$sub_table{$chunk}); - return $$sub_table{$chunk}; -} - sub open_file($) { my ($file) = @_; my $in; + # Might as well handle known compression methods directly if ($file =~ /\.bz2$/) { open($in, '-|', "@BZIP2@ -d -c $file") || die("Can't open checksum file $file: $!\n"); } elsif ($file =~ /.gz$/) { @@ -62,6 +121,13 @@ sub open_file($) { open($in, '-|', "@XZ@ -d -c $file") || die("Can't open checksum file $file: $!\n"); } elsif ($file =~ /.lrz$/) { open($in, '-|', "cat $file | @LRZIP@ -d -q") || die("Can't open checksum file $file: $!\n"); + } elsif ($file =~ /.zpaq$/) { + my ($zpaq_base) = "@top_builddir@/scripts/wzpaq"; + if (substr($zpaq_base, 0, 1) ne '/') { # Relative path + $progname =~ s,[^/]*$,,; + $zpaq_base = "$progname$zpaq_base"; + } + open($in, '-|', "$zpaq_base -d -c $file") || die("Can't open checksum file $file: $!\n"); } elsif ($file =~ /.rz$/) { open($in, '-|', "@RZIP@ -d -c $file") || die("Can't open checksum file $file: $!\n"); } else { @@ -70,31 +136,6 @@ sub open_file($) { return $in; } -sub create_underscore_table() { - my (%us_table); - my (@chars) = ('>', '%', "'", ',', '"', '!', '='); - my ($us) = '__'; - foreach my $char (@chars) { - $us_table{$char} = $us; - $us = $us . "_"; - } - return \%us_table; -} - -sub create_substitution_table() { - my (%sub_table); - $sub_table{"PrintingMode"} = "P;"; - $sub_table{"PageSize"} = "S;"; - $sub_table{"DitherAlgorithm"} = "D;"; - $sub_table{"Resolution"} = "R;"; - $sub_table{"ColorCorrection"} = "C;"; - $sub_table{"Color"} = "c;"; - $sub_table{"MediaType"} = "M;"; - $sub_table{"InputSlot"} = "I;"; - %sub_table = reverse %sub_table; - return \%sub_table; -} - sub initialize_file($) { my ($file) = @_; my (%ctx); @@ -106,61 +147,142 @@ sub initialize_file($) { $ctx{"sum"} = ""; $ctx{"last_sum"} = ""; $ctx{"kvals"} = []; - $ctx{"sub_table"} = create_substitution_table(); $ctx{"pchunks"} = []; $ctx{"active"} = 1; - my ($us_table) = create_underscore_table(); - $ctx{"us_table"} = $us_table; + $ctx{"lastdup"} = 0; return \%ctx; } +sub break_subgroup($$$) { + my ($pref, $group, $shared) = @_; + if ($group =~ /^([^_]*)_(.*)/o) { + my ($option) = $1; + my ($values) = $2; + my (@values) = split(/&/, $values); + return join(" ", map { "${pref}${option}_${_}${shared}" } @values); + } +} + +sub break_group($$) { + my ($pref, $group) = @_; + my (@subgroups); + my ($rest); + if ($group =~ /\?/) { + $group =~ /(^.*\?[^?_]*_[^?_]*)(_.*)/o; + $rest = $2; + my ($stuff) = $1; + @subgroups = split(/\?/, $stuff); + } elsif ($group =~ /^([^_]*_[^_]*)(_.*$)/o) { + @subgroups = ($1); + $rest = $2; + } + return join(" ", map {break_subgroup($pref, $_, $rest)} @subgroups); +} + +sub fetch_next_line($) { + my ($ctx) = @_; + my ($fh) = $$ctx{"fh"}; + my ($inline); + if (! ($inline = <$fh>)) { + close($fh) if ($fh != \*STDIN); + $$ctx{"active"} = 0; + return 0; + } + chomp $inline; + if ($inline =~ /^[0-9a-f]+ \*/o) { + # Uncompressed! + $$ctx{"literal"} = $inline; + return 1; + } + delete $$ctx{"literal"}; + # Level 10 + # Level 9 + # Whitespace optimization -- set high bit. + $inline =~ s/([\x01-\x09\x0b-\x1b\x80-\xff])/$asc_table{$1}/go; + # All lines start with hash followed by printing mode, so if compression + # removed that, we need to restore it. + # Level 8 + $inline =~ s/^([0-9a-f]+ )\./$1P;_BW_/o; + $inline =~ s/^([0-9a-f]+ )\,/$1P;_c;_/o; + # Level 7 + $inline =~ s/([=!",'%>])/$us_table{$1}/go; + # Level 3 + my ($tmpline) = ""; + while ($inline =~ /(([^()]*) )?([^() _]*_[^() _]*_)\(([^()_]+_)([^()_]+)(_[^()]*)((\))(.*)|$)/o) { + my ($head) = $2; + my ($pref) = $3; + my ($stuff) = "$4$5$6"; + my ($tail) = $9; + $tmpline .= "$head " . break_group($pref, $stuff); + $inline = $tail; + } + $inline = "$tmpline$inline"; + # Level 5 + $inline =~ s/([PSDRCcMI];)/$sub_table{$1}/go; + # Restore printer name + $inline =~ s/(^| )\*/$1/go; + $inline =~ s/\.prn( |$)/$1/go; + # Level 1 + my ($sum, @keys) = split(/ /o, $inline); + $$ctx{"kvals"} = \@keys; + $$ctx{"pchunks"} = []; + + # Level 4 + # Level 2 is subsumed here, because the checksum lengths will always + # be identical at this compression level. + my $osum = $$ctx{"sum"}; + if ($osum ne "" && ((length $sum) < (length $osum))) { + $sum = substr($osum, 0, ((length $osum) - (length $sum))) . $sum; + } + $$ctx{"sum"} = $sum; + return 1; +} + sub get_next_datum($) { my ($ctx) = @_; return undef if (! $$ctx{"active"}); if ((scalar @{$$ctx{"kvals"}}) == 0) { - my ($fh) = $$ctx{"fh"}; - my ($inline); - if (! ($inline = <$fh>)) { - close($fh) if ($fh != \*STDIN); - $$ctx{"active"} = 0; - return undef; - } - chomp $inline; - $inline =~ s/([=!",'%>])/$$ctx{"us_table"}{$1}/go; - $inline =~ s/([PSDRCcMI];)/$$ctx{"sub_table"}{$1}/go; - $inline =~ s/(^| )\*/$1/go; - $inline =~ s/\.prn( |$)/$1/go; - my ($sum, @keys) = split(/ /o, $inline); - my $osum = $$ctx{"sum"}; - $$ctx{"kvals"} = \@keys; - if ($osum ne "" && ((length $sum) < (length $osum))) { - $sum = substr($osum, 0, ((length $osum) - (length $sum))) . $sum; - } - $$ctx{"sum"} = $sum; - $$ctx{"pchunks"} = []; + return undef if (! fetch_next_line($ctx)); + } + if (defined $$ctx{"literal"}) { + my ($sum, $val) = split(/ /, $$ctx{"literal"}); + $val = substr($val, 1, -4); + return [$sum, get_mode($val), get_printer($val)]; } my (@chunks) = split(/_/o, shift(@{$$ctx{"kvals"}}), -1); my $pchunks = $$ctx{"pchunks"}; + # Level 6 foreach my $i (0..$#chunks) { if ($chunks[$i] eq '') { $chunks[$i] = $$pchunks[$i]; } else { - if ($chunks[$i] =~ /^([0-9]+)\+(.*)/o) { + if (substr($chunks[$i], 0, 1) eq '+') { + substr($chunks[$i], 0, 1) = + substr($$pchunks[$i], 0, $$ctx{"lastdup"}); + } elsif (substr($chunks[$i], 0, 1) eq '*') { + substr($chunks[$i], 0, 1) = substr($$pchunks[$i], 0, 2); + } elsif ($chunks[$i] =~ /^([0-9]+)\+(.*)/o) { $chunks[$i] = substr($$pchunks[$i], 0, $1) . $2; - } elsif ($chunks[$i] =~ /^\*(.*)/o) { - $chunks[$i] = substr($$pchunks[$i], 0, 2) . $1; + $$ctx{"lastdup"} = $1; } - if ($chunks[$i] =~ m,(.*)/([0-9]+)$,o) { + + if (substr($chunks[$i], -1) eq "\\") { + substr($chunks[$i], -1) = substr($$pchunks[$i], -2); + } elsif ($chunks[$i] =~ m,(.*)/([0-9]+)$,o) { $chunks[$i] = $1 . substr($$pchunks[$i], -$2); - } elsif ($chunks[$i] =~ /([^\\]*)\\$/o) { - $chunks[$i] = $1 . substr($$pchunks[$i], -2); } } } my ($val) = join('_', @chunks); - $val =~ s/(^[^:]*)_:(.*)/$2_$1/o; + # Restore printer names + my ($sep) = rindex($val, ':'); + my ($prn) = substr($val, $sep + 1); + substr($val, $sep - 1) = ''; + # Level 5 (global) + $val =~ s/\{([0-9]*)([dhmpst])([^|]*)\}/$1x$1dpi_${respack_tbl{$2}}$3/go; + $val =~ s/Z\;/DitherAlgorithm/go; $$ctx{"pchunks"} = \@chunks; - return [$$ctx{"sum"}, $val]; + return [$$ctx{"sum"}, $val, $prn]; } sub load_file($\%\%) { @@ -170,8 +292,9 @@ sub load_file($\%\%) { while ($answer = get_next_datum($ctx)) { my ($sum) = $$answer[0]; my ($val) = $$answer[1]; - $$modes{$val} = $sum; - $$printers{get_printer($val)} = 1; + my ($prn) = $$answer[2]; + $$modes{"*${prn}_$val"} = $sum; + $$printers{$prn} = 1; } } @@ -270,6 +393,7 @@ sub print_file($) { while ($answer = get_next_datum($ctx)) { my ($sum) = $$answer[0]; my ($val) = $$answer[1]; - print "$sum *$val.prn\n"; + my ($prn) = $$answer[2]; + print "$sum *${prn}_$val.prn\n"; } } diff --git a/src/testpattern/compare-image-files.in b/src/testpattern/compare-image-files.in new file mode 100644 index 0000000..de78d46 --- /dev/null +++ b/src/testpattern/compare-image-files.in @@ -0,0 +1,48 @@ +#!@SHELL@ + +# Compare ESC/P2 Raster files' dot positions to determine amount of error. +# +# Copyright 2016 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, see <https://www.gnu.org/licenses/>. + +old=$1 +new=$2 + +if [ -z "$old" -o -z "$new" -o ! -d "$old" -o ! -d "$new" ] ; then + echo "Usage: $0 dir1 dir2" + exit 1 +fi + +#files=$(ls $old | grep '\.prn$' |grep -v 'DitherAlgorithm_\(Predithered\|VeryFast\)') +files=$(cat |grep 'DitherAlgorithm_Ordered_') + +for x in $files ; do + f="$old/$x.prn" + g="$new/$x.prn" + if [ -f "$f" -a -f "$g" ] ; then + cmp -s $f $g || ( + rm -f old.pnm new.pnm + ../../test/unprint $f > old.pnm 2>/dev/null + ../../test/unprint $g > new.pnm 2>/dev/null +# change=$(compare -metric ae old.pnm new.pnm /dev/null 2>&1) +# echo "$change | " $(perl -e "print $change") "|" + change=$(perl -e "print $(compare -metric ae old.pnm new.pnm /dev/null 2>&1)") + size=$(($(head -2 old.pnm |tail -1 |sed 's/ /*/'))) + pct=$(perl -e "printf('%0.4f%%', 100*$change/$size)") + error=$(((32768+(65536*$change))/$size)) + printf '%10s %10s %8s %5s %s\n' "$change" "$size" "$pct" "$error" "$x" + ) + fi +done diff --git a/src/testpattern/compress-checksums.in b/src/testpattern/compress-checksums.in index 19af2f1..97d3574 100644 --- a/src/testpattern/compress-checksums.in +++ b/src/testpattern/compress-checksums.in @@ -1,5 +1,5 @@ #!@PERL@ -## Copyright (C) 2016 Robert Krawitz +## Copyright (C) 2016-2017 Robert Krawitz ## ## 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 @@ -12,52 +12,225 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. + +# Compress Gutenprint regression test results +# +# The Gutenprint regression test uses run-testpattern-2 to generate +# hashes for each test case it runs. It currently runs about 370,000 +# cases and generates 75 MB of output (if we used a less...verbose +# hash than SHA-512, we could save a fair bit of that, but it would +# still be something in the range of 40 MB). This is too big to store +# for very long, or to store in the repo. +# +# But there's a lot of compression we can do, some of it lossy and +# some lossless, to greatly reduce the data volume. Obviously, we can +# use conventional lossless compression (such as bzip2), but by +# understanding what we're trying to accomplish we can do much better. +# +# The three important points are: +# +# 1) There's a lot of duplication (a lot of test cases generate the +# same output). Some of this is because a lot of printers actually +# use the same driver, some of it is because in some cases +# different options don't affect the output, and some of it is +# because under many conditions different drivers generate the same +# output. Of the 369195 test cases as of 5.3.0-pre1, there are +# only 17701 distinct outputs, as measured by counting the number +# of distinct hash values. +# +# 2) We don't need the entire hash value, only enough to determine +# with reasonable reliability that a particular test case's output +# has not changed between runs. If we keep, say, 32 bits of hash +# value, we're going to miss a change in output only once in every +# 4 billion cases. For this purpose, that's good enough. So we +# keep only enough hash to distinguish between all of the hash +# values in the test run. That's usually between 7 and 9 bytes +# (28-36 bits). If we miss a change in output once in 256 million +# cases, that should be OK. And for that matter, if we sort the +# hashes, we only need to keep the delta between adjacent hash +# value; leading hex digits in common can be omitted. +# +# 3) We don't care about preserving the order of the test runs. It +# doesn't matter at all if the test runs show up in different +# order; all we need to do is match them up case by case to see +# what has changed. The cases are all independent. +# +# We also know about the structure of the test data. Each test result +# is stored as <hash, name>. The names themselves are structured as +# <printer_option0_value0_option1_value1...>. Since a lot of +# components are preserved from case to case, we can do a lot of +# common component elimination and prefix/suffix removal. +# +# It turns out that we can achieve better compression by putting the +# printer name on the end of the case rather than the beginning, since +# in many cases many printers share the same information. The +# original format puts the printer name first, but no reason we can't +# reorder it for storage, as long as we can undo it later when we +# compare the results. +# +# Surprisingly (perhaps) after all of these machinations the data +# still doesn't have lot of entropy; bzip2 compresses even our best +# work by 90%. And bzip is far from the best compression out there. +# The best that I have found is zpaq +# (http://mattmahoney.net/dc/zpaq.html). It's very slow but very, +# very effective. The zpaq utility is set up for archiving rather +# than file compression, but that's nothing that a little scripting +# can't get around. For our test data, zpaq gets another 35-45%, +# depending upon compression level (initial completely uncompressed +# data is another story; zpaq is about 70% better!). + +# Compression levels (cumulative): +# +# 0 - none +# 1 - elide duplicate hashes (LOSSY -- reorders data) +# 2 - use global minimum hash length prefix (LOSSY -- reduces hash data) +# 3 - eliminate common second level groups (run encoding) +# 4 - use pairwise minimum hash length prefix +# 5 - use substitution table for common option names +# 6 - use pre-substitution table for certain value names (LOSSY -- reorder) +# 7 - common prefix/suffix elimination for chunks +# - pack multiple consecutive identical chunks +# - eliminate BW/color prefix +# 8 - replace space (inter-record gaps) with high bit set on last byte +# 9 - compact subexpression elimination (7a) + +# There are 9 defined compression levels to match usage of other +# compression programs. + +# 369195 test cases in the sample run +# CPU: Intel Xeon E3-1505M, Lenovo P70 + +# Method Size Packed Time Ratio Packed bzip2 Bits/case +# 0 75512435 1970522 0.08 1.0 38.3 6998640 42.69 +# 1 11066295 1316628 2.82 6.8 57.3 1620995 28.52 +# 2 8924474 228519 2.94 8.4 330.4 453281 4.95 +# 3 5925516 216037 3.16 11.3 349.5 383805 4.68 +# 4 5874446 205435 3.22 11.4 367.5 354349 4.45 +# 5 5306533 195594 3.61 14.2 386.0 316775 4.24 +# 6 4788102 182921 3.88 15.7 412.8 290248 3.96 +# 7b 3266449 180295 23.1 417.3 221237 3.91 +# 7a 2401276 126804 31.4 548.7 200778 2.75 +# 7 2312771 126487 4.67 32.6 595.5 200371 2.74 +# 8 2110942 122762 5.12 35.7 615.1 197529 2.66 +# 9 1891341 121970 5.30 39.9 619.1 187040 2.64 + +# Currently reserved special characters: +# +# ( ( ) & ? ) reserved for level 3. +# ; is reserved for level 5. +# Braces {} are reserved for level 6. +# (* + \ /) are reserved for level 7. +# (= ! " , ' % >) are reserved for level 7 (7a) +# High bit set is reserved for level 8. +# Non-printable ASCII (0-31) is reserved for level 9. +# (- _) are used as parts of tokens and token separators. +# | is reserved for use as a temporary. + +# Non-alphanumeric characters currently unreserved are: +# ` ~ @ # $ ^ [ ] < use strict; +use Getopt::Long; +Getopt::Long::Configure("bundling", "no_ignore_case", "pass_through"); + +my ($comp_level) = 9; my (%checksums); -while (<>) { - chomp; - my ($sum, @keys) = split; - my (@pchunks) = (); - foreach my $k (@keys) { - my (@chunks) = split(/_/, $k, -1); - foreach my $i (0..$#chunks) { - if ($chunks[$i] eq '') { - $chunks[$i] = $pchunks[$i]; - } elsif ($chunks[$i] =~ /^([0-9]+)\+(.*)/) { - $chunks[$i] = substr($pchunks[$i], 0, $1) . $2; - } - } - my $key = join('_', @chunks), '.prn'; - if (! defined $checksums{$sum}) { - $checksums{$sum} = []; - } - push @{$checksums{$sum}}, $key; - } +my (@ptable) = + (["=\\+", pack("C", 27)], + ["!\\+", pack("C", 26)], + ['"\+', pack("C", 25)], + [",\\+", pack("C", 24)], + ["'\\+", pack("C", 23)], + ["%\\+", pack("C", 22)], + [">\\+", pack("C", 21)], + ["20\\+", pack("C", 20)], + ["19\\+", pack("C", 19)], + ["18\\+", pack("C", 18)], + ["17\\+", pack("C", 17)], + ["16\\+", pack("C", 16)], + ["15\\+", pack("C", 15)], + ["14\\+", pack("C", 14)], + ["13\\+", pack("C", 13)], + ["12\\+", pack("C", 12)], + ["11\\+", pack("C", 11)], + ["10\\+", pack("C", 9)], # 0xa is newline! + ["9\\+", pack("C", 8)], + ["8\\+", pack("C", 7)], + ["7\\+", pack("C", 6)], + ["6\\+", pack("C", 5)], + ["5\\+", pack("C", 4)], + ["4\\+", pack("C", 3)], + ["3\\+", pack("C", 2)], + ["2\\+", pack("C", 1)]); + +my (%asc_table); +map { $asc_table{pack("C", $_)} = pack("C", $_ + 128); } (0..127); + +my $psub_code = <<\EOF; +sub psub($) { + my ($out) = @_; +EOF +foreach my $psub (@ptable) { + $psub_code .= " \$out =~ s/$$psub[0]/$$psub[1]/go;\n"; +} +$psub_code .= <<\EOF; + return $out; +} +EOF + +eval $psub_code; + +my (%sub_table) = ( + "PrintingMode" => "P;", + "PageSize" => "S;", + "DitherAlgorithm" => "Z;", + "Resolution" => "R;", + "ColorCorrection" => "C;", + "Color" => "c;", + "MediaType" => "M;", + "InputSlot" => "I;" + ); + +my ($spc) = unpack("C", " "); + +sub precompress($) { + my ($run) = @_; + # This one really doesn't belong here. This is to work around the + # (very domain-specifid) fact that most of the runs specify a dither + # algorithm, except for the ones testing the dither algorithms per se. + # The common group elimination code needs to have everything to the right + # of the second option to be fixed except for the printer name. + # If dither algorithm sorts between other options, it often + # breaks up a run of option names, since if dither algorithm is the + # key option it won't appear to the right, breaking up a run of fixed + # right hand components. + # + # This has a significant effect on compression; at level 10 the + # 5.3.0-pre1 test dataset consumes 1938695 bytes without this + # hack, but 1891341 with it -- about 2.5% savings. The zpaq archive + # is 123645 bytes without and 121970 with, or 1.3%. + $run =~ s/DitherAlgorithm/Z;/go; + $run =~s/600x600dpi_(draft|high|mono|photo|std|tshirt)([^?&_]*)/{600|$1|$2}/go; + $run =~s/720x720dpi_(draft|high|mono|photo|std|tshirt)([^?&_]*)/{720|$1|$2}/go; + $run =~s/300x300dpi_(draft|high|mono|photo|std|tshirt)([^?&_]*)/{300|$1|$2}/go; + $run =~s/360x360dpi_(draft|high|mono|photo|std|tshirt)([^?&_]*)/{360|$1|$2}/go; + $run =~s/\{([0-9]*)\|([^|])[^|]*\|([^?&_]*)\}/{$1$2$3}/go; + return $run; } sub find_min_nonunique_prefix(@) { my (@sums) = sort @_; - my ($last) = ""; - my ($max_prefix) = 0; - my ($lc) = 0; + my ($last) = shift @sums; + my ($maxlen) = length $last; + my ($max_prefix) = 1; foreach my $sum (@sums) { - $lc++; - if ($last eq "") { - $last = $sum; - next; - } - foreach my $l ($max_prefix..length $sum) { - if (substr($sum, 0, $l) eq substr($last, 0, $l)) { - $max_prefix++; - } else { - next; - } + foreach my $l ($max_prefix..$maxlen) { + last if (substr($sum, 0, $l) ne substr($last, 0, $l)); + $max_prefix++; } $last = $sum; } @@ -85,32 +258,216 @@ sub get_mode($) { return $mode; } -my $min_prefix = find_min_nonunique_prefix(keys %checksums); - -my ($last_sum) = ""; +sub scan_next_block($$$$$$$) { + my ($runs, $printers, $start, $blocksize, $ovalue, $rest, $ov1) = @_; + my ($limit) = scalar @$runs; + # Don't have enough runs left + if ($start + $blocksize > $limit) { + return ""; + } + my ($run0) = $$runs[$start]; + $run0 =~ /^([^:]+):(.*)$/o; + my ($data) = $1; + my ($printer) = $2; + # Printer does not match the first printer on the list. + if ($printer ne $$printers[0]) { + return ""; + } + my (@elts) = split(/_/, $data); + my ($v1) = $elts[1]; + if ($v1 ne $ov1) { + return ""; + } + my ($option) = $elts[2]; + my ($value) = $elts[3]; + if ($ovalue eq $value) { + return ""; + } + my ($nrest) = join("", @elts[4..$#elts]); + if ($nrest ne $rest) { + return ""; + } + # Different option + my $i; + for ($i = 1; $i < $blocksize; $i++) { + my ($run) = $$runs[$start + $i]; + $run =~ /^([^:]+):(.*)$/o; + $data = $1; + $printer = $2; + # Different printer that what we expect! + if ($printer ne $$printers[$i]) { + return ""; + } + @elts = split(/_/, $data); + my ($nv1) = $elts[1]; + my $noption = $elts[2]; + if ($nv1 ne $v1) { + return ""; + } + # Different option than what we expect. + if ($noption ne $option) { + return ""; + } + my ($nvalue) = $elts[3]; + # ...or different value from what we expect + if ($nvalue ne $value) { + return ""; + } + # ...or something else different, perchance? + $nrest = join("", @elts[4..$#elts]); + if ($nrest ne $rest) { + return ""; + } + } + return [$option, $value]; +} -my (%sub_table); -$sub_table{"PrintingMode"} = "P;"; -$sub_table{"PageSize"} = "S;"; -$sub_table{"DitherAlgorithm"} = "D;"; -$sub_table{"Resolution"} = "R;"; -$sub_table{"ColorCorrection"} = "C;"; -$sub_table{"Color"} = "c;"; -$sub_table{"MediaType"} = "M;"; -$sub_table{"InputSlot"} = "I;"; - -sub compress_chunk($) { - my ($chunk) = @_; - if (defined $sub_table{$chunk}) { - return $sub_table{$chunk}; +# If we find a match, return the data: glommed-together option string, +# size of the block, and number of values. +# +# If we don't find a match, return how far we searched without finding +# a match, so that the compressor doesn't spend a lot of time searching +# for a match where there isn't going to be one. +sub scan_for_block($$) { + my ($runs, $start) = @_; + my ($first_printer); + my ($idx) = $start; + my ($limit) = scalar @$runs; + # Runs are now of the form + # PrintingMode_XX_OPT1_YY...:printer + # First scan pass: look for the first change of YY while OPT1 remains + # the same. The printer should be the same as the first printer we + # find. + my ($run0) = $$runs[$start]; + $run0 =~ /^([^:]+):(.*)$/o; + my ($data) = $1; + my ($printer) = $2; + my (@elts) = split(/_/, $data); + my ($v1) = $elts[1]; + my ($option) = $elts[2]; + my ($value) = $elts[3]; + my ($rest) = join("", @elts[4..$#elts]); + my (@printers) = ($printer); + my (@values) = ([$option, $value]); + $idx++; + while ($idx < $limit) { + my ($run) = $$runs[$idx]; + $run =~ /^([^:]+):(.*)$/o; + $data = $1; + $printer = $2; + @elts = split(/_/, $data); + my ($nv1) = $elts[1]; + my ($noption) = $elts[2]; + my ($nvalue) = $elts[3]; + if ($v1 ne $nv1) { + return ("", 0, $idx); + } + # Different option name -- don't have a match. + if ($noption ne $option) { + return ("", 0, $idx); + } + my ($nrest) = join("", @elts[4..$#elts]); + if ($nrest ne $rest) { + return ("", 0, $idx); + } + if ($printer ne $printers[0]) { + if ($nvalue ne $value) { + # Different option value, but not the same printer -- don't have + # a match. + return ("", 0, $idx); + } else { + # Same option value, new printer + push @printers, $printer; + $idx++; + } + } else { + if ($nvalue eq $value) { + return ("", 0, $idx); + } + # New option value but same printer as first -- found a block! + last; + } + } + my ($blocksize) = $#printers + 1; + if ($blocksize < 2) { + return ( "", 0, $idx ); + } + my $ovalue = ""; + while ($idx < $limit) { + $value = scan_next_block($runs, \@printers, $idx, $blocksize, $ovalue, + $rest, $v1); + if (ref $value eq "ARRAY") { + push @values, $value; + $ovalue = $value->[1]; + $idx += $blocksize; + } else { + # End of the line. + if ($#values > 0) { + last; + } else { + return ( "", 0, $idx ); + } + } + } + if ($#values > 0) { + my (@optstrs); + my (@valstrs); + my ($last_option) = ""; + foreach my $item (@values) { + my ($opt) = $item->[0]; + my ($val) = $item->[1]; + if ($last_option ne $opt) { + if ($last_option ne "") { + if ($comp_level >= 5 && defined $sub_table{$last_option}) { + $last_option = $sub_table{$last_option}; + } + push @optstrs, "${last_option}_" . join("&", @valstrs); + } + $last_option = $opt; + @valstrs = (); + } + push @valstrs, $val; + } + if ($comp_level >= 5 && defined $sub_table{$last_option}) { + $last_option = $sub_table{$last_option}; + } + push @optstrs, "${last_option}_" . join("&", @valstrs);; + my ($valstr) = join("?", @optstrs); + return ( $valstr, $blocksize, $#values + 1 ); } else { - return $chunk; + return ( "", 0, $idx ); } } +GetOptions("l:i" => \$comp_level); + +if ($comp_level <= 0) { + print while (<>); + exit; +} + +while (<>) { + chomp; + my ($sum, $key) = split; + if (! defined $checksums{$sum}) { + $checksums{$sum} = []; + } + push @{$checksums{$sum}}, $key; +} + +my $min_prefix; + +if ($comp_level >= 2) { + $min_prefix = find_min_nonunique_prefix(keys %checksums); +} else { # $comp_level == 1 + $min_prefix = length((keys %checksums)[0]); +} + +my ($last_sum) = ""; + foreach my $sum (sort keys %checksums) { my ($out) = substr($sum, 0, $min_prefix); - if ($last_sum ne "") { + if ($last_sum ne "" && $comp_level >= 4) { $out = substr($out, find_min_nonunique_prefix($sum, $last_sum) - 1); } $last_sum = $sum; @@ -122,66 +479,140 @@ foreach my $sum (sort keys %checksums) { s/\.prn$//; my ($printer) = get_printer($_); my ($mode) = get_mode($_); + if ($comp_level >= 6) { + $mode = precompress($mode); + } "${mode}_:$printer" } @{$checksums{$sum}}; - foreach my $run (@runs) { + my ($lastdup) = 0; + my ($valstr) = ""; + my ($blocksize) = 0; + my ($valcount) = 0; + my ($stop_at) = -1; + my ($idx); + my ($found_block_first_time) = 0; + my ($next_check) = 0; + while ($idx <= $#runs) { + my $run = $runs[$idx]; my (@chunks) = split(/[_]/, $run); - @chunks = map { compress_chunk($_) } @chunks; + if ($comp_level >= 3 && $stop_at < 0 && + $idx >= $next_check && + $#runs - $idx > 2 && + $pchunks[2] ne $chunks[2]) { + ($valstr, $blocksize, $valcount) = scan_for_block(\@runs, $idx); + if ($blocksize > 0) { + $chunks[2] = ""; + $chunks[3] = $valstr; + $stop_at = $idx + $blocksize; + $found_block_first_time = 1; + } else { + $next_check = $valcount; + } + } + if ($comp_level >= 5) { + map { + if (defined $sub_table{$chunks[$_]}) { + $chunks[$_] = $sub_table{$chunks[$_]}; + } + } (0..$#chunks); + } my ($mchunks) = min(scalar @pchunks, scalar @chunks); my ($i) = 0; $out .= " "; + if ($stop_at > 0) { + if ($found_block_first_time) { + map { $pchunks[$_] = "" } (2..$#pchunks); + $chunks[2] = "($chunks[2]"; + $chunks[3] = $valstr; + } else { + $chunks[2] = ""; + $chunks[3] = ""; + } + } + while ($i < $mchunks) { if ($i > 0) { $out .= '_'; } if ($chunks[$i] ne $pchunks[$i]) { - my ($plen) = length $pchunks[$i]; - my ($len) = length $chunks[$i]; - my ($maxc) = min($len, $plen); - my ($dup) = 0; - my ($tail) = 0; - while ($dup < $maxc) { - last if (substr($pchunks[$i], $dup, 1) ne - substr($chunks[$i], $dup, 1)); - $dup++; - } - while ($tail < $maxc - $dup) { - last if (substr($pchunks[$i], -1 - $tail, 1) ne - substr($chunks[$i], -1 - $tail, 1)); - $tail++; - } - my ($chunk) = $chunks[$i]; - if ($tail == 2) { - $chunk = substr($chunk, 0, -$tail) . '\\'; - } elsif ($tail > 2) { - $chunk = substr($chunk, 0, -$tail) . "/$tail"; - } - if ($dup == 2) { - $out .= '*' . substr($chunk, $dup); - } elsif ($dup > 2) { - $out .= "$dup+" . substr($chunk, $dup); + if ($comp_level >= 7) { + my ($plen) = length $pchunks[$i]; + my ($len) = length $chunks[$i]; + my ($maxc) = $len; + $maxc = $plen if $plen< $len; + my ($dup) = 0; + my ($chunk) = $chunks[$i]; + if (substr($pchunks[$i], 0, 1) ne '(') { + while ($dup < $maxc) { + last if (substr($pchunks[$i], $dup, 1) ne + substr($chunks[$i], $dup, 1)); + $dup++; + } + if (! $found_block_first_time) { + my ($tail) = 0; + while ($tail < $maxc - $dup) { + last if (substr($pchunks[$i], -1 - $tail, 1) ne + substr($chunks[$i], -1 - $tail, 1)); + $tail++; + } + if ($tail == 2) { + $chunk = substr($chunk, 0, -$tail) . '\\'; + } elsif ($tail > 2) { + $chunk = substr($chunk, 0, -$tail) . "/$tail"; + } + } + } + if ($dup == 2) { + $out .= '*' . substr($chunk, $dup); + } elsif ($dup > 2) { + if ($dup == $lastdup) { + $out .= "+" . substr($chunk, $dup); + } else { + $out .= "$dup+" . substr($chunk, $dup); + } + } else { + $out .= "$chunk"; + } + $lastdup = $dup; } else { - $out .= "$chunk"; + $out .= $chunks[$i]; } - } else { - $out .= ""; } $i++; } + $found_block_first_time = 0; + @pchunks = @chunks; if ($i < scalar @chunks) { if ($i > 0) { $out .= '_'; } $out .= join("_", @chunks[$i..$#chunks]); } - $out =~ s/________/=/g; - $out =~ s/_______/!/g; - $out =~ s/______/"/g; - $out =~ s/_____/,/g; - $out =~ s/____/'/g; - $out =~ s/___/%/g; - $out =~ s/__/>/g; - @pchunks = @chunks; + $idx++; + if ($blocksize > 0 && $idx == $stop_at) { + $out .= ")"; + $idx += ($blocksize * ($valcount - 1)); + $stop_at = -1; + } + } + $out =~ s/\(_/(/g; + if ($comp_level >= 7) { + $out =~ s/________/=/go; + $out =~ s/_______/!/go; + $out =~ s/______/"/go; + $out =~ s/_____/,/go; + $out =~ s/____/'/go; + $out =~ s/___/%/go; + $out =~ s/__/>/go; + $out =~ s/^([0-9a-f]+ )P;_BW_/$1./; + $out =~ s/^([0-9a-f]+ )P;_c;_/$1,/; + if ($comp_level >= 8) { + $out =~ s/(.) /$asc_table{$1}/g; + if ($comp_level >= 9) { + $out = psub($out); + } + } } + $out =~ s/\|$//; print "$out\n"; } diff --git a/src/testpattern/extended.sample b/src/testpattern/extended.sample index db6fbd2..d14b677 100644 --- a/src/testpattern/extended.sample +++ b/src/testpattern/extended.sample @@ -15,8 +15,7 @@ # 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. +# along with this program. If not, see <https://www.gnu.org/licenses/>. # Printer/driver settings. # Printer model diff --git a/src/testpattern/printer_options.c b/src/testpattern/printer_options.c index 44003a1..4341400 100644 --- a/src/testpattern/printer_options.c +++ b/src/testpattern/printer_options.c @@ -1,8 +1,8 @@ /* * - * Dump the per-printer options for the OpenPrinting database + * Dump the per-printer options for Gutenprint * - * Copyright 2000 Robert Krawitz (rlk@alum.mit.edu) + * Copyright 2000-2018 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 @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H @@ -101,137 +100,113 @@ main(int argc, char **argv) stp_describe_parameter(pv, p->name, &desc); if (desc.is_active) { - printf("$longnames{'%s'}{'%s'} = '%s';\n", - driver, desc.name, desc.text); - printf("$param_classes{'%s'}{'%s'} = %d;\n", - driver, desc.name, desc.p_class); - printf("$param_types{'%s'}{'%s'} = %d;\n", - driver, desc.name, desc.p_type); - printf("$param_levels{'%s'}{'%s'} = %d;\n", - driver, desc.name, desc.p_level); if (desc.p_type == STP_PARAMETER_TYPE_STRING_LIST) { count = stp_string_list_count(desc.bounds.str); if (count > 0) { - if (desc.is_mandatory) + if (strcmp(desc.name, "Resolution") == 0) { - printf("$defaults{'%s'}{'%s'} = '%s';\n", - driver, desc.name, desc.deflt.str); - } - else - { - printf("$defaults{'%s'}{'%s'} = '%s';\n", - driver, desc.name, "None"); - printf("$stpdata{'%s'}{'%s'}{'%s'} = '%s';\n", - driver, desc.name, "None", "None"); - } - for (j = 0; j < count; j++) - { - const stp_param_string_t *param = - stp_string_list_param(desc.bounds.str, j); - printf("$stpdata{'%s'}{'%s'}{'%s'} = '%s';\n", - driver, desc.name, param->name, param->text); - if (strcmp(desc.name, "Resolution") == 0) + for (j = 0; j < count; j++) { + const stp_param_string_t *param = + stp_string_list_param(desc.bounds.str, j); stp_resolution_t x, y; stp_set_string_parameter(pv, "Resolution", param->name); stp_describe_resolution(pv, &x, &y); if (x > 0 && y > 0) + printf("$resolutions{'%s'}{'%s'} = [%d, %d];\n", + driver, param->name, (int) x, (int) y); + } + stp_clear_string_parameter(pv, "Resolution"); + } + else + { + if (strcmp(desc.name, "PageSize") == 0) + { + stp_dimension_t min_area = 7200 * 7200; + stp_dimension_t max_area = 0; + const char *min_size_name = NULL; + const char *max_size_name = NULL; + for (j = 0; j < count; j++) { - printf("$stpdata{'%s'}{'%s'}{'%s'} = '%d';\n", - driver, "x_resolution", param->name, (int) x); - printf("$stpdata{'%s'}{'%s'}{'%s'} = '%d';\n", - driver, "y_resolution", param->name, (int) y); + const stp_param_string_t *param = + stp_string_list_param(desc.bounds.str, j); + const stp_papersize_t *ps = + stp_describe_papersize(pv, param->name); + if (ps->width > 0 && ps->height > 0 && + (ps->width * ps->height) < min_area) + { + min_area = ps->width * ps->height; + min_size_name = param->name; + } + if (ps->width > 0 && ps->height > 0 && + (ps->width * ps->height) > max_area) + { + max_area = ps->width * ps->height; + max_size_name = param->name; + } + } + if (min_size_name) + { + printf("$min_page_size{'%s'} = '%s';\n", + driver, min_size_name); + printf("$max_page_size{'%s'} = '%s';\n", + driver, max_size_name); } } - stp_clear_string_parameter(pv, "Resolution"); + printf("$stpdata{'%s'}{'%s'} = [qw(", driver, desc.name); + if (!desc.is_mandatory && ! + stp_string_list_is_present(desc.bounds.str, "None")) + fputs("+None ", stdout); + for (j = 0; j < count; j++) + { + const stp_param_string_t *param = + stp_string_list_param(desc.bounds.str, j); + printf("%s%s ", + (strcmp(desc.deflt.str, param->name)) ? "" : "+", + param->name); + } + fputs(")];\n", stdout); } } } else if (desc.p_type == STP_PARAMETER_TYPE_BOOLEAN) { if (desc.is_mandatory) - { - printf("$defaults{'%s'}{'%s'} = '%d';\n", - driver, desc.name, desc.deflt.boolean); - } + printf("$stp_bools{'%s'}{'%s'} = %d;\n", + driver, desc.name, desc.deflt.boolean); else - { - printf("$defaults{'%s'}{'%s'} = '%s';\n", - driver, desc.name, "None"); - printf("$stpdata{'%s'}{'%s'}{'%s'} = '%s';\n", - driver, desc.name, "None", "None"); - } - - printf("$stpdata{'%s'}{'%s'}{'False'} = 'False';\n", - driver, desc.name); - printf("$stpdata{'%s'}{'%s'}{'True'} = 'True';\n", - driver, desc.name); + printf("$stp_bools{'%s'}{'%s'} = %d;\n", + driver, desc.name, -1); } else if (desc.p_type == STP_PARAMETER_TYPE_DOUBLE) { if (desc.bounds.dbl.lower <= desc.deflt.dbl && desc.bounds.dbl.upper >= desc.deflt.dbl) - { - printf("$stp_float_values{'%s'}{'MINVAL'}{'%s'} = %.3f;\n", - driver, desc.name, desc.bounds.dbl.lower); - printf("$stp_float_values{'%s'}{'MAXVAL'}{'%s'} = %.3f;\n", - driver, desc.name, desc.bounds.dbl.upper); - printf("$stp_float_values{'%s'}{'DEFVAL'}{'%s'} = %.3f;\n", - driver, desc.name, desc.deflt.dbl); - /* printf("$stp_float_values{'%s'}{'LONG_NAME'}{'%s'} = '%s';\n", - driver, desc.name, gettext(desc.text)); */ - printf("$stp_float_values{'%s'}{'CATEGORY'}{'%s'} = '%s';\n", - driver, desc.name, gettext(desc.category)); - printf("$stp_float_values{'%s'}{'HELP'}{'%s'} = q(%s);\n", - driver, desc.name, (desc.help ? gettext(desc.help) : "''")); - printf("$stp_float_values{'%s'}{'MANDATORY'}{'%s'} = q(%d);\n", - driver, desc.name, desc.is_mandatory); - } + printf("$stp_float_values{'%s'}{'%s'} = [%d, %.3f, %.3f, %.3f];\n", + driver, desc.name, desc.is_mandatory, + desc.deflt.dbl, desc.bounds.dbl.lower, + desc.bounds.dbl.upper); } else if (desc.p_type == STP_PARAMETER_TYPE_INT) { if (desc.bounds.integer.lower <= desc.deflt.integer && desc.bounds.integer.upper >= desc.deflt.integer) - { - printf("$stp_int_values{'%s'}{'MINVAL'}{'%s'} = %d;\n", - driver, desc.name, desc.bounds.integer.lower); - printf("$stp_int_values{'%s'}{'MAXVAL'}{'%s'} = %d;\n", - driver, desc.name, desc.bounds.integer.upper); - printf("$stp_int_values{'%s'}{'DEFVAL'}{'%s'} = %d;\n", - driver, desc.name, desc.deflt.integer); - /* printf("$stp_int_values{'%s'}{'LONG_NAME'}{'%s'} = '%s';\n", - driver, desc.name, gettext(desc.text)); */ - printf("$stp_int_values{'%s'}{'CATEGORY'}{'%s'} = '%s';\n", - driver, desc.name, gettext(desc.category)); - printf("$stp_int_values{'%s'}{'HELP'}{'%s'} = q(%s);\n", - driver, desc.name, (desc.help ? gettext(desc.help) : "''")); - printf("$stp_int_values{'%s'}{'MANDATORY'}{'%s'} = q(%d);\n", - driver, desc.name, desc.is_mandatory); - } + printf("$stp_int_values{'%s'}{'%s'} = [%d, %d, %d, %d];\n", + driver, desc.name, desc.is_mandatory, + desc.deflt.integer, desc.bounds.integer.lower, + desc.bounds.integer.upper); } else if (desc.p_type == STP_PARAMETER_TYPE_DIMENSION) { if (desc.bounds.dimension.lower <= desc.deflt.dimension && desc.bounds.dimension.upper >= desc.deflt.dimension) - { - printf("$stp_dimension_values{'%s'}{'MINVAL'}{'%s'} = %f;\n", - driver, desc.name, desc.bounds.dimension.lower); - printf("$stp_dimension_values{'%s'}{'MAXVAL'}{'%s'} = %f;\n", - driver, desc.name, desc.bounds.dimension.upper); - printf("$stp_dimension_values{'%s'}{'DEFVAL'}{'%s'} = %f;\n", - driver, desc.name, desc.deflt.dimension); - /* printf("$stp_dimension_values{'%s'}{'LONG_NAME'}{'%s'} = '%s';\n", - driver, desc.name, gettext(desc.text)); */ - printf("$stp_dimension_values{'%s'}{'CATEGORY'}{'%s'} = '%s';\n", - driver, desc.name, gettext(desc.category)); - printf("$stp_dimension_values{'%s'}{'HELP'}{'%s'} = q(%s);\n", - driver, desc.name, (desc.help ? gettext(desc.help) : "''")); - printf("$stp_dimension_values{'%s'}{'MANDATORY'}{'%s'} = q(%d);\n", - driver, desc.name, desc.is_mandatory); - } + printf("$stp_dimension_values{'%s'}{'%s'} = [%d, %.3f, %.3f, %.3f];\n", + driver, desc.name, desc.is_mandatory, + desc.deflt.dimension, desc.bounds.dimension.lower, + desc.bounds.dimension.upper); } tcount += count; } @@ -240,24 +215,14 @@ main(int argc, char **argv) stp_parameter_list_destroy(params); if (tcount > 0) { + printf("$stpdata{'%s'}{'Color'} = [qw(", driver); if (printer_is_color) - { - printf("$defaults{'%s'}{'%s'} = '%s';\n", - driver, "Color", "Color"); - printf("$stpdata{'%s'}{'%s'}{'%s'} = '%s';\n", - driver, "Color", "Color", "Color"); - printf("$stpdata{'%s'}{'%s'}{'%s'} = '%s';\n", - driver, "Color", "RawCMYK", "Raw CMYK"); - } - else - printf("$defaults{'%s'}{'%s'} = '%s';\n", - driver, "Color", "Grayscale"); - printf("$stpdata{'%s'}{'%s'}{'%s'} = '%s';\n", - driver, "Color", "Grayscale", "Gray Scale"); - printf("$stpdata{'%s'}{'%s'}{'%s'} = '%s';\n", - driver, "Color", "BlackAndWhite", "Black and White"); + fputs("Color RawCMYK ", stdout); + fputs("Grayscale BlackAndWhite)];\n", stdout); } stp_vars_destroy(pv); } + if (printer_list) + stp_string_list_destroy(printer_list); return 0; } diff --git a/src/testpattern/printers.c b/src/testpattern/printers.c index 5f36568..99c3bc6 100644 --- a/src/testpattern/printers.c +++ b/src/testpattern/printers.c @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H @@ -37,7 +36,8 @@ main(int argc, char **argv) const stp_printer_t *p = stp_get_printer_by_index(i); if (strcmp(stp_printer_get_family(p), "ps") && strcmp(stp_printer_get_family(p), "raw")) - printf("%s\n", stp_printer_get_driver(p)); + printf("%d %s %s\n", stp_printer_get_model(p), + stp_printer_get_family(p), stp_printer_get_driver(p)); } return 0; } diff --git a/src/testpattern/run-testpattern-1 b/src/testpattern/run-testpattern-1.in index a248e22..bb84fda 100755..100644 --- a/src/testpattern/run-testpattern-1 +++ b/src/testpattern/run-testpattern-1.in @@ -1,4 +1,4 @@ -#!/bin/sh +#!@BASHREAL@ # Driver for test pattern generator # @@ -16,11 +16,29 @@ # 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. +# along with this program. If not, see <https://www.gnu.org/licenses/>. + +if [[ -n "$STP_TEST_LOG_PREFIX" ]] ; then + redir="${STP_TEST_LOG_PREFIX}${0##*/}_$$.log" + if [[ -n $BUILD_VERBOSE ]] ; then + exec > >(tee -a "$redir" >&3) + else + exec 1>>"$redir" + fi + exec 2>&1 +fi retval=0 +if [ "$STP_TEST_PROFILE" != full -a -n "$STP_TEST_SUITE" ] ; then + exit 77 +fi + +if [ -n "$STP_TEST_DEBUG" ] ; then + echo "Would run $0 $@" + exit 0 +fi + if [ -z "$srcdir" -o "$srcdir" = "." ] ; then sdir=`pwd` elif [ -n "`echo $srcdir |grep '^/'`" ] ; then @@ -72,7 +90,7 @@ set_args() { -h*|--h*) usage ;; -v|--valgrind) valopts='--tool=memcheck' ; valgrind=`expr $valgrind + 1` ;; -c|--cachegrind) valopts='--skin=cachegrind'; valgrind=4 ;; - -g|--gdb-attach) valopts='--gdb-attach=yes' ;; + -g|--gdb-attach) valopts='--vgdb=yes' ;; -p|--parameter) shift; set_opt "$1" ;; -n|--dontrun) dontrun=1 ;; -O|--output) shift; output="$1" ;; @@ -242,10 +260,10 @@ run_testpattern() { suppress='' fi case "$valgrind" in - 1) valgrind $valopts -q --num-callers=100 --leak-check=yes --error-limit=no ./testpattern $suppress ;; - 2) valgrind $valopts --num-callers=100 --leak-resolution=high --leak-check=yes --error-limit=no ./testpattern $suppress ;; - 3) valgrind $valopts --error-limit=no --num-callers=100 --show-reachable=yes --leak-resolution=high --leak-check=yes ./testpattern $suppress ;; - 4) valgrind $valopts ./testpattern $suppress ;; + 1) libtool --mode=execute valgrind $valopts -q --num-callers=100 --leak-check=yes --error-limit=no ./testpattern $suppress ;; + 2) libtool --mode=execute valgrind $valopts --num-callers=100 --leak-resolution=high --leak-check=yes --error-limit=no ./testpattern $suppress ;; + 3) libtool --mode=execute valgrind $valopts --error-limit=no --num-callers=100 --show-reachable=yes --leak-resolution=high --leak-check=yes ./testpattern $suppress ;; + 4) libtool --mode=execute valgrind $valopts ./testpattern $suppress ;; *) ./testpattern $suppress ;; esac if [ $? -ne 0 ] ; then diff --git a/src/testpattern/run-testpattern-2.check.in b/src/testpattern/run-testpattern-2.check.in new file mode 100644 index 0000000..65c3069 --- /dev/null +++ b/src/testpattern/run-testpattern-2.check.in @@ -0,0 +1,113 @@ +#!@BASHREAL@ + +# Meta-harness for rastertogutenprint test harness. +# +## Copyright (C) 2018 Robert Krawitz +## +## 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, 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, see <https://www.gnu.org/licenses/>. + + +if [[ -n "$STP_TEST_LOG_PREFIX" ]] ; then + redir="${STP_TEST_LOG_PREFIX}${0##*/}_$$.log" + if [[ -n $BUILD_VERBOSE ]] ; then + exec > >(tee -a "$redir" >&3) + else + exec 1>>"$redir" + fi + exec 2>&1 +fi + +STP_TEST_PROFILE=${STP_TEST_PROFILE:-full} + +set -e + +declare QUIET=${TRAVIS_MODE:+-q} +declare FASTOPT="-dDitherAlgorithm=VeryFast -dResolution=MIN -dPageSize=MIN" +declare MIN_PRINTERS="@MINIMAL_PRINTERS_TO_TEST@" + +function runit() { + echo "================================================================" + echo "$@" + [[ -z $STP_TEST_DEBUG ]] && "$@" +} + +function test_minimal() { + runit ./run-testpattern-2 -s $FASTOPT -dColorCorrection=Raw \ + -o InkType -o InkSet,RawChannels -o Duplex \ + -o MediaType -o InputSlot -o FullBleed -o UseGloss \ + -o Orientation -o LabelSeparator -o Resolution -T 720 \ + "$@" $MIN_PRINTERS + runit ./run-testpattern-2 -s $FASTOPT -dColorCorrection=Raw -o - -G 1x1 +} + +function test_fast() { + runit ./run-testpattern-2 -s $QUIET $FASTOPT -dColorCorrection=Raw \ + -o InkType -o InkSet,RawChannels -o Duplex \ + -o MediaType -o InputSlot -o FullBleed -o UseGloss \ + -o Orientation -o LabelSeparator -o Resolution -T 720 "$@" + runit ./run-testpattern-2 $QUIET $FASTOPT -dColorCorrection=Raw -o - + runit ./run-testpattern-2 -s $FASTOPT \ + -o TPMode,ColorCorrection,InkType,UseGloss $MIN_PRINTERS + runit ./run-testpattern-2 -s $QUIET $FASTOPT -o - -G 1x1 +} + +function test_full() { + runit ./run-testpattern-2 -s $QUIET + runit ./run-testpattern-2 $QUIET $FASTOPT -dColorCorrection=Raw -o - -G 1x1 + runit ./run-testpattern-2 -s $QUIET \ + -oPageSize,Resolution=MIN,DitherAlgorithm=VeryFast + runit ./run-testpattern-2 -s $QUIET $FASTOPT \ + -o TPMode,ColorCorrection,InkType,UseGloss +} + +function test_valgrind_minimal() { + runit ./run-testpattern-2 -s -v -v $FASTOPT -o InkType \ + -o InkSet,RawChannels -o Duplex -o MediaType -o InputSlot \ + -o FullBleed -o UseGloss -o Orientation -o LabelSeparator "$@" \ + $MIN_PRINTERS + runit ./run-testpattern-2 -s -v -v $FASTOPT -o - -G 1x1 "$@" \ + $MIN_PRINTERS +} + +function test_valgrind_fast() { + test_valgrind_minimal + runit ./run-testpattern-2 -s -v -v $QUIET $FASTOPT -o - "$@" +} + +function test_valgrind() { + runit ./run-testpattern-2 -s -v -v $QUIET $FASTOPT -o InkType \ + -o InkSet,RawChannels -o Duplex -o MediaType -o InputSlot \ + -o FullBleed -o UseGloss -o Orientation -o LabelSeparator "$@" + runit ./run-testpattern-2 -s -v -v $FASTOPT \ + -o TPMode,ColorCorrection,InkType,UseGloss "$@" $MIN_PRINTERS + runit ./run-testpattern-2 -s -v -v $QUIET $FASTOPT -dColorCorrection=Raw -o - -G 1x1 +} + +function test_checksums() { + export STP_DEBUG=$(printf "0x%x" $((0x8000000 | ${STP_DEBUG:-0}))) + runit ./run-testpattern-2 -q -M ':4' "$@" + runit ./run-testpattern-2 -F -s -q -M ':4' \ + -o PageSize,Resolution=MIN,DitherAlgorithm=VeryFast "$@" + runit ./run-testpattern-2 -F -s -q -M ':4' $FASTOPT \ + -o TPMode,ColorCorrection,InkType,UseGloss "$@" +} + +case "$STP_TEST_PROFILE" in + full|fast|valgrind|checksums|minimal|valgrind_minimal|valgrind_fast) + test_$STP_TEST_PROFILE + ;; + *) + exit 77 + ;; +esac diff --git a/src/testpattern/run-testpattern-2.in b/src/testpattern/run-testpattern-2.in index 006da1c..ee8f5f4 100644 --- a/src/testpattern/run-testpattern-2.in +++ b/src/testpattern/run-testpattern-2.in @@ -16,8 +16,7 @@ # 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. +# along with this program. If not, see <https://www.gnu.org/licenses/>. use Getopt::Long; Getopt::Long::Configure("bundling", "no_ignore_case", "pass_through"); @@ -52,6 +51,7 @@ my @standard_options = ("InkType", "MediaType", "InputSlot", "ColorCorrection", + "TPMode", "ImageType", "FullBleed", "Quality", @@ -62,9 +62,22 @@ my @standard_options = ("InkType", "CyanDensity", "Orientation", "LabelSeparator"); +my @tp_modes = ("cmyk8", + "cmyk16", + "kcmy8", + "kcmy16", + "rgb8", + "rgb16", + "cmy8", + "cmy16", + "gray8", + "gray16", + "white8", + "white16"); my $global_status = 1; my $run_installed = 0; my $use_min_res = 0; +my $use_min_pagesize = 0; my $help = 0; my $output = undef; my $hsize = 0.1; @@ -79,8 +92,6 @@ my $global_printer; my $global_messages; my $global_page; my $global_case; -my $enable_static = "@ENABLE_STATIC@"; -my $enable_shared = "@ENABLE_SHARED@"; my @extras = (); my @job_extras = (); @@ -88,6 +99,7 @@ my @messages = (); my @global_messages = (); my @families = (); my %stpdata = (); +my %resolutions = (); my %models_found = (); my %models; my %families; @@ -105,15 +117,22 @@ my $verbose = 0; my $use_unused_options = 0; my $proc_count = 1; my $round = 0; +my $print_family = 0; +my $res_limit = 0; +my $proc_rotor = 0; +my $case_no = 0; +my $vg = "libtool --mode=execute valgrind"; my @default_options = (); my %base_settings = ("DitherAlgorithm" => "Fast"); my %param_types; -my %param_classes; -my %param_levels; +my %stp_dimension_values; my %stp_float_values; my %stp_int_values; +my %min_page_size; +my %max_page_size; +my %stp_bools; my %rerun_cases; if (defined $ENV{"STP_PARALLEL"}) { @@ -123,7 +142,12 @@ if (defined $ENV{"STP_PARALLEL"}) { } } +if (defined $ENV{"STP_TEST_FAMILY"}) { + @families = split(/ +/, $ENV{"STP_TEST_FAMILY"}); +} + GetOptions("C=s" => \$csum_type, + "F" => \$print_family, "G=s" => \$geometry, "H!" => \$halt_on_error, "L" => \$list_options, @@ -132,6 +156,7 @@ GetOptions("C=s" => \$csum_type, "P:i" => \$duplex_pages, "R+" => \$use_min_res, "S+" => \$single, + "T:i" => \$res_limit, "V+" => \$verbose, "X" => \$rerun, "Y=s" => \@include_patterns, @@ -188,6 +213,8 @@ Usage: run-testpattern-2 [opts] [model ...] -O out_dir Generate actual output and place it in the specified directory, one file per run. Directory will be created if necessary. + -F Report printer name as "family_modelno" rather than + model ID. Control options: -H Halt on any error. @@ -205,7 +232,9 @@ Usage: run-testpattern-2 [opts] [model ...] Test selection/control options: -d option=value Test this option with only the specified (default) value, - if available. + if available. For Resolution and PageSize the special + values MIN and MAX can be used to specify the + lowest/smallest and highest/largest respectively. -G geometry Specify geometry (=(HxV)(+L+T), as fractions of page). -o option Test this option. Multiple -o options may be specified. option1,option2... tests all combinations of each @@ -216,12 +245,15 @@ Usage: run-testpattern-2 [opts] [model ...] Default: $options -o+ Any options specified with -o will be tested in addition - to those specified. + to those specified (or omitted if -o -option is used) -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. -R Use the minimum resolution (rather than the default) to test other options. Equivalent to -dResolution=MIN. + -T maxres Limit the tested resolutions to a maximum of maxres in + both dimensions; use the lowest resolution available + if none meet the criterion. -X Repeat specified cases listed on standard input. -N Supply all requested options, even if unused. -u Round all dimensions to the lower point (for @@ -255,14 +287,15 @@ if ($use_min_res) { if (@special_options) { my (%options); my ($optseq) = 1; - if (scalar grep { /^\+$/ } @special_options) { + if ((scalar grep { /^\+$/ } @special_options) || + (! scalar grep { /^[^-]/ } @special_options)) { map { $options{$_} = $optseq++; } @standard_options; } if (scalar grep { /^\-$/ } @special_options) { %options = (); } foreach my $opt (@special_options) { - next if $_ eq '+'; + next if $opt eq '+'; if ($opt =~ /^-/) { $opt = substr($opt, 1); delete $options{$opt}; @@ -307,13 +340,16 @@ my $srcdir = $ENV{"srcdir"}; my $sdir; $geometry =~ s/^=*//; -if ($geometry =~ /^(([01]?(\.[0-9]*)?)x([01]?(\.[0-9]*)?))?(\+([01]?(\.[0-9]*)?)\+([01]?(\.[0-9]*)?))?$/) { +if ($geometry =~ /^(([01]?(\.[0-9]*)?)(x([01]?(\.[0-9]*)?))?)?(\+([01]?(\.[0-9]*)?)(\+([01]?(\.[0-9]*)?))?)?$/) { my ($H) = $2; - my ($V) = $4; - my ($L) = $7; - my ($T) = $9; + my ($V) = $5; + my ($L) = $8; + my ($T) = $11; if ($H) { $hsize = $H; + if (not $V) { + $V=$H; + } if ($hsize > 1) { $hsize = 1; } @@ -325,6 +361,9 @@ if ($geometry =~ /^(([01]?(\.[0-9]*)?)x([01]?(\.[0-9]*)?))?(\+([01]?(\.[0-9]*)?) } } if ($L) { + if (not $T) { + $T=$L; + } $left = $L; } if ($T) { @@ -350,10 +389,6 @@ if (! $run_installed && ! defined $ENV{"STP_DATA_PATH"}) { $ENV{"STP_DATA_PATH"} = "${sdir}/../xml"; } -if ($valgrind && ! $run_installed && $enable_shared ne "no") { - die "Valgrind is not compatible with --enable-shared in tree.\nPlease use autogen.sh --disable-shared.\n"; -} - if (! defined $ENV{"STP_MODULE_PATH"}) { $ENV{"STP_MODULE_PATH"} = "${sdir}/../main:${sdir}/../main/.libs"; } @@ -395,8 +430,8 @@ sub set_global_message($) { push @global_messages, "message \"$message\";\n" } -sub print_one_testpattern($$;$) { - my ($printer, $pages, $raw) = @_; +sub print_one_testpattern($$$;$) { + my ($printer, $pages, $tp_mode, $raw) = @_; my $stuff = join "", @global_messages; $stuff .= join "", @job_extras; $global_printer = $printer; @@ -449,8 +484,9 @@ sub print_one_testpattern($$;$) { $stuff .= ";\n"; $stuff .= "end;\n"; } else { - $stuff .= << 'EOF'; -mode rgb 8; + $tp_mode =~ s/([81]+)/ $1/; + $stuff .= << "EOF"; +mode $tp_mode; pattern 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 ; pattern 1.0 1.0 1.0 1.0 1.0 0.0 0.0 1.0 0.0 1.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0; pattern 1.0 1.0 1.0 1.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 1.0 1.0 0.0 0.0 1.0; @@ -504,37 +540,84 @@ 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; - $extra_arg = join " ", @printer_list; -} else { +sub get_printers() { + map { $exclude_list{$_} = 1; } @exclude_list; + $include_pattern = join("|", map {"($_)"} @include_patterns); + $exclude_pattern = join("|", map {"($_)"} @exclude_patterns); + my (@nprinter_list); + my $extra_arg = ""; + my (%families); + my (%model_families); + my (%printer_models); + map { $families{$_} = 1; } @families; open PIPE, "./printers|" or die "Cannot run printers: $!\n"; + my ($line_count); 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, $_; + $line_count++; + my ($model, $family, $printer) = split; + my ($model_family) = "${model}_${family}"; + $printer_models{$printer} = $model_family; + if (! defined $model_families{$model_family}) { + $model_families{$model_family} = $printer; + } + next if @families && ! defined $families{$family}; + next if $exclude_list{$printer}; + next if $exclude_pattern ne '' && $printer =~ /$exclude_pattern/; + next if $include_pattern ne '' && ! $printer =~ /$include_pattern/; + next if $skip_duplicate_printers && $model_families{$model_family} ne $printer; + push @nprinter_list, $printer; } close PIPE; + if ($#ARGV >= 0) { + my ($bad_printers_found) = 0; + @nprinter_list = grep { defined $_ } map { + if (defined $printer_models{$_}) { + $_; + } elsif (defined $model_families{$_}) { + $model_families{$_}; + } else { + print STDERR "Unknown printer ${_}!\n"; + $bad_printers_found = 1; + undef; + } + } @ARGV; + } + exit 1 if (! scalar @nprinter_list); + return @nprinter_list; } -if ($list_printers) { - print join("\n", sort @printer_list), "\n"; - exit 0; -} +sub load_printer_data() { + my ($extra_arg) = join(" ", @printer_list); + open PIPE, "./printer_options $extra_arg|" or die "Cannot run printer_options: $!\n"; + while(<PIPE>) { + next if m!^#!; + eval $_; + } + close PIPE or die "Cannot run printer_options: $!\n"; + if ($rerun) { + while (<>) { + chomp; + s/^[^a-zA-Z]*//; + s/\..*//; + $rerun_cases{$_} = 1; + } + } -open PIPE, "./printer_options $extra_arg|" or die "Cannot run printer_options: $!\n"; -while(<PIPE>) { - next if m!^#!; - eval $_; + my (@nprinter_list); + foreach my $printer (@printer_list) { + my $model_id = $models{$printer}; + my $family_id = $families{$printer}; + if (($skip_duplicate_printers && $models_found{$family_id}{$model_id}) || + (@families && ! grep { $family_id eq $_ } @families)) { + } else { + $models_found{$family_id}{$model_id} = 1; + push @nprinter_list, $printer; + } + } + @printer_list = @nprinter_list; } -close PIPE or die "Cannot run printer_options: $!\n"; sub do_print($$) { my ($output, $fh) = @_; @@ -572,7 +655,9 @@ sub do_output($) { my $outfile = "$output/$outbase"; if (defined $csum_file) { $checksum_cmd = "${csum_type}sum -b | sed 's/-/$outbase/'"; - if ($csum_file ne '' && $csum_file ne '-') { + if ($csum_file =~ /^\:([0-9]+)$/) { + $checksum_cmd .= " 1>&$1"; + } elsif ($csum_file ne '' && $csum_file ne '-') { $checksum_cmd .= " >> '$csum_file'"; } } elsif (defined $csum_dir) { @@ -622,25 +707,48 @@ sub build_list($$$$) { $_ } } @tmp; + } elsif ($key eq 'PageSize') { + @tmp = map { + if ($_ eq 'MIN') { + $min_page_size{$printer} + } elsif ($_ eq 'MAX') { + $max_page_size{$printer} + } else { + $_ + } + } @tmp; } } elsif ($param_types{$printer}{$key} == 3) { - my ($minv) = $stp_float_values{$printer}{'MINVAL'}{$key}; - my ($defv) = $stp_float_values{$printer}{'DEFVAL'}{$key}; - my ($maxv) = $stp_float_values{$printer}{'MAXVAL'}{$key}; + my (@vals) = @{$stp_float_values{$printer}{$key}}; + my ($minv) = $vals[2]; + my ($defv) = $vals[1]; + my ($maxv) = $vals[3]; push @tmp, $minv; push @tmp, ($minv + $defv) / 2.0; push @tmp, $defv; push @tmp, ($defv + $maxv) / 2.0; push @tmp, $maxv; } elsif ($param_types{$printer}{$key} == 1) { - my ($minv) = $stp_int_values{$printer}{'MINVAL'}{$key}; - my ($maxv) = $stp_int_values{$printer}{'MAXVAL'}{$key}; + my (@vals) = @{$stp_int_values{$printer}{$key}}; + my ($minv) = $vals[2]; + my ($maxv) = $vals[3]; push @tmp, ($minv..$maxv); } elsif ($param_types{$printer}{$key} == 2) { push @tmp, 0; push @tmp, 1; + } elsif ($key eq "TPMode") { + push @tmp, @tp_modes; + } elsif ($key eq "Resolution") { + @tmp = sort keys %{$resolutions{$printer}}; + if ($res_limit > 0) { + @tmp = grep { $resolutions{$printer}{$_}[0] <= $res_limit && + $resolutions{$printer}{$_}[1] <= $res_limit} @tmp; + } + if (! @tmp) { + push @tmp, $min_res; + } } elsif (defined($param_types{$printer}{$key})) { - @tmp = keys %{$stpdata{$printer}{$key}}; + @tmp = @{$stpdata{$printer}{$key}}; } if (! @tmp) { return @stuff; @@ -661,27 +769,28 @@ sub build_list($$$$) { sub build_key($$) { my ($keys, $printer) = @_; my (@keys) = split (/,/, $keys); - my (@answer) = grep { defined $param_types{$printer}{$_} || /=/ } @keys; + my (@answer) = grep { $_ eq "TPMode" || defined $param_types{$printer}{$_} || /=/ } @keys; return join ",", @answer; } sub get_min_max_res($) { my ($printer) = @_; - my (@resolutions) = grep {$_ ne 'None' } keys %{$stpdata{$printer}{'Resolution'}}; + my (%reslist) = %{$resolutions{$printer}}; my $min_res_name; - my $min_res_value = 0; + my $min_res_value = 5760*5760; my $max_res_name; my $max_res_value = 0; - foreach my $res (sort @resolutions) { - my $res_value = ($stpdata{$printer}{'x_resolution'}{$res} * - $stpdata{$printer}{'y_resolution'}{$res}); - if ($min_res_value == 0 || $res_value < $min_res_value) { + # We want to get the same named resolution each time. + foreach my $resid (sort keys %reslist) { + my ($res) = $reslist{$resid}; + my ($res_value) = $$res[0] * $$res[1]; + if ($res_value < $min_res_value) { $min_res_value = $res_value; - $min_res_name = $res; + $min_res_name = $resid; } if ($res_value > $max_res_value) { $max_res_value = $res_value; - $max_res_name = $res; + $max_res_name = $resid; } } return ($min_res_name, $max_res_name); @@ -689,7 +798,7 @@ sub get_min_max_res($) { sub get_printing_modes($) { my ($printer) = @_; - my (@printing_modes) = grep {$_ ne 'None' } keys %{$stpdata{$printer}{'PrintingMode'}}; + my (@printing_modes) = grep {$_ ne 'None' } @{$stpdata{$printer}{'PrintingMode'}}; if ($base_settings{'PrintingMode'}) { if ($base_settings{'PrintingMode'} eq 'Color' && grep { $_ eq 'Color' } @printing_modes) { @@ -724,7 +833,41 @@ sub get_optvals($$$) { return %opt_vals; } -# Resolution needs special handling because of MIN and MAX +sub setup_printer_params($) { + my ($printer) = @_; + if ($stpdata{$printer}) { + foreach my $k (sort keys %{$stpdata{$printer}}) { + my ($vals) = $stpdata{$printer}{$k}; + foreach my $v (0..@$vals) { + if (substr($$vals[$v], 0, 1) eq '+') { + $$vals[$v] = substr($$vals[$v], 1); + $defaults{$printer}{$k} = $$vals[$v]; + last; + } + } + } + map { $param_types{$printer}{$_} = 0 } keys %{$stpdata{$printer}}; + } + $param_types{$printer}{"Resolution"} = 0; + if ($stp_int_values{$printer}) { + map { $param_types{$printer}{$_} = 1 } keys %{$stp_int_values{$printer}}; + } + if ($stp_bools{$printer}) { + map { $param_types{$printer}{$_} = 2 } keys %{$stp_bools{$printer}}; + } + if ($stp_float_values{$printer}) { + map { $param_types{$printer}{$_} = 3 } keys %{$stp_float_values{$printer}}; + } + if ($stp_dimension_values{$printer}) { + map { $param_types{$printer}{$_} = 8 } keys %{$stp_dimension_values{$printer}}; + } + # curve = 4 + # file = 5 + # raw = 6 + # array = 7 +} + +# Resolution and PageSize need special handling because of MIN and MAX # Duplex needs special handling because of printing multiple pages, and # need to set JobMode # RawChannels needs special handling because it's handled specially by @@ -734,6 +877,7 @@ sub do_printer($$) { my $first_time = 1; my %opt_vals = {}; + setup_printer_params($printer); my (@printing_modes) = get_printing_modes($printer); return if (! @printing_modes); my ($min_res, $max_res) = get_min_max_res($printer); @@ -748,10 +892,22 @@ sub do_printer($$) { map {$subkeys{$_} = 1} @subkeys; my $opt; foreach $opt (@opts) { - @extras = (); - @job_extras = (); @messages = (); @global_messages = (); + my ($pname) = $print_family ? + "${models{$printer}}-$families{$printer}" : $printer; + if ($first_time) { + if ($quiet < 2) { + set_global_message("$pname\n"); + } elsif ($quiet == 2) { + set_global_message("."); + } + $first_time = 0; + } + next if (($case_no++ % $proc_count) != $proc_rotor); + my ($tp_mode) = "rgb8"; + @extras = (); + @job_extras = (); my (@ovals); my $rawval; my (@subopts) = split (/,/, $opt); @@ -761,6 +917,8 @@ sub do_printer($$) { next if ($k eq "RawChannels" && $v ne "None" && $pmode ne "Color"); if ($k eq "RawChannels") { $rawval = $v; + } elsif ($k eq "TPMode") { + $tp_mode = $v; } else { set_opt($k, $v, $printer); } @@ -773,13 +931,18 @@ sub do_printer($$) { $setting = $min_res; } elsif ($_ eq "Resolution" && $setting eq "MAX") { $setting = $max_res; + } elsif ($_ eq "PageSize" && $setting eq "MIN") { + $setting = $min_page_size{$printer}; + } elsif ($_ eq "PageSize" && $setting eq "MAX") { + $setting = $max_page_size{$printer}; } set_opt($_, $setting, $printer); push @ovals, "${_}=$setting"; } } grep { ! defined $subkeys{$_} && - ($use_unused_options || - defined $stpdata{$printer}{$_})} (keys %base_settings); + ($use_unused_options || $_ eq "Resolution" || + $_ eq "TPMode" || + defined $stpdata{$printer}{$_})} (sort keys %base_settings); my $pages = $std_pages; set_opt("PrintingMode", $pmode, $printer); if ($key =~ /Duplex/) { @@ -787,53 +950,27 @@ sub do_printer($$) { $pages = $duplex_pages; } my $rawval; - if ($first_time) { - if ($quiet < 2) { - set_global_message("$printer\n"); - } elsif ($quiet == 2) { - set_global_message("."); - } - $first_time = 0; - } my ($mstring) = join "_", @ovals; $mstring =~ s/=/_/g; my ($ostring) = join "+", @ovals; - my $case = "${printer}_PrintingMode_${pmode}_${mstring}"; + my $case = "${pname}_PrintingMode_${pmode}_${mstring}"; $global_case = $case; if (! $rerun || $rerun_cases{$case}) { $global_messages = $case; do_output($case); set_message(" ${pmode}+${ostring}"); - my $output = print_one_testpattern($printer, $pages, $rawval); + my $output = print_one_testpattern($printer, $pages, $tp_mode, $rawval); do_print($output, $global_fh); } } } } + # Increment the rotor here also, so that if the degree of parallelism is even + # and we're running with -o - (an easy way to run minimal cases) we won't wind + # up with half the workers running color and half running black and white. + $case_no++; } -if ($rerun) { - while (<>) { - chomp; - s/^[^a-zA-Z]*//; - s/\..*//; - $rerun_cases{$_} = 1; - } -} - -my (@nprinter_list); -foreach my $printer (@printer_list) { - my $model_id = $models{$printer}; - my $family_id = $families{$printer}; - if (($skip_duplicate_printers && $models_found{$family_id}{$model_id}) || - (@families && ! grep { $family_id eq $_ } @families)) { - } else { - $models_found{$family_id}{$model_id} = 1; - push @nprinter_list, $printer; - } -} -@printer_list = @nprinter_list; - sub restart_testpattern { my ($silent) = @_; if (! $silent) { @@ -868,23 +1005,32 @@ sub stopit { } } +sub get_default($$) { + my ($printer, $opt) = @_; + if (defined $defaults{$printer}{$opt}) { + return $defaults{$printer}{$opt}; + } else { + return $stpdata{$printer}{$opt}[0]; + } +} + sub list_options() { if ($#printer_list > 0) { die "-L must be used with one printer\n"; } my ($printer) = $printer_list[0]; foreach my $opt (sort keys %{$stpdata{$printer}}) { - next if $opt eq "x_resolution"; - next if $opt eq "y_resolution"; print "$opt\n"; if ($verbose) { if ($param_types{$printer}{$opt} == 3) { - print " $stp_float_values{$printer}{'MINVAL'}{$opt}\n"; - print " =>$stp_float_values{$printer}{'DEFVAL'}{$opt}\n"; - print " $stp_float_values{$printer}{'MAXVAL'}{$opt}\n"; + my (@vals) = @{$stp_float_values{$printer}{$opt}}; + print " $vals[2]\n"; + print " =>$vals[1]\n"; + print " $vals[3]\n"; } elsif ($param_types{$printer}{$opt} == 1) { - print " $stp_int_values{$printer}{'MINVAL'}{$opt}\n"; - print " $stp_int_values{$printer}{'MAXVAL'}{$opt}\n"; + my (@vals) = @{$stp_float_values{$printer}{$opt}}; + print " $vals[2]\n"; + print " $vals[3]\n"; } elsif ($param_types{$printer}{$opt} == 2) { if ($defaults{$printer}{$opt}) { print " 0\n"; @@ -894,8 +1040,9 @@ sub list_options() { print " 1\n"; } } else { - foreach my $val (sort keys %{$stpdata{$printer}{$opt}}) { - if ($val eq $defaults{$printer}{$opt}) { + my ($default) = get_default($printer, $opt); + foreach my $val (sort @{$stpdata{$printer}{$opt}}) { + if ($val eq $default) { print " =>$val\n"; } else { print " $val\n"; @@ -921,16 +1068,16 @@ sub runit() { $valopts = '--tool=memcheck'; } if ($gdb_attach) { - $valopts .= ' --db-attach=yes'; + $valopts .= ' --vgdb=yes'; } if ($valgrind == 1) { - $valgrind_command = "valgrind $valopts -q --num-callers=50 --error-limit=no --leak-check=yes"; + $valgrind_command = "$vg $valopts -q --num-callers=50 --error-limit=no --leak-check=yes --error-exitcode=1"; } elsif ($valgrind == 2) { - $valgrind_command = "valgrind $valopts --num-callers=50 --error-limit=no --leak-resolution=high --leak-check=yes"; + $valgrind_command = "$vg $valopts --num-callers=50 --error-limit=no --leak-resolution=high --leak-check=yes --error-exitcode=1"; } elsif ($valgrind == 3) { - $valgrind_command = "valgrind $valopts --error-limit=no --num-callers=50 --show-reachable=yes --leak-resolution=high --leak-check=yes"; + $valgrind_command = "$vg $valopts --error-limit=no --num-callers=50 --show-reachable=yes --leak-resolution=high --leak-check=yes --error-exitcode=1"; } elsif ($valgrind == 4) { - $valgrind_command = "valgrind $valopts"; + $valgrind_command = "$vg $valopts --error-exitcode=1"; } # O U T P U T # @@ -942,7 +1089,7 @@ sub runit() { mkdir $csum_dir || die "Can't create directory $csum_dir: $!\n"; } - if (defined $csum_file) { + if (defined $csum_file && ! $csum_file =~ /^\:([0-9]+)$/) { unlink $csum_file; system "touch $csum_file"; } @@ -956,6 +1103,10 @@ sub runit() { my (@children); my ($child_no); my ($kid); + load_printer_data(); + # Note that when testing duplex all pages of the duplex run are done by + # one process, but each page counts as a separate test. So the number + # of cases per process may not always be within 1. if ($proc_count > 1) { for ($child_no = 0; $child_no < $proc_count; $child_no++) { $kid = fork(); @@ -963,19 +1114,9 @@ sub runit() { last; } else { push @children, $kid; + $proc_rotor++; } } - - # Child: select the printers to print, round-robin. - if ($kid == 0) { - my (@xprinter_list); - foreach my $i (0..$#printer_list) { - if ($i % $proc_count == $child_no) { - push @xprinter_list, $printer_list[$i]; - } - } - @printer_list = @xprinter_list; - } } my $status = 1; @@ -1004,7 +1145,7 @@ sub runit() { restart_testpattern(1); do_printer($printer, $global_fh); $status |= close $global_fh; - $status |= ($? & 255); + $error += ($? != 0); } } else { $SIG{PIPE} = sub() { restart_testpattern() }; @@ -1031,10 +1172,14 @@ sub runit() { } } - -if ($list_options) { +@printer_list = get_printers(); +if ($list_printers) { + print join("\n", sort @printer_list), "\n"; +} elsif ($list_options) { + load_printer_data(); list_options(); } elsif ($dontrun) { + load_printer_data(); map { do_printer($_, \*STDOUT) } @printer_list; } else { exit(runit()); diff --git a/src/testpattern/run-testpattern b/src/testpattern/run-testpattern.in index 098f773..d1cedc8 100755..100644 --- a/src/testpattern/run-testpattern +++ b/src/testpattern/run-testpattern.in @@ -1,4 +1,4 @@ -#!/bin/sh +#!@SHELL@ # Driver for test pattern generator # @@ -15,8 +15,7 @@ # 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. +# along with this program. If not, see <https://www.gnu.org/licenses/>. retval=0; @@ -150,10 +149,10 @@ run_testpattern() { suppress='' fi case "$valgrind" in - 1) valgrind $valopts -q --num-callers=100 --leak-check=yes --error-limit=no ./testpattern $suppress ;; - 2) valgrind $valopts --num-callers=100 --leak-resolution=high --leak-check=yes --error-limit=no ./testpattern $suppress ;; - 3) valgrind $valopts --error-limit=no --num-callers=100 --show-reachable=yes --leak-resolution=high --leak-check=yes ./testpattern $suppress ;; - 4) valgrind $valopts ./testpattern $suppress ;; + 1) libtool --mode=execute valgrind $valopts -q --num-callers=100 --leak-check=yes --error-limit=no ./testpattern $suppress ;; + 2) libtool --mode=execute valgrind $valopts --num-callers=100 --leak-resolution=high --leak-check=yes --error-limit=no ./testpattern $suppress ;; + 3) libtool --mode=execute valgrind $valopts --error-limit=no --num-callers=100 --show-reachable=yes --leak-resolution=high --leak-check=yes ./testpattern $suppress ;; + 4) libtool --mode=execute valgrind $valopts ./testpattern $suppress ;; *) ./testpattern $suppress ;; esac if [ $? -ne 0 ] ; then diff --git a/src/testpattern/testpattern.c b/src/testpattern/testpattern.c index 06f8664..2474d69 100644 --- a/src/testpattern/testpattern.c +++ b/src/testpattern/testpattern.c @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* @@ -75,6 +74,7 @@ int global_steps; int global_halt_on_error = 0; double global_ink_limit; int global_noblackline; +int global_colorline; int global_printer_width; int global_printer_height; int global_band_height; @@ -604,6 +604,50 @@ invert_data(unsigned char *data, size_t byte_depth) * Emulate templates with macros -- rlk 20031014 */ +#define FILL_CHANNELS_FUNCTION(T, bits) \ +static void \ +fill_channels_##bits(unsigned char *data, size_t len, size_t scount) \ +{ \ + int i; \ + int c; \ + scount = global_channel_depth; \ + T *s_data = (T *) data; \ + unsigned black_val = global_ink_limit * ((1 << bits) - 1); \ + unsigned blocksize = len / scount; \ + unsigned blocks = blocksize * scount; \ + unsigned extra = len - blocks; \ + memset(s_data, 0, sizeof(T) * len * scount); \ + for (c = 0; c < scount; c++) \ + { \ + for (i = 0; i < blocksize; i++) \ + { \ + s_data[c] = black_val; \ + s_data += global_channel_depth; \ + } \ + } \ + memset(s_data, 0xff, sizeof(T) * extra * \ + global_channel_depth); \ +} + +FILL_CHANNELS_FUNCTION(unsigned short, 16) +FILL_CHANNELS_FUNCTION(unsigned char, 8) + +static void +fill_channels(unsigned char *data, size_t len, size_t scount, size_t bytes) +{ + switch (bytes) + { + case 1: + fill_channels_8(data, len, scount); + break; + case 2: + fill_channels_16(data, len, scount); + break; + } + if (global_invert_data) + invert_data(data, bytes); +} + #define FILL_BLACK_FUNCTION(T, bits) \ static void \ fill_black_##bits(unsigned char *data, size_t len, size_t scount) \ @@ -701,17 +745,22 @@ FILL_BLACK_FUNCTION(unsigned char, 8) static void fill_black(unsigned char *data, size_t len, size_t scount, size_t bytes) { - switch (bytes) + if (global_colorline) + fill_channels(data, len, global_channel_depth, bytes); + else { - case 1: - fill_black_8(data, len, scount); - break; - case 2: - fill_black_16(data, len, scount); - break; + switch (bytes) + { + case 1: + fill_black_8(data, len, scount); + break; + case 2: + fill_black_16(data, len, scount); + break; + } + if (global_invert_data) + invert_data(data, bytes); } - if (global_invert_data) - invert_data(data, bytes); } #define FILL_WHITE_FUNCTION(T, bits) \ diff --git a/src/testpattern/testpattern.h b/src/testpattern/testpattern.h index a5dbe27..1a55656 100644 --- a/src/testpattern/testpattern.h +++ b/src/testpattern/testpattern.h @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H @@ -82,6 +81,7 @@ extern size_mode_t global_size_mode; extern double global_hsize; extern double global_vsize; extern int global_noblackline; +extern int global_colorline; extern const char *global_image_type; extern int global_color_model; extern int global_bit_depth; diff --git a/src/testpattern/testpattern.sample b/src/testpattern/testpattern.sample index 4385cc0..6fb34c7 100644 --- a/src/testpattern/testpattern.sample +++ b/src/testpattern/testpattern.sample @@ -13,8 +13,7 @@ # 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. +# along with this program. If not, see <https://www.gnu.org/licenses/>. # Printer/driver settings. # Printer model diff --git a/src/testpattern/testpatternl.c b/src/testpattern/testpatternl.c index 24cff35..048a31b 100644 --- a/src/testpattern/testpatternl.c +++ b/src/testpattern/testpatternl.c @@ -1,5 +1,5 @@ -#line 3 "testpatternl.c" +#line 2 "testpatternl.c" #define YY_INT_ALIGNED short int @@ -7,8 +7,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 37 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -83,65 +83,61 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + #endif /* ! C99 */ #endif /* ! FLEXINT_H */ -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ +/* begin standard C++ headers. */ -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST +/* TODO: this is always defined, so inline it */ #define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) #else -#define yyconst +#define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. +/* Promotes a possibly negative, possibly signed char to an + * integer in range [0..255] for use as an array index. */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) +#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * - /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START - /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - /* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart(yyin ) - +#define YY_NEW_FILE yyrestart( yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else #define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -158,15 +154,16 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; typedef size_t yy_size_t; #endif -extern yy_size_t yyleng; +extern int yyleng; extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - + #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ @@ -181,7 +178,6 @@ extern FILE *yyin, *yyout; YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) - #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE @@ -224,7 +220,7 @@ struct yy_buffer_state int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ - + /* Whether to try to fill the input buffer when we reach the * end of it. */ @@ -252,7 +248,7 @@ struct yy_buffer_state /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ +static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general @@ -263,7 +259,6 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) - /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ @@ -272,10 +267,10 @@ 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 */ -yy_size_t yyleng; +int yyleng; /* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; +static char *yy_c_buf_p = NULL; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ @@ -284,72 +279,69 @@ static int yy_start = 0; /* start state number */ */ static int yy_did_buffer_switch_on_eof; -void yyrestart (FILE *input_file ); -void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); -void yy_delete_buffer (YY_BUFFER_STATE b ); -void yy_flush_buffer (YY_BUFFER_STATE b ); -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state (void ); - -static void yyensure_buffer_stack (void ); -static void yy_load_buffer_state (void ); -static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); +void yyrestart ( FILE *input_file ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +void yy_delete_buffer ( YY_BUFFER_STATE b ); +void yy_flush_buffer ( YY_BUFFER_STATE b ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state ( void ); -#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) +static void yyensure_buffer_stack ( void ); +static void yy_load_buffer_state ( void ); +static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); +#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) -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,yy_size_t len ); +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); -void *yyalloc (yy_size_t ); -void *yyrealloc (void *,yy_size_t ); -void yyfree (void * ); +void *yyalloc ( yy_size_t ); +void *yyrealloc ( void *, yy_size_t ); +void yyfree ( void * ); #define yy_new_buffer yy_create_buffer - #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } - #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } - #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) -#define yywrap() 1 +#define yywrap() (/*CONSTCOND*/1) #define YY_SKIP_YYWRAP +typedef flex_uint8_t YY_CHAR; -typedef unsigned char YY_CHAR; - -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; +FILE *yyin = NULL, *yyout = NULL; typedef int yy_state_type; extern int yylineno; - int yylineno = 1; extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif #define yytext_ptr yytext -static yy_state_type yy_get_previous_state (void ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); -static int yy_get_next_buffer (void ); -static void yy_fatal_error (yyconst char msg[] ); +static yy_state_type yy_get_previous_state ( void ); +static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); +static int yy_get_next_buffer ( void ); +static void yynoreturn yy_fatal_error ( const char* msg ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. @@ -360,9 +352,8 @@ static void yy_fatal_error (yyconst char msg[] ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; - -#define YY_NUM_RULES 53 -#define YY_END_OF_BUFFER 54 +#define YY_NUM_RULES 54 +#define YY_END_OF_BUFFER 55 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -370,42 +361,44 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[289] = +static const flex_int16_t yy_accept[297] = { 0, - 0, 0, 54, 53, 50, 52, 53, 51, 53, 53, - 47, 47, 30, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 50, 0, 49, 51, 0, 47, - 47, 49, 0, 47, 48, 49, 49, 47, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 18, 49, 49, 49, 49, 49, 19, 49, 49, 49, - 49, 49, 17, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 48, 0, 47, 48, 0, 49, 48, - 47, 49, 49, 35, 49, 49, 49, 45, 49, 49, - - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 34, 49, 49, 49, 49, 13, - 49, 49, 49, 49, 48, 49, 49, 32, 46, 49, - 49, 49, 49, 49, 37, 36, 27, 49, 49, 49, - 33, 14, 49, 49, 49, 49, 49, 31, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 46, 49, 49, 49, 49, 49, 1, - 20, 25, 49, 2, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 42, 49, 49, 3, 21, - - 38, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 39, 49, 49, 49, 49, - 49, 49, 49, 49, 46, 49, 28, 12, 49, 44, - 49, 49, 46, 49, 46, 40, 41, 49, 49, 23, - 5, 49, 49, 49, 49, 49, 46, 26, 49, 49, - 49, 49, 16, 49, 49, 24, 22, 4, 46, 29, - 6, 15, 43, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 7, 49, 8, - 49, 49, 49, 11, 10, 49, 9, 0 + 0, 0, 55, 54, 51, 53, 54, 52, 54, 54, + 48, 48, 31, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 51, 0, 50, 52, 0, 48, + 48, 50, 0, 48, 49, 50, 50, 48, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 18, 50, 50, 50, 50, 50, 19, 50, 50, + 50, 50, 50, 17, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 49, 0, 48, 49, 0, 50, + 49, 48, 50, 50, 36, 50, 50, 50, 50, 46, + + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 35, 50, 50, 50, + 50, 13, 50, 50, 50, 50, 49, 50, 50, 33, + 50, 47, 50, 50, 50, 50, 50, 38, 37, 28, + 50, 50, 50, 34, 14, 50, 50, 50, 50, 50, + 32, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 47, 50, 50, 50, + 50, 50, 50, 1, 20, 26, 50, 2, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 43, + + 50, 50, 3, 21, 39, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 40, 50, 50, 50, 50, 50, 50, 50, 50, 47, + 50, 29, 50, 12, 50, 45, 50, 50, 47, 50, + 47, 41, 42, 50, 50, 24, 5, 50, 50, 50, + 50, 50, 50, 47, 27, 50, 50, 50, 50, 16, + 50, 50, 25, 22, 23, 4, 47, 30, 6, 15, + 44, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 7, 50, 8, 50, 50, + 50, 11, 10, 50, 9, 0 + } ; -static yyconst flex_int32_t yy_ec[256] = +static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -437,7 +430,7 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[66] = +static const YY_CHAR yy_meta[66] = { 0, 1, 1, 2, 1, 1, 1, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, @@ -448,81 +441,81 @@ static yyconst flex_int32_t yy_meta[66] = 3, 3, 3, 3, 3 } ; -static yyconst flex_int16_t yy_base[293] = +static const flex_int16_t yy_base[301] = { 0, - 0, 0, 886, 910, 883, 910, 879, 0, 876, 56, - 60, 64, 910, 872, 68, 74, 70, 71, 72, 75, - 90, 76, 112, 122, 109, 105, 137, 138, 140, 117, - 123, 80, 132, 162, 878, 875, 910, 0, 872, 191, - 201, 868, 180, 205, 215, 230, 252, 247, 145, 165, - 144, 234, 115, 167, 178, 188, 219, 264, 265, 235, - 275, 226, 271, 324, 268, 223, 867, 274, 276, 292, - 311, 280, 866, 291, 295, 294, 313, 339, 318, 314, - 337, 346, 347, 380, 393, 384, 396, 371, 400, 406, - 0, 404, 370, 410, 412, 303, 413, 95, 414, 312, - - 417, 418, 419, 421, 424, 189, 426, 429, 428, 440, - 431, 211, 434, 433, 458, 436, 461, 441, 443, 465, - 471, 468, 478, 482, 862, 480, 484, 488, 491, 858, - 489, 500, 502, 499, 503, 507, 495, 854, 853, 508, - 512, 516, 509, 529, 849, 832, 821, 532, 535, 517, - 798, 794, 531, 546, 537, 558, 559, 793, 562, 556, - 553, 565, 563, 566, 569, 575, 573, 577, 579, 586, - 587, 588, 589, 597, 605, 600, 615, 598, 618, 787, - 748, 678, 620, 643, 625, 621, 606, 634, 636, 639, - 642, 646, 629, 648, 654, 592, 649, 580, 585, 539, - - 445, 661, 647, 662, 669, 676, 668, 680, 681, 671, - 683, 696, 703, 707, 709, 444, 706, 699, 692, 673, - 310, 711, 720, 704, 376, 722, 366, 364, 724, 360, - 733, 729, 355, 732, 332, 321, 315, 744, 727, 302, - 298, 747, 750, 753, 760, 755, 245, 244, 738, 765, - 770, 754, 225, 773, 775, 221, 209, 195, 175, 151, - 759, 102, 97, 810, 784, 771, 795, 786, 789, 815, - 792, 818, 801, 797, 812, 826, 824, 93, 835, 87, - 827, 841, 842, 85, 82, 846, 81, 910, 900, 903, - 906, 84 + 0, 0, 906, 947, 902, 947, 896, 0, 891, 56, + 60, 64, 947, 872, 68, 74, 70, 71, 75, 72, + 87, 76, 81, 119, 108, 109, 135, 130, 102, 143, + 122, 158, 133, 137, 875, 861, 947, 0, 852, 190, + 200, 844, 176, 204, 214, 229, 251, 246, 156, 164, + 182, 219, 233, 194, 234, 187, 148, 224, 264, 266, + 267, 275, 274, 271, 324, 294, 221, 833, 210, 278, + 292, 298, 312, 828, 295, 175, 303, 307, 334, 313, + 349, 351, 345, 355, 372, 384, 392, 401, 404, 411, + 415, 0, 390, 378, 314, 380, 409, 419, 420, 369, + + 421, 344, 422, 431, 432, 425, 433, 434, 435, 438, + 436, 450, 441, 443, 447, 439, 449, 446, 473, 476, + 478, 480, 487, 484, 494, 497, 819, 499, 491, 501, + 504, 773, 503, 506, 507, 505, 512, 511, 518, 772, + 520, 752, 522, 538, 532, 537, 540, 750, 691, 665, + 541, 543, 558, 604, 590, 560, 561, 564, 547, 575, + 528, 578, 569, 567, 571, 586, 584, 585, 591, 587, + 589, 596, 602, 605, 600, 606, 612, 621, 616, 623, + 617, 629, 636, 463, 461, 459, 627, 453, 642, 637, + 646, 643, 656, 658, 651, 668, 661, 669, 666, 384, + + 684, 631, 376, 365, 359, 685, 663, 689, 687, 697, + 664, 688, 692, 686, 714, 711, 712, 713, 715, 723, + 347, 720, 738, 736, 727, 735, 746, 741, 742, 335, + 739, 326, 748, 321, 743, 319, 763, 767, 315, 740, + 310, 302, 293, 756, 768, 280, 276, 769, 783, 776, + 779, 785, 799, 243, 242, 789, 800, 801, 803, 225, + 802, 814, 220, 186, 184, 174, 150, 147, 809, 144, + 98, 852, 817, 806, 827, 816, 826, 841, 823, 848, + 829, 832, 830, 855, 864, 94, 877, 92, 874, 878, + 866, 85, 82, 882, 78, 947, 937, 940, 943, 83 } ; -static yyconst flex_int16_t yy_def[293] = +static const flex_int16_t yy_def[301] = { 0, - 288, 1, 288, 288, 288, 288, 289, 290, 291, 288, - 292, 292, 288, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 288, 289, 288, 290, 291, 288, - 288, 292, 288, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 288, 288, 288, 288, 288, 292, 292, - 47, 292, 292, 292, 292, 292, 292, 292, 292, 292, - - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 288, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 0, 288, 288, - 288, 288 + 296, 1, 296, 296, 296, 296, 297, 298, 299, 296, + 300, 300, 296, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 296, 297, 296, 298, 299, 296, + 296, 300, 296, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 296, 296, 296, 296, 296, 300, + 300, 47, 300, 300, 300, 300, 300, 300, 300, 300, + + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 296, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 0, 296, 296, 296, 296 } ; -static yyconst flex_int16_t yy_nxt[976] = +static const flex_int16_t yy_nxt[1013] = { 0, 4, 5, 6, 7, 8, 9, 10, 10, 4, 11, 12, 12, 13, 14, 15, 16, 17, 18, 14, 19, @@ -531,109 +524,114 @@ static yyconst flex_int16_t yy_nxt[976] = 14, 15, 16, 17, 18, 14, 19, 20, 21, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 14, 31, 32, 33, 34, 14, 40, 41, 41, 43, 44, - 44, 45, 43, 48, 48, 48, 288, 46, 288, 288, - 288, 46, 288, 288, 288, 57, 42, 53, 288, 288, - 288, 62, 49, 288, 50, 288, 47, 55, 288, 51, - - 81, 288, 58, 288, 46, 288, 59, 56, 46, 54, - 288, 52, 57, 288, 53, 60, 61, 288, 62, 49, - 288, 50, 47, 288, 55, 288, 51, 81, 58, 63, - 288, 288, 59, 56, 142, 65, 69, 52, 70, 66, - 288, 96, 60, 61, 79, 288, 288, 67, 288, 68, - 71, 64, 288, 288, 80, 74, 63, 75, 92, 288, - 82, 77, 65, 69, 70, 76, 66, 72, 96, 73, - 288, 79, 78, 288, 67, 288, 68, 71, 93, 83, - 80, 94, 74, 288, 75, 92, 288, 82, 77, 87, - 87, 87, 76, 72, 98, 73, 288, 288, 78, 43, - - 84, 84, 84, 288, 97, 93, 83, 94, 85, 43, - 86, 86, 86, 43, 44, 44, 45, 288, 85, 288, - 99, 98, 46, 43, 45, 45, 45, 288, 150, 288, - 97, 288, 46, 288, 288, 85, 88, 89, 288, 90, - 90, 90, 288, 288, 100, 85, 99, 95, 105, 46, - 155, 107, 288, 288, 116, 43, 48, 48, 48, 46, - 288, 91, 91, 91, 46, 91, 91, 91, 91, 91, - 91, 100, 288, 288, 95, 105, 288, 101, 107, 288, - 116, 102, 288, 288, 288, 103, 104, 115, 288, 108, - 117, 46, 91, 91, 91, 91, 91, 91, 106, 288, - - 288, 123, 288, 288, 101, 109, 288, 118, 102, 125, - 288, 288, 103, 104, 115, 124, 108, 117, 288, 288, - 288, 288, 288, 288, 119, 106, 288, 126, 123, 288, - 120, 109, 288, 118, 140, 131, 125, 144, 110, 111, - 288, 121, 124, 122, 242, 288, 130, 288, 112, 113, - 119, 127, 128, 126, 288, 288, 129, 120, 132, 133, - 140, 114, 131, 288, 144, 110, 111, 121, 288, 122, - 242, 134, 288, 130, 288, 112, 113, 127, 288, 128, - 135, 135, 135, 129, 288, 132, 133, 114, 43, 84, - 84, 84, 43, 86, 86, 86, 137, 85, 134, 88, - - 88, 85, 135, 135, 135, 87, 87, 87, 288, 90, - 90, 90, 288, 85, 288, 90, 90, 90, 288, 136, - 288, 288, 288, 137, 85, 288, 288, 288, 85, 288, - 141, 143, 288, 138, 288, 147, 288, 288, 139, 288, - 85, 288, 288, 149, 288, 153, 136, 65, 288, 288, - 83, 288, 288, 288, 145, 146, 159, 141, 143, 148, - 138, 152, 147, 151, 154, 139, 288, 157, 52, 288, - 149, 160, 153, 288, 65, 156, 288, 83, 158, 288, - 145, 146, 161, 159, 162, 148, 288, 152, 288, 151, - 288, 154, 288, 157, 52, 165, 288, 288, 160, 288, - - 163, 167, 156, 288, 164, 158, 166, 288, 288, 161, - 288, 162, 135, 135, 135, 288, 288, 288, 168, 169, - 288, 175, 165, 173, 288, 288, 163, 170, 167, 176, - 174, 164, 171, 166, 172, 179, 177, 288, 178, 288, - 288, 183, 180, 288, 168, 288, 169, 288, 175, 181, - 173, 186, 182, 170, 288, 184, 176, 174, 171, 185, - 172, 288, 179, 177, 288, 178, 288, 288, 183, 180, - 288, 288, 188, 288, 288, 189, 181, 288, 186, 182, - 193, 288, 184, 288, 187, 288, 185, 288, 288, 190, - 192, 196, 191, 288, 288, 288, 288, 288, 194, 188, - - 288, 195, 189, 200, 201, 288, 288, 193, 288, 198, - 199, 187, 197, 288, 288, 190, 203, 192, 196, 223, - 202, 204, 205, 288, 194, 208, 288, 195, 288, 288, - 200, 201, 206, 288, 209, 198, 199, 288, 213, 207, - 211, 210, 288, 203, 288, 212, 202, 288, 204, 205, - 288, 288, 208, 214, 288, 288, 288, 288, 206, 219, - 215, 209, 288, 218, 213, 220, 207, 211, 210, 288, - 288, 216, 212, 217, 222, 221, 288, 288, 224, 288, - 214, 288, 225, 226, 288, 219, 288, 215, 288, 288, - 218, 288, 220, 227, 230, 229, 232, 216, 231, 217, - - 288, 222, 221, 241, 288, 224, 233, 288, 225, 234, - 226, 288, 288, 228, 288, 288, 235, 288, 240, 288, - 227, 230, 229, 232, 236, 231, 237, 238, 288, 241, - 288, 239, 288, 233, 245, 288, 234, 288, 243, 228, - 288, 288, 244, 235, 252, 240, 288, 250, 246, 248, - 249, 236, 288, 237, 238, 288, 288, 239, 288, 247, - 245, 288, 288, 288, 253, 243, 254, 288, 288, 244, - 258, 252, 257, 288, 250, 246, 248, 249, 288, 288, - 255, 288, 251, 288, 261, 247, 256, 260, 259, 263, - 262, 253, 288, 254, 288, 288, 258, 288, 264, 257, - - 288, 288, 288, 288, 271, 288, 288, 255, 251, 288, - 261, 270, 273, 256, 260, 259, 263, 262, 288, 272, - 288, 274, 276, 288, 265, 266, 288, 279, 267, 288, - 271, 268, 288, 278, 288, 288, 280, 282, 270, 273, - 288, 269, 275, 288, 284, 277, 272, 274, 276, 288, - 288, 265, 266, 279, 288, 267, 283, 288, 268, 278, - 281, 288, 288, 280, 282, 287, 288, 269, 286, 275, - 288, 284, 277, 285, 288, 288, 288, 37, 37, 35, - 288, 37, 37, 283, 35, 288, 281, 288, 288, 288, - 288, 288, 287, 288, 288, 286, 288, 288, 288, 285, - - 36, 36, 36, 38, 288, 38, 39, 39, 39, 3, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288 + 44, 45, 43, 48, 48, 48, 296, 46, 296, 296, + 296, 46, 296, 296, 296, 42, 296, 54, 58, 296, + 296, 63, 49, 296, 50, 296, 47, 56, 64, 51, + + 296, 52, 296, 60, 46, 59, 296, 57, 46, 55, + 296, 53, 61, 62, 54, 58, 296, 296, 63, 49, + 65, 50, 47, 78, 56, 64, 51, 296, 52, 60, + 296, 59, 66, 57, 79, 70, 67, 53, 296, 61, + 62, 296, 71, 296, 68, 296, 69, 75, 72, 76, + 78, 296, 296, 81, 84, 296, 296, 77, 296, 66, + 79, 83, 70, 67, 296, 73, 296, 74, 71, 93, + 80, 68, 296, 69, 75, 72, 76, 94, 82, 81, + 101, 84, 296, 296, 77, 88, 88, 88, 83, 127, + 296, 73, 296, 74, 296, 296, 93, 80, 43, 85, + + 85, 85, 296, 100, 94, 82, 101, 86, 43, 87, + 87, 87, 43, 44, 44, 45, 127, 86, 296, 95, + 98, 46, 43, 45, 45, 45, 119, 296, 296, 296, + 100, 46, 296, 296, 86, 89, 90, 296, 91, 91, + 91, 296, 296, 96, 86, 95, 97, 98, 46, 102, + 296, 296, 118, 119, 43, 48, 48, 48, 46, 296, + 92, 92, 92, 46, 92, 92, 92, 92, 92, 92, + 96, 99, 296, 97, 296, 296, 102, 103, 118, 296, + 107, 104, 296, 296, 296, 105, 296, 106, 296, 110, + 46, 92, 92, 92, 92, 92, 92, 99, 108, 109, + + 296, 296, 296, 296, 103, 111, 296, 107, 104, 120, + 296, 296, 105, 117, 106, 296, 110, 122, 296, 126, + 296, 296, 296, 296, 121, 108, 109, 296, 123, 296, + 124, 111, 296, 125, 296, 120, 128, 140, 112, 113, + 117, 132, 296, 296, 122, 129, 126, 130, 114, 115, + 121, 131, 296, 296, 123, 296, 124, 296, 135, 296, + 125, 116, 128, 296, 140, 112, 113, 296, 132, 147, + 133, 129, 134, 296, 130, 114, 115, 296, 131, 136, + 43, 85, 85, 85, 296, 135, 296, 116, 296, 86, + 89, 89, 296, 137, 137, 137, 147, 133, 296, 134, + + 43, 87, 87, 87, 139, 138, 136, 141, 145, 86, + 88, 88, 88, 137, 137, 137, 86, 296, 86, 296, + 91, 91, 91, 296, 91, 91, 91, 296, 296, 296, + 296, 139, 138, 296, 141, 142, 86, 144, 146, 296, + 296, 296, 296, 296, 296, 86, 296, 296, 150, 296, + 143, 296, 152, 156, 296, 296, 84, 296, 296, 148, + 66, 296, 142, 151, 144, 146, 159, 296, 149, 296, + 155, 296, 154, 153, 157, 150, 143, 160, 53, 152, + 156, 296, 158, 84, 296, 148, 296, 66, 296, 151, + 161, 162, 296, 159, 149, 296, 155, 164, 154, 296, + + 165, 157, 296, 160, 53, 296, 163, 296, 170, 296, + 168, 296, 296, 296, 296, 296, 166, 161, 162, 296, + 167, 137, 137, 137, 164, 169, 296, 165, 296, 176, + 296, 171, 172, 163, 177, 170, 296, 168, 174, 175, + 296, 173, 166, 180, 178, 296, 296, 167, 296, 296, + 179, 296, 169, 184, 182, 296, 176, 171, 185, 172, + 186, 177, 181, 183, 174, 175, 296, 173, 296, 296, + 180, 178, 296, 191, 189, 296, 179, 296, 190, 296, + 184, 182, 187, 296, 188, 185, 296, 186, 192, 181, + 183, 193, 296, 296, 296, 296, 196, 296, 296, 296, + + 191, 189, 194, 197, 296, 190, 195, 200, 296, 187, + 296, 188, 296, 296, 296, 192, 198, 199, 193, 204, + 296, 202, 205, 196, 296, 296, 201, 203, 194, 296, + 197, 296, 206, 207, 200, 296, 208, 296, 209, 296, + 210, 212, 198, 199, 296, 296, 204, 202, 215, 205, + 296, 296, 214, 203, 296, 211, 213, 216, 206, 296, + 207, 217, 219, 208, 296, 209, 296, 210, 212, 296, + 228, 296, 296, 296, 296, 215, 296, 296, 218, 214, + 220, 211, 222, 213, 216, 223, 225, 226, 217, 219, + 221, 224, 296, 296, 296, 296, 296, 296, 230, 296, + + 296, 234, 229, 237, 218, 296, 236, 220, 222, 227, + 231, 232, 223, 225, 226, 235, 221, 224, 233, 296, + 296, 296, 296, 296, 230, 240, 241, 234, 296, 229, + 237, 296, 242, 236, 239, 296, 227, 231, 232, 238, + 243, 244, 235, 296, 296, 233, 296, 296, 296, 296, + 296, 296, 240, 241, 296, 257, 296, 247, 296, 242, + 296, 239, 246, 250, 296, 252, 238, 243, 244, 248, + 245, 296, 251, 249, 253, 296, 296, 296, 254, 255, + 296, 296, 257, 247, 296, 259, 260, 296, 256, 246, + 250, 296, 252, 296, 258, 248, 245, 296, 251, 261, + + 249, 253, 264, 262, 254, 263, 255, 296, 296, 296, + 296, 296, 259, 260, 296, 256, 265, 296, 268, 270, + 258, 266, 296, 267, 296, 296, 261, 296, 271, 264, + 262, 296, 263, 269, 296, 296, 296, 296, 296, 279, + 296, 296, 281, 265, 278, 268, 270, 266, 272, 296, + 267, 280, 296, 284, 288, 271, 296, 37, 282, 269, + 296, 286, 287, 296, 37, 279, 273, 274, 283, 281, + 275, 278, 296, 276, 296, 285, 35, 290, 280, 284, + 296, 288, 296, 277, 282, 296, 296, 286, 287, 289, + 296, 292, 294, 273, 274, 283, 37, 275, 291, 37, + + 276, 295, 285, 35, 290, 296, 296, 296, 296, 277, + 293, 296, 296, 296, 296, 289, 296, 296, 292, 294, + 296, 296, 296, 296, 296, 291, 296, 296, 295, 296, + 296, 296, 296, 296, 296, 296, 293, 36, 36, 36, + 38, 296, 38, 39, 39, 39, 3, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296 } ; -static yyconst flex_int16_t yy_chk[976] = +static const flex_int16_t yy_chk[1013] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -643,105 +641,110 @@ static yyconst flex_int16_t yy_chk[976] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 15, 11, 17, 18, - 19, 12, 16, 20, 22, 19, 292, 17, 32, 287, - 285, 22, 15, 284, 16, 280, 11, 18, 21, 16, - - 32, 278, 19, 98, 11, 263, 20, 18, 12, 17, - 262, 16, 19, 26, 17, 21, 21, 25, 22, 15, - 23, 16, 11, 53, 18, 30, 16, 32, 19, 23, - 24, 31, 20, 18, 98, 24, 25, 16, 26, 24, - 33, 53, 21, 21, 30, 27, 28, 24, 29, 24, - 27, 23, 51, 49, 31, 28, 23, 28, 49, 260, - 33, 29, 24, 25, 26, 28, 24, 27, 53, 27, - 34, 30, 29, 50, 24, 54, 24, 27, 50, 34, - 31, 51, 28, 259, 28, 49, 55, 33, 29, 43, - 43, 43, 28, 27, 55, 27, 56, 106, 29, 40, - - 40, 40, 40, 258, 54, 50, 34, 51, 40, 41, - 41, 41, 41, 44, 44, 44, 44, 257, 41, 112, - 56, 55, 44, 45, 45, 45, 45, 57, 106, 256, - 54, 66, 45, 253, 62, 40, 46, 46, 46, 46, - 46, 46, 52, 60, 57, 41, 56, 52, 60, 44, - 112, 62, 248, 247, 66, 48, 48, 48, 48, 45, - 47, 47, 47, 47, 48, 47, 47, 47, 47, 47, - 47, 57, 58, 59, 52, 60, 65, 58, 62, 63, - 66, 58, 68, 61, 69, 58, 59, 65, 72, 63, - 68, 48, 47, 47, 47, 47, 47, 47, 61, 74, - - 70, 72, 76, 75, 58, 63, 241, 69, 58, 75, - 240, 96, 58, 59, 65, 74, 63, 68, 221, 71, - 100, 77, 80, 237, 70, 61, 79, 76, 72, 236, - 71, 63, 64, 69, 96, 80, 75, 100, 64, 64, - 235, 71, 74, 71, 221, 81, 79, 78, 64, 64, - 70, 77, 78, 76, 82, 83, 78, 71, 81, 82, - 96, 64, 80, 233, 100, 64, 64, 71, 230, 71, - 221, 83, 228, 79, 227, 64, 64, 77, 93, 78, - 88, 88, 88, 78, 225, 81, 82, 64, 84, 84, - 84, 84, 86, 86, 86, 86, 93, 84, 83, 85, - - 85, 86, 85, 85, 85, 87, 87, 87, 89, 89, - 89, 89, 92, 87, 90, 90, 90, 90, 94, 92, - 95, 97, 99, 93, 84, 101, 102, 103, 86, 104, - 97, 99, 105, 94, 107, 103, 109, 108, 95, 111, - 87, 114, 113, 105, 116, 109, 92, 113, 110, 118, - 114, 119, 216, 201, 101, 102, 118, 97, 99, 104, - 94, 108, 103, 107, 110, 95, 115, 116, 111, 117, - 105, 119, 109, 120, 113, 115, 122, 114, 117, 121, - 101, 102, 120, 118, 121, 104, 123, 108, 126, 107, - 124, 110, 127, 116, 111, 124, 128, 131, 119, 129, - - 122, 127, 115, 137, 123, 117, 126, 134, 132, 120, - 133, 121, 135, 135, 135, 136, 140, 143, 128, 129, - 141, 137, 124, 134, 142, 150, 122, 131, 127, 140, - 136, 123, 132, 126, 133, 143, 141, 144, 142, 153, - 148, 150, 144, 149, 128, 155, 129, 200, 137, 148, - 134, 155, 149, 131, 154, 153, 140, 136, 132, 154, - 133, 161, 143, 141, 160, 142, 156, 157, 150, 144, - 159, 163, 157, 162, 164, 159, 148, 165, 155, 149, - 163, 167, 153, 166, 156, 168, 154, 169, 198, 160, - 162, 166, 161, 199, 170, 171, 172, 173, 164, 157, - - 196, 165, 159, 170, 171, 174, 178, 163, 176, 168, - 169, 156, 167, 175, 187, 160, 173, 162, 166, 198, - 172, 174, 175, 177, 164, 178, 179, 165, 183, 186, - 170, 171, 176, 185, 179, 168, 169, 193, 187, 177, - 185, 183, 188, 173, 189, 186, 172, 190, 174, 175, - 191, 184, 178, 188, 192, 203, 194, 197, 176, 193, - 189, 179, 195, 192, 187, 194, 177, 185, 183, 202, - 204, 190, 186, 191, 197, 195, 207, 205, 202, 210, - 188, 220, 203, 204, 206, 193, 182, 189, 208, 209, - 192, 211, 194, 205, 208, 207, 210, 190, 209, 191, - - 219, 197, 195, 220, 212, 202, 211, 218, 203, 212, - 204, 213, 224, 206, 217, 214, 213, 215, 219, 222, - 205, 208, 207, 210, 214, 209, 215, 217, 223, 220, - 226, 218, 229, 211, 224, 239, 212, 232, 222, 206, - 234, 231, 223, 213, 239, 219, 249, 234, 226, 231, - 232, 214, 238, 215, 217, 242, 181, 218, 243, 229, - 224, 244, 252, 246, 242, 222, 243, 261, 245, 223, - 249, 239, 246, 250, 234, 226, 231, 232, 251, 266, - 244, 254, 238, 255, 252, 229, 245, 251, 250, 255, - 254, 242, 265, 243, 268, 180, 249, 269, 261, 246, - - 271, 158, 152, 267, 266, 274, 151, 244, 238, 273, - 252, 265, 268, 245, 251, 250, 255, 254, 264, 267, - 275, 269, 271, 270, 264, 264, 272, 274, 264, 147, - 266, 264, 277, 273, 276, 281, 275, 277, 265, 268, - 146, 264, 270, 279, 281, 272, 267, 269, 271, 282, - 283, 264, 264, 274, 286, 264, 279, 145, 264, 273, - 276, 139, 138, 275, 277, 286, 130, 264, 283, 270, - 125, 281, 272, 282, 73, 67, 42, 39, 36, 35, - 14, 9, 7, 279, 5, 3, 276, 0, 0, 0, - 0, 0, 286, 0, 0, 283, 0, 0, 0, 282, - - 289, 289, 289, 290, 0, 290, 291, 291, 291, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288 + 20, 12, 16, 19, 22, 300, 295, 17, 19, 23, + 293, 22, 15, 292, 16, 21, 11, 18, 23, 16, + + 288, 16, 286, 20, 11, 19, 271, 18, 12, 17, + 29, 16, 21, 21, 17, 19, 25, 26, 22, 15, + 23, 16, 11, 29, 18, 23, 16, 24, 16, 20, + 31, 19, 24, 18, 29, 25, 24, 16, 28, 21, + 21, 33, 26, 27, 24, 34, 24, 28, 27, 28, + 29, 30, 270, 31, 34, 268, 57, 28, 267, 24, + 29, 33, 25, 24, 49, 27, 32, 27, 26, 49, + 30, 24, 50, 24, 28, 27, 28, 50, 32, 31, + 57, 34, 266, 76, 28, 43, 43, 43, 33, 76, + 51, 27, 265, 27, 264, 56, 49, 30, 40, 40, + + 40, 40, 54, 56, 50, 32, 57, 40, 41, 41, + 41, 41, 44, 44, 44, 44, 76, 41, 69, 51, + 54, 44, 45, 45, 45, 45, 69, 52, 263, 67, + 56, 45, 58, 260, 40, 46, 46, 46, 46, 46, + 46, 53, 55, 52, 41, 51, 53, 54, 44, 58, + 255, 254, 67, 69, 48, 48, 48, 48, 45, 47, + 47, 47, 47, 48, 47, 47, 47, 47, 47, 47, + 52, 55, 59, 53, 60, 61, 58, 59, 67, 64, + 61, 59, 63, 62, 247, 59, 70, 60, 246, 64, + 48, 47, 47, 47, 47, 47, 47, 55, 62, 63, + + 71, 243, 66, 75, 59, 64, 72, 61, 59, 70, + 242, 77, 59, 66, 60, 78, 64, 72, 241, 75, + 73, 80, 95, 239, 71, 62, 63, 236, 72, 234, + 72, 64, 65, 73, 232, 70, 77, 95, 65, 65, + 66, 80, 79, 230, 72, 78, 75, 79, 65, 65, + 71, 79, 102, 83, 72, 221, 72, 81, 83, 82, + 73, 65, 77, 84, 95, 65, 65, 205, 80, 102, + 81, 78, 82, 204, 79, 65, 65, 100, 79, 84, + 85, 85, 85, 85, 203, 83, 94, 65, 96, 85, + 86, 86, 200, 86, 86, 86, 102, 81, 93, 82, + + 87, 87, 87, 87, 94, 93, 84, 96, 100, 87, + 88, 88, 88, 89, 89, 89, 85, 97, 88, 90, + 90, 90, 90, 91, 91, 91, 91, 98, 99, 101, + 103, 94, 93, 106, 96, 97, 87, 99, 101, 104, + 105, 107, 108, 109, 111, 88, 110, 116, 105, 113, + 98, 114, 107, 111, 118, 115, 116, 117, 112, 103, + 115, 188, 97, 106, 99, 101, 117, 186, 104, 185, + 110, 184, 109, 108, 112, 105, 98, 118, 113, 107, + 111, 119, 114, 116, 120, 103, 121, 115, 122, 106, + 119, 120, 124, 117, 104, 123, 110, 122, 109, 129, + + 123, 112, 125, 118, 113, 126, 121, 128, 129, 130, + 126, 133, 131, 136, 134, 135, 124, 119, 120, 138, + 125, 137, 137, 137, 122, 128, 139, 123, 141, 136, + 143, 130, 131, 121, 138, 129, 161, 126, 134, 135, + 145, 133, 124, 143, 139, 146, 144, 125, 147, 151, + 141, 152, 128, 147, 145, 159, 136, 130, 151, 131, + 152, 138, 144, 146, 134, 135, 153, 133, 156, 157, + 143, 139, 158, 159, 157, 164, 141, 163, 158, 165, + 147, 145, 153, 160, 156, 151, 162, 152, 160, 144, + 146, 162, 167, 168, 166, 170, 165, 171, 155, 169, + + 159, 157, 163, 166, 172, 158, 164, 169, 175, 153, + 173, 156, 154, 174, 176, 160, 167, 168, 162, 173, + 177, 171, 174, 165, 179, 181, 170, 172, 163, 178, + 166, 180, 175, 176, 169, 187, 177, 182, 178, 202, + 179, 181, 167, 168, 183, 190, 173, 171, 187, 174, + 189, 192, 183, 172, 191, 180, 182, 189, 175, 195, + 176, 190, 192, 177, 193, 178, 194, 179, 181, 197, + 202, 207, 211, 150, 199, 187, 196, 198, 191, 183, + 193, 180, 195, 182, 189, 196, 198, 199, 190, 192, + 194, 197, 201, 206, 214, 209, 212, 208, 207, 149, + + 213, 211, 206, 214, 191, 210, 213, 193, 195, 201, + 208, 209, 196, 198, 199, 212, 194, 197, 210, 216, + 217, 218, 215, 219, 207, 217, 218, 211, 222, 206, + 214, 220, 219, 213, 216, 225, 201, 208, 209, 215, + 220, 222, 212, 226, 224, 210, 223, 231, 240, 228, + 229, 235, 217, 218, 227, 240, 233, 225, 148, 219, + 142, 216, 224, 228, 244, 231, 215, 220, 222, 226, + 223, 237, 229, 227, 233, 238, 245, 248, 235, 237, + 140, 132, 240, 225, 250, 245, 248, 251, 238, 224, + 228, 249, 231, 252, 244, 226, 223, 256, 229, 249, + + 227, 233, 252, 250, 235, 251, 237, 253, 257, 258, + 261, 259, 245, 248, 274, 238, 253, 269, 258, 261, + 244, 256, 262, 257, 276, 273, 249, 127, 262, 252, + 250, 279, 251, 259, 277, 275, 74, 281, 283, 274, + 282, 68, 276, 253, 273, 258, 261, 256, 269, 278, + 257, 275, 42, 279, 283, 262, 280, 39, 277, 259, + 272, 281, 282, 284, 36, 274, 272, 272, 278, 276, + 272, 273, 285, 272, 291, 280, 35, 285, 275, 279, + 14, 283, 289, 272, 277, 287, 290, 281, 282, 284, + 294, 289, 291, 272, 272, 278, 9, 272, 287, 7, + + 272, 294, 280, 5, 285, 3, 0, 0, 0, 272, + 290, 0, 0, 0, 0, 284, 0, 0, 289, 291, + 0, 0, 0, 0, 0, 287, 0, 0, 294, 0, + 0, 0, 0, 0, 0, 0, 290, 297, 297, 297, + 298, 0, 298, 299, 299, 299, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296 } ; static yy_state_type yy_last_accepting_state; @@ -776,10 +779,9 @@ char *yytext; * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -#line 23 "testpatternl.l" +#line 22 "testpatternl.l" #ifdef HAVE_CONFIG_H #include <config.h> @@ -824,7 +826,8 @@ do \ while (0) -#line 828 "testpatternl.c" +#line 829 "testpatternl.c" +#line 830 "testpatternl.c" #define INITIAL 0 @@ -840,36 +843,36 @@ do \ #define YY_EXTRA_TYPE void * #endif -static int yy_init_globals (void ); +static int yy_init_globals ( void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ -int yylex_destroy (void ); +int yylex_destroy ( void ); -int yyget_debug (void ); +int yyget_debug ( void ); -void yyset_debug (int debug_flag ); +void yyset_debug ( int debug_flag ); -YY_EXTRA_TYPE yyget_extra (void ); +YY_EXTRA_TYPE yyget_extra ( void ); -void yyset_extra (YY_EXTRA_TYPE user_defined ); +void yyset_extra ( YY_EXTRA_TYPE user_defined ); -FILE *yyget_in (void ); +FILE *yyget_in ( void ); -void yyset_in (FILE * in_str ); +void yyset_in ( FILE * _in_str ); -FILE *yyget_out (void ); +FILE *yyget_out ( void ); -void yyset_out (FILE * out_str ); +void yyset_out ( FILE * _out_str ); -yy_size_t yyget_leng (void ); + int yyget_leng ( void ); -char *yyget_text (void ); +char *yyget_text ( void ); -int yyget_lineno (void ); +int yyget_lineno ( void ); -void yyset_lineno (int line_number ); +void yyset_lineno ( int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. @@ -877,35 +880,43 @@ void yyset_lineno (int line_number ); #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap (void ); +extern "C" int yywrap ( void ); #else -extern int yywrap (void ); +extern int yywrap ( void ); #endif #endif - static void yyunput (int c,char *buf_ptr ); +#ifndef YY_NO_UNPUT + static void yyunput ( int c, char *buf_ptr ); + +#endif + #ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); +static void yy_flex_strncpy ( char *, const char *, int ); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); +static int yy_flex_strlen ( const char * ); #endif #ifndef YY_NO_INPUT - #ifdef __cplusplus -static int yyinput (void ); +static int yyinput ( void ); #else -static int input (void ); +static int input ( void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else #define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -913,7 +924,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 do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -924,7 +935,7 @@ static int input (void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - size_t n; \ + int n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -937,7 +948,7 @@ static int input (void ); else \ { \ errno=0; \ - while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ @@ -992,7 +1003,7 @@ extern int yylex (void); /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK break; +#define YY_BREAK /*LINTED*/break; #endif #define YY_RULE_SETUP \ @@ -1002,15 +1013,10 @@ extern int yylex (void); */ YY_DECL { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; -#line 81 "testpatternl.l" - - -#line 1013 "testpatternl.c" - if ( !(yy_init) ) { (yy_init) = 1; @@ -1031,13 +1037,19 @@ YY_DECL if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); + yy_create_buffer( yyin, YY_BUF_SIZE ); } - yy_load_buffer_state( ); + yy_load_buffer_state( ); } - while ( 1 ) /* loops until end-of-file is reached */ + { +#line 80 "testpatternl.l" + + +#line 1050 "testpatternl.c" + + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); @@ -1053,7 +1065,7 @@ YY_DECL yy_match: do { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -1062,13 +1074,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 289 ) - yy_c = yy_meta[(unsigned int) yy_c]; + if ( yy_current_state >= 297 ) + yy_c = yy_meta[yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 910 ); + while ( yy_base[yy_current_state] != 947 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1094,272 +1106,277 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 83 "testpatternl.l" +#line 82 "testpatternl.l" DBG(GAMMA); return GAMMA; YY_BREAK case 2: YY_RULE_SETUP -#line 84 "testpatternl.l" +#line 83 "testpatternl.l" DBG(LEVEL); return LEVEL; YY_BREAK case 3: YY_RULE_SETUP -#line 85 "testpatternl.l" +#line 84 "testpatternl.l" DBG(STEPS); return STEPS; YY_BREAK case 4: YY_RULE_SETUP -#line 86 "testpatternl.l" +#line 85 "testpatternl.l" DBG(INK_LIMIT); return INK_LIMIT; YY_BREAK case 5: YY_RULE_SETUP -#line 87 "testpatternl.l" +#line 86 "testpatternl.l" DBG(PRINTER); return PRINTER; YY_BREAK case 6: YY_RULE_SETUP -#line 88 "testpatternl.l" +#line 87 "testpatternl.l" DBG(PARAMETER); return PARAMETER; YY_BREAK case 7: YY_RULE_SETUP -#line 89 "testpatternl.l" +#line 88 "testpatternl.l" DBG(PARAMETER_INT); return PARAMETER_INT; YY_BREAK case 8: YY_RULE_SETUP -#line 90 "testpatternl.l" +#line 89 "testpatternl.l" DBG(PARAMETER_BOOL); return PARAMETER_BOOL; YY_BREAK case 9: YY_RULE_SETUP -#line 91 "testpatternl.l" +#line 90 "testpatternl.l" DBG(PARAMETER); return PARAMETER; YY_BREAK case 10: YY_RULE_SETUP -#line 92 "testpatternl.l" +#line 91 "testpatternl.l" DBG(PARAMETER_FLOAT); return PARAMETER_FLOAT; YY_BREAK case 11: YY_RULE_SETUP -#line 93 "testpatternl.l" +#line 92 "testpatternl.l" DBG(PARAMETER_CURVE); return PARAMETER_CURVE; YY_BREAK case 12: YY_RULE_SETUP -#line 94 "testpatternl.l" +#line 93 "testpatternl.l" DBG(DENSITY); return DENSITY; YY_BREAK case 13: YY_RULE_SETUP -#line 95 "testpatternl.l" +#line 94 "testpatternl.l" DBG(TOP); return TOP; YY_BREAK case 14: YY_RULE_SETUP -#line 96 "testpatternl.l" +#line 95 "testpatternl.l" DBG(LEFT); return LEFT; YY_BREAK case 15: YY_RULE_SETUP -#line 97 "testpatternl.l" +#line 96 "testpatternl.l" DBG(SIZE_MODE); return SIZE_MODE; YY_BREAK case 16: YY_RULE_SETUP -#line 98 "testpatternl.l" +#line 97 "testpatternl.l" DBG(RELATIVE); return RELATIVE; YY_BREAK case 17: YY_RULE_SETUP -#line 99 "testpatternl.l" +#line 98 "testpatternl.l" DBG(PT); return PT; YY_BREAK case 18: YY_RULE_SETUP -#line 100 "testpatternl.l" +#line 99 "testpatternl.l" DBG(IN); return IN; YY_BREAK case 19: YY_RULE_SETUP -#line 101 "testpatternl.l" +#line 100 "testpatternl.l" DBG(MM); return MM; YY_BREAK case 20: YY_RULE_SETUP -#line 102 "testpatternl.l" +#line 101 "testpatternl.l" DBG(HSIZE); return HSIZE; YY_BREAK case 21: YY_RULE_SETUP -#line 103 "testpatternl.l" +#line 102 "testpatternl.l" DBG(VSIZE); return VSIZE; YY_BREAK case 22: YY_RULE_SETUP -#line 104 "testpatternl.l" +#line 103 "testpatternl.l" DBG(BLACKLINE); return BLACKLINE; YY_BREAK case 23: YY_RULE_SETUP +#line 104 "testpatternl.l" +DBG(COLORLINE); return COLORLINE; + YY_BREAK +case 24: +YY_RULE_SETUP #line 105 "testpatternl.l" DBG(PATTERN); return PATTERN; YY_BREAK -case 24: +case 25: YY_RULE_SETUP #line 106 "testpatternl.l" DBG(XPATTERN); return XPATTERN; YY_BREAK -case 25: +case 26: YY_RULE_SETUP #line 107 "testpatternl.l" DBG(IMAGE); return IMAGE; YY_BREAK -case 26: +case 27: YY_RULE_SETUP #line 108 "testpatternl.l" DBG(EXTENDED); return EXTENDED; YY_BREAK -case 27: +case 28: YY_RULE_SETUP #line 109 "testpatternl.l" DBG(GRID); return GRID; YY_BREAK -case 28: +case 29: YY_RULE_SETUP #line 110 "testpatternl.l" DBG(CHANNEL); return CHANNEL; YY_BREAK -case 29: +case 30: YY_RULE_SETUP #line 111 "testpatternl.l" DBG(PAGESIZE); return PAGESIZE; YY_BREAK -case 30: +case 31: YY_RULE_SETUP #line 112 "testpatternl.l" DBG(SEMI); return SEMI; YY_BREAK -case 31: +case 32: YY_RULE_SETUP #line 113 "testpatternl.l" DBG(MODE); return MODE; YY_BREAK -case 32: +case 33: YY_RULE_SETUP #line 114 "testpatternl.l" yylval.ival = CMYK;DBG(CMYK); return CMYK; YY_BREAK -case 33: +case 34: YY_RULE_SETUP #line 115 "testpatternl.l" yylval.ival = CMYK;DBG(KCMY); return KCMY; YY_BREAK -case 34: +case 35: YY_RULE_SETUP #line 116 "testpatternl.l" yylval.ival = RGB;DBG(RGB); return RGB; YY_BREAK -case 35: +case 36: YY_RULE_SETUP #line 117 "testpatternl.l" yylval.ival = RGB;DBG(CMY); return CMY; YY_BREAK -case 36: +case 37: YY_RULE_SETUP #line 118 "testpatternl.l" yylval.ival = GRAY;DBG(GRAY); return GRAY; YY_BREAK -case 37: +case 38: YY_RULE_SETUP #line 119 "testpatternl.l" yylval.ival = GRAY;DBG(GRAY); return GRAY; YY_BREAK -case 38: +case 39: YY_RULE_SETUP #line 120 "testpatternl.l" yylval.ival = WHITE;DBG(WHITE); return WHITE; YY_BREAK -case 39: +case 40: YY_RULE_SETUP #line 121 "testpatternl.l" DBG(OUTPUT); return OUTPUT; YY_BREAK -case 40: +case 41: YY_RULE_SETUP #line 122 "testpatternl.l" DBG(MESSAGE); return MESSAGE; YY_BREAK -case 41: +case 42: YY_RULE_SETUP #line 123 "testpatternl.l" DBG(NOSCALE); return NOSCALE; YY_BREAK -case 42: +case 43: YY_RULE_SETUP #line 124 "testpatternl.l" DBG(ROUND); return ROUND; YY_BREAK -case 43: +case 44: YY_RULE_SETUP #line 125 "testpatternl.l" DBG(START_JOB); return START_JOB; YY_BREAK -case 44: +case 45: YY_RULE_SETUP #line 126 "testpatternl.l" DBG(END_JOB); return END_JOB; YY_BREAK -case 45: +case 46: YY_RULE_SETUP #line 127 "testpatternl.l" DBG(END); return END; YY_BREAK -case 46: +case 47: YY_RULE_SETUP #line 129 "testpatternl.l" yylval.sval = yytext;DBG(COLOR); return COLOR; YY_BREAK -case 47: +case 48: YY_RULE_SETUP #line 130 "testpatternl.l" yylval.ival = strtol(yytext, NULL, 0); yylval.dval = (double) yylval.ival; DBG(tINT); return tINT; YY_BREAK -case 48: +case 49: YY_RULE_SETUP #line 131 "testpatternl.l" yylval.dval = strtod(yytext, NULL); DBG(tDOUBLE); return tDOUBLE; YY_BREAK -case 49: -/* rule 49 can match eol */ +case 50: +/* rule 50 can match eol */ YY_RULE_SETUP #line 132 "testpatternl.l" yylval.sval = c_strstrip(yytext); DBG(tSTRING); return tSTRING; YY_BREAK -case 50: +case 51: YY_RULE_SETUP #line 133 "testpatternl.l" DBG(whitespace); /* Skip blanks/tabs */ YY_BREAK -case 51: +case 52: YY_RULE_SETUP #line 134 "testpatternl.l" DBG(comment); /* Skip comments */ YY_BREAK -case 52: -/* rule 52 can match eol */ +case 53: +/* rule 53 can match eol */ YY_RULE_SETUP #line 135 "testpatternl.l" DBG(newline); mylineno++; YY_BREAK -case 53: +case 54: YY_RULE_SETUP #line 136 "testpatternl.l" ECHO; YY_BREAK -#line 1363 "testpatternl.c" +#line 1379 "testpatternl.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1437,7 +1454,7 @@ case YY_STATE_EOF(INITIAL): { (yy_did_buffer_switch_on_eof) = 0; - if ( yywrap( ) ) + if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up @@ -1490,6 +1507,7 @@ case YY_STATE_EOF(INITIAL): "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ + } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer @@ -1501,9 +1519,9 @@ case YY_STATE_EOF(INITIAL): */ static int yy_get_next_buffer (void) { - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); - register int number_to_move, i; + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = (yytext_ptr); + int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -1532,7 +1550,7 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -1559,7 +1577,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - yy_size_t new_size = b->yy_buf_size * 2; + int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -1568,11 +1586,12 @@ static int yy_get_next_buffer (void) b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + yyrealloc( (void *) b->yy_ch_buf, + (yy_size_t) (b->yy_buf_size + 2) ); } else /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; + b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( @@ -1580,7 +1599,7 @@ static int yy_get_next_buffer (void) (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - num_to_read = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } @@ -1600,7 +1619,7 @@ static int yy_get_next_buffer (void) if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; - yyrestart(yyin ); + yyrestart( yyin ); } else @@ -1614,12 +1633,15 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (yy_n_chars) += number_to_move; @@ -1635,14 +1657,14 @@ static int yy_get_next_buffer (void) static yy_state_type yy_get_previous_state (void) { - register yy_state_type yy_current_state; - register char *yy_cp; + yy_state_type yy_current_state; + char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -1651,10 +1673,10 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 289 ) - yy_c = yy_meta[(unsigned int) yy_c]; + if ( yy_current_state >= 297 ) + yy_c = yy_meta[yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; } return yy_current_state; @@ -1667,10 +1689,10 @@ static int yy_get_next_buffer (void) */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { - register int yy_is_jam; - register char *yy_cp = (yy_c_buf_p); + int yy_is_jam; + char *yy_cp = (yy_c_buf_p); - register YY_CHAR yy_c = 1; + YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -1679,18 +1701,20 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 289 ) - yy_c = yy_meta[(unsigned int) yy_c]; + if ( yy_current_state >= 297 ) + yy_c = yy_meta[yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; - yy_is_jam = (yy_current_state == 288); + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_is_jam = (yy_current_state == 296); return yy_is_jam ? 0 : yy_current_state; } - static void yyunput (int c, register char * yy_bp ) +#ifndef YY_NO_UNPUT + + static void yyunput (int c, char * yy_bp ) { - register char *yy_cp; + char *yy_cp; yy_cp = (yy_c_buf_p); @@ -1700,10 +1724,10 @@ 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 char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + int number_to_move = (yy_n_chars) + 2; + char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - register char *source = + char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) @@ -1725,6 +1749,8 @@ static int yy_get_next_buffer (void) (yy_c_buf_p) = yy_cp; } +#endif + #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) @@ -1749,7 +1775,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -1766,14 +1792,14 @@ static int yy_get_next_buffer (void) */ /* Reset buffer status. */ - yyrestart(yyin ); + yyrestart( yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { - if ( yywrap( ) ) - return EOF; + if ( yywrap( ) ) + return 0; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; @@ -1810,11 +1836,11 @@ static int yy_get_next_buffer (void) if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); + yy_create_buffer( yyin, YY_BUF_SIZE ); } - yy_init_buffer(YY_CURRENT_BUFFER,input_file ); - yy_load_buffer_state( ); + yy_init_buffer( YY_CURRENT_BUFFER, input_file ); + yy_load_buffer_state( ); } /** Switch to a different input buffer. @@ -1842,7 +1868,7 @@ static int yy_get_next_buffer (void) } YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); + yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag @@ -1870,7 +1896,7 @@ static void yy_load_buffer_state (void) { YY_BUFFER_STATE b; - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); @@ -1879,13 +1905,13 @@ static void yy_load_buffer_state (void) /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; - yy_init_buffer(b,file ); + yy_init_buffer( b, file ); return b; } @@ -1904,9 +1930,9 @@ static void yy_load_buffer_state (void) YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) - yyfree((void *) b->yy_ch_buf ); + yyfree( (void *) b->yy_ch_buf ); - yyfree((void *) b ); + yyfree( (void *) b ); } /* Initializes or reinitializes a buffer. @@ -1918,7 +1944,7 @@ static void yy_load_buffer_state (void) { int oerrno = errno; - yy_flush_buffer(b ); + yy_flush_buffer( b ); b->yy_input_file = file; b->yy_fill_buffer = 1; @@ -1961,7 +1987,7 @@ static void yy_load_buffer_state (void) b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); + yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes @@ -1992,7 +2018,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); + yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } @@ -2011,7 +2037,7 @@ void yypop_buffer_state (void) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); + yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } @@ -2029,15 +2055,15 @@ static void yyensure_buffer_stack (void) * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - + (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; @@ -2046,7 +2072,7 @@ static void yyensure_buffer_stack (void) if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; + yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc @@ -2066,7 +2092,7 @@ static void yyensure_buffer_stack (void) * @param base the character buffer * @param size the size in bytes of the character buffer * - * @return the newly allocated buffer state object. + * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { @@ -2076,23 +2102,23 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ - return 0; + return NULL; - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; - b->yy_input_file = 0; + b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; - yy_switch_to_buffer(b ); + yy_switch_to_buffer( b ); return b; } @@ -2105,10 +2131,10 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ -YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +YY_BUFFER_STATE yy_scan_string (const char * yystr ) { - return yy_scan_bytes(yystr,(int) strlen(yystr) ); + return yy_scan_bytes( yystr, (int) strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will @@ -2118,7 +2144,7 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; @@ -2126,8 +2152,8 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len int i; /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) _yybytes_len + 2; - buf = (char *) yyalloc(n ); + n = (yy_size_t) (_yybytes_len + 2); + buf = (char *) yyalloc( n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); @@ -2136,7 +2162,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - b = yy_scan_buffer(buf,n ); + b = yy_scan_buffer( buf, n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); @@ -2152,9 +2178,9 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len #define YY_EXIT_FAILURE 2 #endif -static void yy_fatal_error (yyconst char* msg ) +static void yynoreturn yy_fatal_error (const char* msg ) { - (void) fprintf( stderr, "%s\n", msg ); + fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -2182,7 +2208,7 @@ static void yy_fatal_error (yyconst char* msg ) */ int yyget_lineno (void) { - + return yylineno; } @@ -2205,7 +2231,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -yy_size_t yyget_leng (void) +int yyget_leng (void) { return yyleng; } @@ -2220,29 +2246,29 @@ char *yyget_text (void) } /** Set the current line number. - * @param line_number + * @param _line_number line number * */ -void yyset_lineno (int line_number ) +void yyset_lineno (int _line_number ) { - yylineno = line_number; + yylineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. - * @param in_str A readable stream. + * @param _in_str A readable stream. * * @see yy_switch_to_buffer */ -void yyset_in (FILE * in_str ) +void yyset_in (FILE * _in_str ) { - yyin = in_str ; + yyin = _in_str ; } -void yyset_out (FILE * out_str ) +void yyset_out (FILE * _out_str ) { - yyout = out_str ; + yyout = _out_str ; } int yyget_debug (void) @@ -2250,9 +2276,9 @@ int yyget_debug (void) return yy_flex_debug; } -void yyset_debug (int bdebug ) +void yyset_debug (int _bdebug ) { - yy_flex_debug = bdebug ; + yy_flex_debug = _bdebug ; } static int yy_init_globals (void) @@ -2261,10 +2287,10 @@ static int yy_init_globals (void) * This function is called from yylex_destroy(), so don't allocate here. */ - (yy_buffer_stack) = 0; + (yy_buffer_stack) = NULL; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = (char *) 0; + (yy_c_buf_p) = NULL; (yy_init) = 0; (yy_start) = 0; @@ -2273,8 +2299,8 @@ static int yy_init_globals (void) yyin = stdin; yyout = stdout; #else - yyin = (FILE *) 0; - yyout = (FILE *) 0; + yyin = NULL; + yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by @@ -2289,7 +2315,7 @@ int yylex_destroy (void) /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ - yy_delete_buffer(YY_CURRENT_BUFFER ); + yy_delete_buffer( YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } @@ -2310,18 +2336,19 @@ int yylex_destroy (void) */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +static void yy_flex_strncpy (char* s1, const char * s2, int n ) { - register int i; + + int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) +static int yy_flex_strlen (const char * s ) { - register int n; + int n; for ( n = 0; s[n]; ++n ) ; @@ -2331,11 +2358,12 @@ static int yy_flex_strlen (yyconst char * s ) void *yyalloc (yy_size_t size ) { - return (void *) malloc( size ); + return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size ) { + /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -2343,12 +2371,12 @@ void *yyrealloc (void * ptr, yy_size_t size ) * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return (void *) realloc( (char *) ptr, size ); + return realloc(ptr, size); } void yyfree (void * ptr ) { - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" diff --git a/src/testpattern/testpatternl.l b/src/testpattern/testpatternl.l index 21e8bcf..31d6197 100644 --- a/src/testpattern/testpatternl.l +++ b/src/testpattern/testpatternl.l @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ %{ @@ -102,6 +101,7 @@ mm DBG(MM); return MM; hsize DBG(HSIZE); return HSIZE; vsize DBG(VSIZE); return VSIZE; blackline DBG(BLACKLINE); return BLACKLINE; +colorline DBG(COLORLINE); return COLORLINE; pattern DBG(PATTERN); return PATTERN; xpattern DBG(XPATTERN); return XPATTERN; image DBG(IMAGE); return IMAGE; diff --git a/src/testpattern/testpatterny.c b/src/testpattern/testpatterny.c index 4a2de11..2344ffb 100644 --- a/src/testpattern/testpatterny.c +++ b/src/testpattern/testpatterny.c @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.7. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + 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 3 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, see <http://www.gnu.org/licenses/>. */ @@ -26,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.7" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -62,8 +62,7 @@ /* Copy the first part of user declarations. */ -/* Line 371 of yacc.c */ -#line 22 "testpatterny.y" +#line 21 "testpatterny.y" /* yacc.c:339 */ #ifdef HAVE_CONFIG_H @@ -131,14 +130,13 @@ find_color(const char *name) } -/* Line 371 of yacc.c */ -#line 136 "testpatterny.c" +#line 134 "testpatterny.c" /* yacc.c:339 */ -# ifndef YY_NULL +# ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULL nullptr +# define YY_NULLPTR nullptr # else -# define YY_NULL 0 +# define YY_NULLPTR 0 # endif # endif @@ -154,7 +152,7 @@ find_color(const char *name) by #include "y.tab.h". */ #ifndef YY_YY_TESTPATTERNY_H_INCLUDED # define YY_YY_TESTPATTERNY_H_INCLUDED -/* Enabling traces. */ +/* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -162,60 +160,60 @@ find_color(const char *name) extern int yydebug; #endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - tINT = 258, - tDOUBLE = 259, - tSTRING = 260, - COLOR = 261, - GAMMA = 262, - LEVEL = 263, - STEPS = 264, - INK_LIMIT = 265, - PRINTER = 266, - PARAMETER = 267, - PARAMETER_INT = 268, - PARAMETER_BOOL = 269, - PARAMETER_FLOAT = 270, - PARAMETER_CURVE = 271, - DENSITY = 272, - TOP = 273, - LEFT = 274, - SIZE_MODE = 275, - RELATIVE = 276, - PT = 277, - IN = 278, - MM = 279, - HSIZE = 280, - VSIZE = 281, - BLACKLINE = 282, - NOSCALE = 283, - PATTERN = 284, - XPATTERN = 285, - EXTENDED = 286, - IMAGE = 287, - GRID = 288, - SEMI = 289, - CHANNEL = 290, - CMYK = 291, - KCMY = 292, - RGB = 293, - CMY = 294, - GRAY = 295, - WHITE = 296, - MODE = 297, - PAGESIZE = 298, - ROUND = 299, - MESSAGE = 300, - OUTPUT = 301, - START_JOB = 302, - END_JOB = 303, - END = 304 - }; + enum yytokentype + { + tINT = 258, + tDOUBLE = 259, + tSTRING = 260, + COLOR = 261, + GAMMA = 262, + LEVEL = 263, + STEPS = 264, + INK_LIMIT = 265, + PRINTER = 266, + PARAMETER = 267, + PARAMETER_INT = 268, + PARAMETER_BOOL = 269, + PARAMETER_FLOAT = 270, + PARAMETER_CURVE = 271, + DENSITY = 272, + TOP = 273, + LEFT = 274, + SIZE_MODE = 275, + RELATIVE = 276, + PT = 277, + IN = 278, + MM = 279, + HSIZE = 280, + VSIZE = 281, + BLACKLINE = 282, + COLORLINE = 283, + NOSCALE = 284, + PATTERN = 285, + XPATTERN = 286, + EXTENDED = 287, + IMAGE = 288, + GRID = 289, + SEMI = 290, + CHANNEL = 291, + CMYK = 292, + KCMY = 293, + RGB = 294, + CMY = 295, + GRAY = 296, + WHITE = 297, + MODE = 298, + PAGESIZE = 299, + ROUND = 300, + MESSAGE = 301, + OUTPUT = 302, + START_JOB = 303, + END_JOB = 304, + END = 305 + }; #endif /* Tokens. */ #define tINT 258 @@ -243,59 +241,42 @@ extern int yydebug; #define HSIZE 280 #define VSIZE 281 #define BLACKLINE 282 -#define NOSCALE 283 -#define PATTERN 284 -#define XPATTERN 285 -#define EXTENDED 286 -#define IMAGE 287 -#define GRID 288 -#define SEMI 289 -#define CHANNEL 290 -#define CMYK 291 -#define KCMY 292 -#define RGB 293 -#define CMY 294 -#define GRAY 295 -#define WHITE 296 -#define MODE 297 -#define PAGESIZE 298 -#define ROUND 299 -#define MESSAGE 300 -#define OUTPUT 301 -#define START_JOB 302 -#define END_JOB 303 -#define END 304 - - - -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -#endif +#define COLORLINE 283 +#define NOSCALE 284 +#define PATTERN 285 +#define XPATTERN 286 +#define EXTENDED 287 +#define IMAGE 288 +#define GRID 289 +#define SEMI 290 +#define CHANNEL 291 +#define CMYK 292 +#define KCMY 293 +#define RGB 294 +#define CMY 295 +#define GRAY 296 +#define WHITE 297 +#define MODE 298 +#define PAGESIZE 299 +#define ROUND 300 +#define MESSAGE 301 +#define OUTPUT 302 +#define START_JOB 303 +#define END_JOB 304 +#define END 305 + +/* Value type. */ + extern YYSTYPE yylval; -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ #endif /* !YY_YY_TESTPATTERNY_H_INCLUDED */ /* Copy the second part of user declarations. */ -/* Line 390 of yacc.c */ -#line 299 "testpatterny.c" +#line 280 "testpatterny.c" /* yacc.c:358 */ #ifdef short # undef short @@ -309,11 +290,8 @@ typedef unsigned char yytype_uint8; #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -typedef signed char yytype_int8; #else -typedef short int yytype_int8; +typedef signed char yytype_int8; #endif #ifdef YYTYPE_UINT16 @@ -333,8 +311,7 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# elif ! defined YYSIZE_T # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -356,6 +333,33 @@ typedef short int yytype_int16; # endif #endif +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +# else +# define YY_ATTRIBUTE(Spec) /* empty */ +# endif +#endif + +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) +# endif +#endif + /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -363,24 +367,26 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(N) (N) -#else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int yyi) +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") #else -static int -YYID (yyi) - int yyi; +# define YY_INITIAL_VALUE(Value) Value #endif -{ - return yyi; -} +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif + #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -398,8 +404,7 @@ YYID (yyi) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS @@ -411,8 +416,8 @@ YYID (yyi) # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -428,7 +433,7 @@ YYID (yyi) # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -436,15 +441,13 @@ YYID (yyi) # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -454,7 +457,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc @@ -479,16 +482,16 @@ union yyalloc elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) #endif @@ -507,33 +510,35 @@ union yyalloc for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ - while (YYID (0)) + while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 64 +#define YYFINAL 66 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 179 +#define YYLAST 182 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 50 +#define YYNTOKENS 51 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 78 +#define YYNNTS 79 /* YYNRULES -- Number of rules. */ -#define YYNRULES 132 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 185 +#define YYNRULES 134 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 188 -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 304 +#define YYMAXUTOK 305 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -566,69 +571,11 @@ static const yytype_uint8 yytranslate[] = 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49 + 45, 46, 47, 48, 49, 50 }; #if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const yytype_uint16 yyprhs[] = -{ - 0, 0, 3, 5, 7, 9, 11, 13, 15, 17, - 19, 22, 24, 26, 28, 30, 32, 34, 36, 39, - 41, 43, 45, 48, 52, 56, 60, 64, 67, 70, - 73, 76, 79, 83, 85, 87, 91, 95, 99, 103, - 107, 109, 111, 113, 115, 117, 120, 123, 126, 128, - 130, 132, 134, 136, 138, 140, 142, 145, 148, 151, - 154, 157, 161, 163, 166, 167, 169, 172, 177, 183, - 185, 187, 189, 192, 193, 195, 197, 199, 205, 209, - 212, 215, 219, 221, 222, 225, 228, 230, 233, 235, - 237, 239, 241, 243, 245, 247, 249, 251, 253, 255, - 257, 259, 261, 263, 265, 267, 269, 271, 273, 275, - 277, 279, 281, 283, 285, 287, 289, 292, 294, 296, - 298, 300, 303, 304, 307, 309, 310, 313, 315, 317, - 318, 321, 322 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int8 yyrhs[] = -{ - 126, 0, -1, 4, -1, 3, -1, 36, -1, 37, - -1, 38, -1, 39, -1, 40, -1, 41, -1, 31, - 3, -1, 52, -1, 53, -1, 54, -1, 55, -1, - 56, -1, 57, -1, 58, -1, 59, 3, -1, 59, - -1, 60, -1, 44, -1, 42, 61, -1, 8, 6, - 51, -1, 8, 3, 51, -1, 7, 6, 51, -1, - 7, 3, 51, -1, 7, 51, -1, 9, 3, -1, - 10, 51, -1, 11, 5, -1, 43, 5, -1, 43, - 3, 3, -1, 72, -1, 73, -1, 12, 5, 5, - -1, 13, 5, 3, -1, 14, 5, 3, -1, 15, - 5, 51, -1, 16, 5, 5, -1, 75, -1, 76, - -1, 78, -1, 79, -1, 77, -1, 17, 51, -1, - 18, 51, -1, 19, 51, -1, 21, -1, 23, -1, - 22, -1, 24, -1, 84, -1, 86, -1, 85, -1, - 87, -1, 20, 88, -1, 25, 51, -1, 26, 51, - -1, 27, 3, -1, 28, 3, -1, 51, 51, 51, - -1, 94, -1, 95, 94, -1, -1, 95, -1, 94, - 96, -1, 6, 51, 51, 51, -1, 35, 3, 51, - 51, 51, -1, 98, -1, 99, -1, 100, -1, 101, - 100, -1, -1, 101, -1, 97, -1, 102, -1, 51, - 51, 51, 51, 51, -1, 29, 104, 103, -1, 30, - 103, -1, 33, 3, -1, 32, 3, 3, -1, 5, - -1, -1, 110, 109, -1, 45, 110, -1, 46, -1, - 46, 5, -1, 112, -1, 113, -1, 47, -1, 48, - -1, 66, -1, 67, -1, 64, -1, 65, -1, 68, - -1, 69, -1, 70, -1, 71, -1, 80, -1, 81, - -1, 82, -1, 83, -1, 90, -1, 91, -1, 92, - -1, 93, -1, 63, -1, 74, -1, 111, -1, 114, - -1, 115, -1, 116, -1, 89, -1, 62, -1, 117, - 34, -1, 105, -1, 106, -1, 107, -1, 111, -1, - 119, 34, -1, -1, 121, 120, -1, 108, -1, -1, - 123, 118, -1, 121, -1, 122, -1, -1, 49, 34, - -1, -1, 123, 127, 124, 125, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 145, 145, 145, 150, 160, 170, 180, 190, 200, @@ -637,14 +584,14 @@ static const yytype_uint16 yyrline[] = 303, 312, 321, 330, 330, 333, 343, 352, 361, 370, 384, 384, 384, 384, 384, 386, 393, 400, 407, 414, 421, 428, 435, 435, 435, 435, 437, 439, 446, 453, - 461, 469, 484, 484, 487, 487, 490, 493, 507, 520, - 520, 523, 523, 526, 526, 529, 529, 532, 547, 550, - 565, 576, 593, 600, 600, 603, 606, 616, 622, 622, - 625, 629, 633, 633, 633, 633, 633, 633, 634, 634, - 634, 634, 634, 634, 634, 635, 635, 635, 635, 635, - 635, 636, 636, 636, 636, 636, 639, 643, 643, 643, - 643, 646, 650, 650, 653, 657, 657, 660, 660, 663, - 663, 668, 667 + 461, 469, 477, 492, 492, 495, 495, 498, 501, 515, + 528, 528, 531, 531, 534, 534, 537, 537, 540, 555, + 558, 573, 584, 601, 608, 608, 611, 614, 624, 630, + 630, 633, 637, 641, 641, 641, 641, 641, 641, 642, + 642, 642, 642, 642, 642, 642, 643, 643, 643, 643, + 643, 643, 644, 644, 644, 644, 644, 644, 647, 651, + 651, 651, 651, 654, 658, 658, 661, 665, 665, 668, + 668, 671, 671, 676, 675 }; #endif @@ -657,11 +604,11 @@ static const char *const yytname[] = "GAMMA", "LEVEL", "STEPS", "INK_LIMIT", "PRINTER", "PARAMETER", "PARAMETER_INT", "PARAMETER_BOOL", "PARAMETER_FLOAT", "PARAMETER_CURVE", "DENSITY", "TOP", "LEFT", "SIZE_MODE", "RELATIVE", "PT", "IN", "MM", - "HSIZE", "VSIZE", "BLACKLINE", "NOSCALE", "PATTERN", "XPATTERN", - "EXTENDED", "IMAGE", "GRID", "SEMI", "CHANNEL", "CMYK", "KCMY", "RGB", - "CMY", "GRAY", "WHITE", "MODE", "PAGESIZE", "ROUND", "MESSAGE", "OUTPUT", - "START_JOB", "END_JOB", "END", "$accept", "NUMBER", "cmykspec", - "kcmyspec", "rgbspec", "cmyspec", "grayspec", "whitespec", + "HSIZE", "VSIZE", "BLACKLINE", "COLORLINE", "NOSCALE", "PATTERN", + "XPATTERN", "EXTENDED", "IMAGE", "GRID", "SEMI", "CHANNEL", "CMYK", + "KCMY", "RGB", "CMY", "GRAY", "WHITE", "MODE", "PAGESIZE", "ROUND", + "MESSAGE", "OUTPUT", "START_JOB", "END_JOB", "END", "$accept", "NUMBER", + "cmykspec", "kcmyspec", "rgbspec", "cmyspec", "grayspec", "whitespec", "extendedspec", "modespec1", "modespec2", "modespec", "round", "inputspec", "level", "channel_level", "gamma", "channel_gamma", "global_gamma", "steps", "ink_limit", "printer", "page_size_name", @@ -669,248 +616,239 @@ static const char *const yytname[] = "parameter_bool", "parameter_float", "parameter_curve", "parameter", "density", "top", "left", "size_relative", "size_in", "size_pt", "size_mm", "size_mode_1", "size_mode", "hsize", "vsize", "blackline", - "noscale", "color_block1", "color_blocks1a", "color_blocks1b", - "color_blocks1", "color_block2a", "color_block2b", "color_block2", - "color_blocks2a", "color_blocks2", "color_blocks", "patvars", "pattern", - "xpattern", "grid", "image", "Message", "Messages", "message", "Output0", - "Output1", "output", "start_job", "end_job", "A_Rule", "Rule", - "A_Pattern", "Pattern", "Patterns", "Image", "Rules", "Print", "EOF", - "Thing", "$@1", YY_NULL + "colorline", "noscale", "color_block1", "color_blocks1a", + "color_blocks1b", "color_blocks1", "color_block2a", "color_block2b", + "color_block2", "color_blocks2a", "color_blocks2", "color_blocks", + "patvars", "pattern", "xpattern", "grid", "image", "Message", "Messages", + "message", "Output0", "Output1", "output", "start_job", "end_job", + "A_Rule", "Rule", "A_Pattern", "Pattern", "Patterns", "Image", "Rules", + "Print", "EOF", "Thing", "$@1", YY_NULLPTR }; #endif # ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304 + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305 }; # endif -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = -{ - 0, 50, 51, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 59, 59, 59, 59, 59, 59, 60, 61, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 74, 75, 76, 77, 78, 79, - 80, 80, 80, 80, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 88, 88, 88, 89, 90, 91, 92, - 93, 94, 95, 95, 96, 96, 97, 98, 99, 100, - 100, 101, 101, 102, 102, 103, 103, 104, 105, 106, - 107, 108, 109, 110, 110, 111, 112, 113, 114, 114, - 115, 116, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 118, 119, 119, 119, - 119, 120, 121, 121, 122, 123, 123, 124, 124, 125, - 125, 127, 126 -}; +#define YYPACT_NINF -146 -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-146))) + +#define YYTABLE_NINF -1 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = { - 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, - 1, 1, 2, 3, 3, 3, 3, 2, 2, 2, - 2, 2, 3, 1, 1, 3, 3, 3, 3, 3, - 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 3, 1, 2, 0, 1, 2, 4, 5, 1, - 1, 1, 2, 0, 1, 1, 1, 5, 3, 2, - 2, 3, 1, 0, 2, 2, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, - 1, 2, 0, 2, 1, 0, 2, 1, 1, 0, - 2, 0, 4 + -146, 9, 4, 57, -1, 5, 29, 36, 40, 41, + 62, 71, 73, 29, 29, 29, 27, 29, 29, 59, + 76, 77, 33, 37, -146, -146, 78, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, 46, -146, 49, -146, 29, -146, 29, + -146, 29, 29, -146, -146, -146, -146, 79, 82, 83, + 29, 84, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, 85, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, 87, -146, -146, 88, -146, 89, -146, + -146, 90, -146, 13, -146, 42, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + 92, 29, 3, 93, -146, -146, -146, -146, 52, -146, + 63, -146, -146, 29, 3, 29, 94, 29, 29, -146, + -146, -146, -146, -5, -146, -146, -146, -146, -146, 29, + -146, 29, 29, 29, -146, 29, -146, -146, 29, 29, + 29, -146, -146, 29, -146, 29, -146, -146 }; -/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_uint8 yydefact[] = { - 125, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 127, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 21, 83, 86, 90, 91, 115, 108, - 94, 95, 92, 93, 96, 97, 98, 99, 33, 34, - 109, 40, 41, 44, 42, 43, 100, 101, 102, 103, - 114, 104, 105, 106, 107, 110, 88, 89, 111, 112, - 113, 0, 126, 122, 1, 3, 2, 0, 27, 0, - 0, 28, 3, 29, 30, 0, 0, 0, 0, 0, - 45, 46, 47, 48, 50, 49, 51, 52, 54, 53, - 55, 56, 57, 58, 59, 60, 0, 4, 5, 6, - 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, - 19, 20, 22, 0, 31, 85, 87, 116, 0, 124, - 127, 128, 129, 26, 25, 24, 23, 35, 36, 37, - 38, 39, 10, 18, 32, 82, 84, 0, 0, 73, - 0, 117, 118, 119, 120, 0, 123, 0, 132, 81, - 0, 73, 0, 0, 0, 64, 75, 69, 70, 71, - 74, 76, 79, 80, 121, 130, 0, 78, 0, 0, - 0, 62, 65, 66, 72, 0, 0, 0, 61, 63, - 0, 67, 0, 77, 68 + 0, 0, 0, 0, 21, 84, 87, 91, 92, 116, + 109, 95, 96, 93, 94, 97, 98, 99, 100, 33, + 34, 110, 40, 41, 44, 42, 43, 101, 102, 103, + 104, 115, 105, 106, 107, 117, 108, 111, 89, 90, + 112, 113, 114, 0, 128, 124, 1, 3, 2, 0, + 27, 0, 0, 28, 3, 29, 30, 0, 0, 0, + 0, 0, 45, 46, 47, 48, 50, 49, 51, 52, + 54, 53, 55, 56, 57, 58, 59, 60, 61, 0, + 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, + 15, 16, 17, 19, 20, 22, 0, 31, 86, 88, + 118, 0, 126, 129, 130, 131, 26, 25, 24, 23, + 35, 36, 37, 38, 39, 10, 18, 32, 83, 85, + 0, 0, 74, 0, 119, 120, 121, 122, 0, 125, + 0, 134, 82, 0, 74, 0, 0, 0, 65, 76, + 70, 71, 72, 75, 77, 80, 81, 123, 132, 0, + 79, 0, 0, 0, 63, 66, 67, 73, 0, 0, + 0, 62, 64, 0, 68, 0, 78, 69 }; -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 154, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 87, 88, 89, 90, 91, 50, - 51, 52, 53, 54, 155, 172, 173, 156, 157, 158, - 159, 160, 161, 162, 151, 141, 142, 143, 119, 136, - 115, 55, 56, 57, 58, 59, 60, 61, 62, 145, - 146, 120, 121, 1, 122, 148, 2, 63 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -143 -static const yytype_int16 yypact[] = + /* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = { - -143, 9, 40, 41, 71, 45, 28, 44, 54, 55, - 56, 60, 73, 28, 28, 28, -16, 28, 28, 47, - 76, 32, 36, -143, -143, 75, -143, -143, -143, -143, - -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, - -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, - -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, - -143, 42, -143, 49, -143, 28, -143, 28, -143, 28, - 28, -143, -143, -143, -143, 77, 80, 81, 28, 82, - -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, - -143, -143, -143, -143, -143, -143, 83, -143, -143, -143, - -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, - 85, -143, -143, 86, -143, 87, -143, -143, 88, -143, - 13, -143, 46, -143, -143, -143, -143, -143, -143, -143, - -143, -143, -143, -143, -143, -143, -143, 90, 28, -2, - 91, -143, -143, -143, -143, 51, -143, 62, -143, -143, - 28, -2, 28, 94, 28, 28, -143, -143, -143, -143, - 3, -143, -143, -143, -143, -143, 28, -143, 28, 28, - 28, -143, 28, -143, -143, 28, 28, 28, -143, -143, - 28, -143, 28, -143, -143 + -146, -3, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -145, -146, -146, -146, -146, + -146, -64, -146, -146, -54, -146, -146, -146, -146, -146, + -146, -146, -22, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146 }; -/* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = { - -143, -3, -143, -143, -143, -143, -143, -143, -143, -143, - -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, - -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, - -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, - -143, -143, -143, -143, -142, -143, -143, -143, -143, -143, - -70, -143, -143, -53, -143, -143, -143, -143, -143, -143, - -143, -21, -143, -143, -143, -143, -143, -143, -143, -143, - -143, -143, -143, -143, -143, -143, -143, -143 + -1, 157, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 89, 90, 91, 92, 93, 51, + 52, 53, 54, 55, 56, 158, 175, 176, 159, 160, + 161, 162, 163, 164, 165, 154, 144, 145, 146, 122, + 139, 118, 57, 58, 59, 60, 61, 62, 63, 64, + 148, 149, 123, 124, 1, 125, 151, 2, 65 }; -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -1 + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint8 yytable[] = { - 68, 72, 66, 73, 152, 83, 84, 85, 86, 152, - 80, 81, 82, 171, 92, 93, 3, 4, 5, 6, + 70, 155, 71, 75, 66, 72, 74, 68, 73, 155, + 82, 83, 84, 174, 94, 95, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 179, 72, 66, 153, 17, 18, 19, 20, 153, 113, - 64, 114, 138, 139, 65, 66, 140, 67, 71, 74, - 94, 21, 22, 23, 24, 25, 26, 27, 24, 75, - 76, 77, 123, 96, 124, 78, 125, 126, 97, 98, - 99, 100, 101, 102, 69, 130, 117, 70, 79, 95, - 116, 118, 127, 128, 129, 164, 132, 131, 133, 134, - 174, 137, 135, 149, 163, 147, 165, 169, 167, 144, + 182, 156, 74, 68, 17, 18, 19, 20, 21, 156, + 116, 76, 117, 141, 142, 77, 78, 143, 85, 86, + 87, 88, 22, 23, 24, 25, 26, 27, 28, 25, + 67, 68, 96, 69, 126, 99, 127, 79, 128, 129, + 100, 101, 102, 103, 104, 105, 80, 133, 81, 97, + 98, 120, 121, 119, 130, 131, 132, 167, 135, 134, + 136, 137, 150, 140, 138, 152, 166, 172, 168, 177, + 170, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 166, 0, 168, - 0, 170, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 175, 0, 176, 177, 178, 0, 0, - 0, 0, 180, 181, 182, 0, 0, 183, 0, 184 + 169, 0, 171, 0, 173, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 178, 0, 179, 180, + 181, 0, 0, 0, 0, 183, 184, 185, 0, 0, + 186, 0, 187 }; -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-143))) - -#define yytable_value_is_error(Yytable_value) \ - YYID (0) - static const yytype_int16 yycheck[] = { - 3, 3, 4, 6, 6, 21, 22, 23, 24, 6, - 13, 14, 15, 155, 17, 18, 7, 8, 9, 10, + 3, 6, 3, 6, 0, 6, 3, 4, 3, 6, + 13, 14, 15, 158, 17, 18, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 172, 3, 4, 35, 25, 26, 27, 28, 35, 3, - 0, 5, 29, 30, 3, 4, 33, 6, 3, 5, - 3, 42, 43, 44, 45, 46, 47, 48, 45, 5, - 5, 5, 65, 31, 67, 5, 69, 70, 36, 37, - 38, 39, 40, 41, 3, 78, 34, 6, 5, 3, - 5, 32, 5, 3, 3, 34, 3, 5, 3, 3, - 160, 3, 5, 3, 3, 49, 34, 3, 151, 120, + 175, 36, 3, 4, 25, 26, 27, 28, 29, 36, + 3, 5, 5, 30, 31, 5, 5, 34, 21, 22, + 23, 24, 43, 44, 45, 46, 47, 48, 49, 46, + 3, 4, 3, 6, 67, 32, 69, 5, 71, 72, + 37, 38, 39, 40, 41, 42, 5, 80, 5, 3, + 3, 35, 33, 5, 5, 3, 3, 35, 3, 5, + 3, 3, 50, 3, 5, 3, 3, 3, 35, 163, + 154, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 141, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 150, -1, 152, - -1, 154, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 166, -1, 168, 169, 170, -1, -1, - -1, -1, 175, 176, 177, -1, -1, 180, -1, 182 + 153, -1, 155, -1, 157, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 169, -1, 171, 172, + 173, -1, -1, -1, -1, 178, 179, 180, -1, -1, + 183, -1, 185 }; -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 123, 126, 7, 8, 9, 10, 11, 12, 13, + 0, 125, 128, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26, 27, - 28, 42, 43, 44, 45, 46, 47, 48, 62, 63, + 28, 29, 43, 44, 45, 46, 47, 48, 49, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 89, 90, 91, 92, 93, 111, 112, 113, 114, 115, - 116, 117, 118, 127, 0, 3, 4, 6, 51, 3, - 6, 3, 3, 51, 5, 5, 5, 5, 5, 5, - 51, 51, 51, 21, 22, 23, 24, 84, 85, 86, - 87, 88, 51, 51, 3, 3, 31, 36, 37, 38, - 39, 40, 41, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 3, 5, 110, 5, 34, 32, 108, - 121, 122, 124, 51, 51, 51, 51, 5, 3, 3, - 51, 5, 3, 3, 3, 5, 109, 3, 29, 30, - 33, 105, 106, 107, 111, 119, 120, 49, 125, 3, - 51, 104, 6, 35, 51, 94, 97, 98, 99, 100, - 101, 102, 103, 3, 34, 34, 51, 103, 51, 3, - 51, 94, 95, 96, 100, 51, 51, 51, 51, 94, - 51, 51, 51, 51, 51 + 84, 90, 91, 92, 93, 94, 95, 113, 114, 115, + 116, 117, 118, 119, 120, 129, 0, 3, 4, 6, + 52, 3, 6, 3, 3, 52, 5, 5, 5, 5, + 5, 5, 52, 52, 52, 21, 22, 23, 24, 85, + 86, 87, 88, 89, 52, 52, 3, 3, 3, 32, + 37, 38, 39, 40, 41, 42, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 3, 5, 112, 5, + 35, 33, 110, 123, 124, 126, 52, 52, 52, 52, + 5, 3, 3, 52, 5, 3, 3, 3, 5, 111, + 3, 30, 31, 34, 107, 108, 109, 113, 121, 122, + 50, 127, 3, 52, 106, 6, 36, 52, 96, 99, + 100, 101, 102, 103, 104, 105, 3, 35, 35, 52, + 105, 52, 3, 52, 96, 97, 98, 102, 52, 52, + 52, 52, 96, 52, 52, 52, 52, 52 }; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. However, - YYFAIL appears to be in use. Nevertheless, it is formally deprecated - in Bison 2.4.2's NEWS entry, where a plan to phase it out is - discussed. */ - -#define YYFAIL goto yyerrlab -#if defined YYFAIL - /* This is here to suppress warnings from the GCC cpp's - -Wunused-macros. Normally we don't worry about that warning, but - some users do, and we want to make it easy for users to remove - YYFAIL uses, which will produce warnings from Bison 2.5. */ -#endif + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 51, 52, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 60, 60, 60, 60, 60, 60, 61, 62, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 75, 76, 77, 78, 79, 80, + 81, 81, 81, 81, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 89, 89, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 97, 98, 98, 99, 100, 101, + 102, 102, 103, 103, 104, 104, 105, 105, 106, 107, + 108, 109, 110, 111, 112, 112, 113, 114, 115, 116, + 116, 117, 118, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 120, 121, + 121, 121, 121, 122, 123, 123, 124, 125, 125, 126, + 126, 127, 127, 129, 128 +}; + + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, + 1, 1, 2, 3, 3, 3, 3, 2, 2, 2, + 2, 2, 3, 1, 1, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 3, 1, 2, 0, 1, 2, 4, 5, + 1, 1, 1, 2, 0, 1, 1, 1, 5, 3, + 2, 2, 3, 1, 0, 2, 2, 1, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, + 1, 1, 1, 2, 0, 2, 1, 0, 2, 1, + 1, 0, 2, 0, 4 +}; + + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + #define YYRECOVERING() (!!yyerrstatus) @@ -927,27 +865,15 @@ do \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) + YYERROR; \ + } \ +while (0) /* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 +#define YYTERROR 1 +#define YYERRCODE 256 -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif - - -/* YYLEX -- calling `yylex' with the right arguments. */ -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif /* Enable debugging if requested. */ #if YYDEBUG @@ -957,40 +883,36 @@ while (YYID (0)) # define YYFPRINTF fprintf # endif -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif { FILE *yyo = yyoutput; YYUSE (yyo); @@ -999,14 +921,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); # endif - switch (yytype) - { - default: - break; - } + YYUSE (yytype); } @@ -1014,22 +930,11 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) | Print this symbol on YYOUTPUT. | `--------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif { - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); @@ -1040,16 +945,8 @@ yy_symbol_print (yyoutput, yytype, yyvaluep) | TOP (included). | `------------------------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -#else -static void -yy_stack_print (yybottom, yytop) - yytype_int16 *yybottom; - yytype_int16 *yytop; -#endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -1060,49 +957,42 @@ yy_stack_print (yybottom, yytop) YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_reduce_print (YYSTYPE *yyvsp, int yyrule) -#else static void -yy_reduce_print (yyvsp, yyrule) - YYSTYPE *yyvsp; - int yyrule; -#endif +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { + unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - ); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, Rule); \ -} while (YYID (0)) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -1116,7 +1006,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -1139,15 +1029,8 @@ int yydebug; # define yystrlen strlen # else /* Return the length of YYSTR. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) -#else -static YYSIZE_T -yystrlen (yystr) - const char *yystr; -#endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) @@ -1163,16 +1046,8 @@ yystrlen (yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) -#else -static char * -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -#endif { char *yyd = yydest; const char *yys = yysrc; @@ -1202,27 +1077,27 @@ yytnamerr (char *yyres, const char *yystr) char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } @@ -1245,11 +1120,11 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = YY_NULL; + const char *yyformat = YY_NULLPTR; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -1257,10 +1132,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, int yycount = 0; /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. See - <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html> - for details. YYERROR is fine as it does not invoke this - function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected @@ -1310,7 +1181,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; @@ -1377,31 +1248,17 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, | Release the memory associated to this symbol. | `-----------------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yymsg, yytype, yyvaluep) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; -#endif { YYUSE (yyvaluep); - if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - switch (yytype) - { - - default: - break; - } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -1410,18 +1267,8 @@ yydestruct (yymsg, yytype, yyvaluep) /* The lookahead symbol. */ int yychar; - -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - /* The semantic value of the lookahead symbol. */ -YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); - +YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; @@ -1430,35 +1277,16 @@ int yynerrs; | yyparse. | `----------*/ -#ifdef YYPARSE_PARAM -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void *YYPARSE_PARAM) -#else -int -yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -#endif -#else /* ! YYPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) int yyparse (void) -#else -int -yyparse () - -#endif -#endif { int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: - `yyss': related to states. - `yyvs': related to semantic values. + 'yyss': related to states. + 'yyvs': related to semantic values. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ @@ -1526,23 +1354,23 @@ yyparse () #ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE @@ -1550,22 +1378,22 @@ yyparse () # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ @@ -1574,10 +1402,10 @@ yyparse () yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -1606,7 +1434,7 @@ yybackup: if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; + yychar = yylex (); } if (yychar <= YYEOF) @@ -1671,7 +1499,7 @@ yyreduce: yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. + '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -1685,15 +1513,14 @@ yyreduce: switch (yyn) { case 3: -/* Line 1792 of yacc.c */ -#line 146 "testpatterny.y" +#line 146 "testpatterny.y" /* yacc.c:1646 */ { } +#line 1520 "testpatterny.c" /* yacc.c:1646 */ break; case 4: -/* Line 1792 of yacc.c */ -#line 151 "testpatterny.y" +#line 151 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) fprintf(stderr, ">>>cmykspec\n"); @@ -1701,11 +1528,11 @@ yyreduce: global_channel_depth = 4; global_invert_data = 0; } +#line 1532 "testpatterny.c" /* yacc.c:1646 */ break; case 5: -/* Line 1792 of yacc.c */ -#line 161 "testpatterny.y" +#line 161 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) fprintf(stderr, ">>>kcmyspec\n"); @@ -1713,11 +1540,11 @@ yyreduce: global_channel_depth = 4; global_invert_data = 0; } +#line 1544 "testpatterny.c" /* yacc.c:1646 */ break; case 6: -/* Line 1792 of yacc.c */ -#line 171 "testpatterny.y" +#line 171 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) fprintf(stderr, ">>>rgbspec\n"); @@ -1725,11 +1552,11 @@ yyreduce: global_channel_depth = 3; global_invert_data = 1; } +#line 1556 "testpatterny.c" /* yacc.c:1646 */ break; case 7: -/* Line 1792 of yacc.c */ -#line 181 "testpatterny.y" +#line 181 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) fprintf(stderr, ">>>cmyspec\n"); @@ -1737,11 +1564,11 @@ yyreduce: global_channel_depth = 3; global_invert_data = 0; } +#line 1568 "testpatterny.c" /* yacc.c:1646 */ break; case 8: -/* Line 1792 of yacc.c */ -#line 191 "testpatterny.y" +#line 191 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) fprintf(stderr, ">>>grayspec\n"); @@ -1749,11 +1576,11 @@ yyreduce: global_channel_depth = 1; global_invert_data = 0; } +#line 1580 "testpatterny.c" /* yacc.c:1646 */ break; case 9: -/* Line 1792 of yacc.c */ -#line 201 "testpatterny.y" +#line 201 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) fprintf(stderr, ">>>whitespec\n"); @@ -1761,389 +1588,399 @@ yyreduce: global_channel_depth = 1; global_invert_data = 1; } +#line 1592 "testpatterny.c" /* yacc.c:1646 */ break; case 10: -/* Line 1792 of yacc.c */ -#line 211 "testpatterny.y" +#line 211 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>extendedspec %d\n", (yyvsp[(2) - (2)].ival)); + fprintf(stderr, ">>>extendedspec %d\n", (yyvsp[0].ival)); global_image_type = "Raw"; global_invert_data = 0; - global_channel_depth = (yyvsp[(2) - (2)].ival); + global_channel_depth = (yyvsp[0].ival); } +#line 1604 "testpatterny.c" /* yacc.c:1646 */ break; case 18: -/* Line 1792 of yacc.c */ -#line 224 "testpatterny.y" +#line 224 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>modespec2 %d\n", (yyvsp[(2) - (2)].ival)); - if ((yyvsp[(2) - (2)].ival) == 8 || (yyvsp[(2) - (2)].ival) == 16) - global_bit_depth = (yyvsp[(2) - (2)].ival); + fprintf(stderr, ">>>modespec2 %d\n", (yyvsp[0].ival)); + if ((yyvsp[0].ival) == 8 || (yyvsp[0].ival) == 16) + global_bit_depth = (yyvsp[0].ival); } +#line 1615 "testpatterny.c" /* yacc.c:1646 */ break; case 21: -/* Line 1792 of yacc.c */ -#line 235 "testpatterny.y" +#line 235 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) fprintf(stderr, ">>>round\n"); global_round_size = 1; } +#line 1625 "testpatterny.c" /* yacc.c:1646 */ break; case 23: -/* Line 1792 of yacc.c */ -#line 245 "testpatterny.y" +#line 245 "testpatterny.y" /* yacc.c:1646 */ { - int channel = find_color((yyvsp[(2) - (3)].sval)); + int channel = find_color((yyvsp[-1].sval)); if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>level %s %f\n", (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].dval)); + fprintf(stderr, ">>>level %s %f\n", (yyvsp[-1].sval), (yyvsp[0].dval)); if (channel >= 0) - global_levels[channel] = (yyvsp[(3) - (3)].dval); + global_levels[channel] = (yyvsp[0].dval); } +#line 1637 "testpatterny.c" /* yacc.c:1646 */ break; case 24: -/* Line 1792 of yacc.c */ -#line 255 "testpatterny.y" +#line 255 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>channel_level %d %f\n", (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); - if ((yyvsp[(2) - (3)].ival) >= 0 && (yyvsp[(2) - (3)].ival) <= STP_CHANNEL_LIMIT) - global_levels[(yyvsp[(2) - (3)].ival)] = (yyvsp[(3) - (3)].dval); + fprintf(stderr, ">>>channel_level %d %f\n", (yyvsp[-1].ival), (yyvsp[0].dval)); + if ((yyvsp[-1].ival) >= 0 && (yyvsp[-1].ival) <= STP_CHANNEL_LIMIT) + global_levels[(yyvsp[-1].ival)] = (yyvsp[0].dval); } +#line 1648 "testpatterny.c" /* yacc.c:1646 */ break; case 25: -/* Line 1792 of yacc.c */ -#line 264 "testpatterny.y" +#line 264 "testpatterny.y" /* yacc.c:1646 */ { - int channel = find_color((yyvsp[(2) - (3)].sval)); + int channel = find_color((yyvsp[-1].sval)); if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>gamma %s %f\n", (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].dval)); + fprintf(stderr, ">>>gamma %s %f\n", (yyvsp[-1].sval), (yyvsp[0].dval)); if (channel >= 0) - global_gammas[channel] = (yyvsp[(3) - (3)].dval); + global_gammas[channel] = (yyvsp[0].dval); } +#line 1660 "testpatterny.c" /* yacc.c:1646 */ break; case 26: -/* Line 1792 of yacc.c */ -#line 274 "testpatterny.y" +#line 274 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>channel_gamma %d %f\n", (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); - if ((yyvsp[(2) - (3)].ival) >= 0 && (yyvsp[(2) - (3)].ival) <= STP_CHANNEL_LIMIT) - global_gammas[(yyvsp[(2) - (3)].ival)] = (yyvsp[(3) - (3)].dval); + fprintf(stderr, ">>>channel_gamma %d %f\n", (yyvsp[-1].ival), (yyvsp[0].dval)); + if ((yyvsp[-1].ival) >= 0 && (yyvsp[-1].ival) <= STP_CHANNEL_LIMIT) + global_gammas[(yyvsp[-1].ival)] = (yyvsp[0].dval); } +#line 1671 "testpatterny.c" /* yacc.c:1646 */ break; case 27: -/* Line 1792 of yacc.c */ -#line 283 "testpatterny.y" +#line 283 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>global_gamma %f\n", (yyvsp[(2) - (2)].dval)); - global_gamma = (yyvsp[(2) - (2)].dval); + fprintf(stderr, ">>>global_gamma %f\n", (yyvsp[0].dval)); + global_gamma = (yyvsp[0].dval); } +#line 1681 "testpatterny.c" /* yacc.c:1646 */ break; case 28: -/* Line 1792 of yacc.c */ -#line 290 "testpatterny.y" +#line 290 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>steps %d\n", (yyvsp[(2) - (2)].ival)); - global_steps = (yyvsp[(2) - (2)].ival); + fprintf(stderr, ">>>steps %d\n", (yyvsp[0].ival)); + global_steps = (yyvsp[0].ival); } +#line 1691 "testpatterny.c" /* yacc.c:1646 */ break; case 29: -/* Line 1792 of yacc.c */ -#line 297 "testpatterny.y" +#line 297 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>ink_limit %f\n", (yyvsp[(2) - (2)].dval)); - global_ink_limit = (yyvsp[(2) - (2)].dval); + fprintf(stderr, ">>>ink_limit %f\n", (yyvsp[0].dval)); + global_ink_limit = (yyvsp[0].dval); } +#line 1701 "testpatterny.c" /* yacc.c:1646 */ break; case 30: -/* Line 1792 of yacc.c */ -#line 304 "testpatterny.y" +#line 304 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>printer %s\n", (yyvsp[(2) - (2)].sval)); - global_printer = stp_strdup((yyvsp[(2) - (2)].sval)); - free((yyvsp[(2) - (2)].sval)); + fprintf(stderr, ">>>printer %s\n", (yyvsp[0].sval)); + global_printer = stp_strdup((yyvsp[0].sval)); + free((yyvsp[0].sval)); } +#line 1712 "testpatterny.c" /* yacc.c:1646 */ break; case 31: -/* Line 1792 of yacc.c */ -#line 313 "testpatterny.y" +#line 313 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>page_size_name %s\n", (yyvsp[(2) - (2)].sval)); - stp_set_string_parameter(global_vars, "PageSize", (yyvsp[(2) - (2)].sval)); - free((yyvsp[(2) - (2)].sval)); + fprintf(stderr, ">>>page_size_name %s\n", (yyvsp[0].sval)); + stp_set_string_parameter(global_vars, "PageSize", (yyvsp[0].sval)); + free((yyvsp[0].sval)); } +#line 1723 "testpatterny.c" /* yacc.c:1646 */ break; case 32: -/* Line 1792 of yacc.c */ -#line 322 "testpatterny.y" +#line 322 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>page_size_custom %d %d\n", (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); - stp_set_page_width(global_vars, (yyvsp[(2) - (3)].ival)); - stp_set_page_height(global_vars, (yyvsp[(3) - (3)].ival)); + fprintf(stderr, ">>>page_size_custom %d %d\n", (yyvsp[-1].ival), (yyvsp[0].ival)); + stp_set_page_width(global_vars, (yyvsp[-1].ival)); + stp_set_page_height(global_vars, (yyvsp[0].ival)); } +#line 1734 "testpatterny.c" /* yacc.c:1646 */ break; case 35: -/* Line 1792 of yacc.c */ -#line 334 "testpatterny.y" +#line 334 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>parameter_string %s %s\n", (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].sval)); - stp_set_string_parameter(global_vars, (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].sval)); - free((yyvsp[(2) - (3)].sval)); - free((yyvsp[(3) - (3)].sval)); + fprintf(stderr, ">>>parameter_string %s %s\n", (yyvsp[-1].sval), (yyvsp[0].sval)); + stp_set_string_parameter(global_vars, (yyvsp[-1].sval), (yyvsp[0].sval)); + free((yyvsp[-1].sval)); + free((yyvsp[0].sval)); } +#line 1746 "testpatterny.c" /* yacc.c:1646 */ break; case 36: -/* Line 1792 of yacc.c */ -#line 344 "testpatterny.y" +#line 344 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>parameter_int %s %d\n", (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].ival)); - stp_set_int_parameter(global_vars, (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].ival)); - free((yyvsp[(2) - (3)].sval)); + fprintf(stderr, ">>>parameter_int %s %d\n", (yyvsp[-1].sval), (yyvsp[0].ival)); + stp_set_int_parameter(global_vars, (yyvsp[-1].sval), (yyvsp[0].ival)); + free((yyvsp[-1].sval)); } +#line 1757 "testpatterny.c" /* yacc.c:1646 */ break; case 37: -/* Line 1792 of yacc.c */ -#line 353 "testpatterny.y" +#line 353 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>parameter_bool %s %d\n", (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].ival)); - stp_set_boolean_parameter(global_vars, (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].ival)); - free((yyvsp[(2) - (3)].sval)); + fprintf(stderr, ">>>parameter_bool %s %d\n", (yyvsp[-1].sval), (yyvsp[0].ival)); + stp_set_boolean_parameter(global_vars, (yyvsp[-1].sval), (yyvsp[0].ival)); + free((yyvsp[-1].sval)); } +#line 1768 "testpatterny.c" /* yacc.c:1646 */ break; case 38: -/* Line 1792 of yacc.c */ -#line 362 "testpatterny.y" +#line 362 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>parameter_float %s %f\n", (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].dval)); - stp_set_float_parameter(global_vars, (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].dval)); - free((yyvsp[(2) - (3)].sval)); + fprintf(stderr, ">>>parameter_float %s %f\n", (yyvsp[-1].sval), (yyvsp[0].dval)); + stp_set_float_parameter(global_vars, (yyvsp[-1].sval), (yyvsp[0].dval)); + free((yyvsp[-1].sval)); } +#line 1779 "testpatterny.c" /* yacc.c:1646 */ break; case 39: -/* Line 1792 of yacc.c */ -#line 371 "testpatterny.y" +#line 371 "testpatterny.y" /* yacc.c:1646 */ { - stp_curve_t *curve = stp_curve_create_from_string((yyvsp[(3) - (3)].sval)); + stp_curve_t *curve = stp_curve_create_from_string((yyvsp[0].sval)); if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>parameter_curve %s %s\n", (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].sval)); + fprintf(stderr, ">>>parameter_curve %s %s\n", (yyvsp[-1].sval), (yyvsp[0].sval)); if (curve) { - stp_set_curve_parameter(global_vars, (yyvsp[(2) - (3)].sval), curve); + stp_set_curve_parameter(global_vars, (yyvsp[-1].sval), curve); stp_curve_destroy(curve); } - free((yyvsp[(2) - (3)].sval)); + free((yyvsp[-1].sval)); } +#line 1795 "testpatterny.c" /* yacc.c:1646 */ break; case 45: -/* Line 1792 of yacc.c */ -#line 387 "testpatterny.y" +#line 387 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>density %f\n", (yyvsp[(2) - (2)].dval)); - global_density = (yyvsp[(2) - (2)].dval); + fprintf(stderr, ">>>density %f\n", (yyvsp[0].dval)); + global_density = (yyvsp[0].dval); } +#line 1805 "testpatterny.c" /* yacc.c:1646 */ break; case 46: -/* Line 1792 of yacc.c */ -#line 394 "testpatterny.y" +#line 394 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>top %f\n", (yyvsp[(2) - (2)].dval)); - global_xtop = (yyvsp[(2) - (2)].dval); + fprintf(stderr, ">>>top %f\n", (yyvsp[0].dval)); + global_xtop = (yyvsp[0].dval); } +#line 1815 "testpatterny.c" /* yacc.c:1646 */ break; case 47: -/* Line 1792 of yacc.c */ -#line 401 "testpatterny.y" +#line 401 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>left %f\n", (yyvsp[(2) - (2)].dval)); - global_xleft = (yyvsp[(2) - (2)].dval); + fprintf(stderr, ">>>left %f\n", (yyvsp[0].dval)); + global_xleft = (yyvsp[0].dval); } +#line 1825 "testpatterny.c" /* yacc.c:1646 */ break; case 48: -/* Line 1792 of yacc.c */ -#line 408 "testpatterny.y" +#line 408 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) fprintf(stderr, ">>>relative size\n"); global_size_mode = SIZE_RELATIVE; } +#line 1835 "testpatterny.c" /* yacc.c:1646 */ break; case 49: -/* Line 1792 of yacc.c */ -#line 415 "testpatterny.y" +#line 415 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) fprintf(stderr, ">>>size inches\n"); global_size_mode = SIZE_IN; } +#line 1845 "testpatterny.c" /* yacc.c:1646 */ break; case 50: -/* Line 1792 of yacc.c */ -#line 422 "testpatterny.y" +#line 422 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) fprintf(stderr, ">>>size pt\n"); global_size_mode = SIZE_PT; } +#line 1855 "testpatterny.c" /* yacc.c:1646 */ break; case 51: -/* Line 1792 of yacc.c */ -#line 429 "testpatterny.y" +#line 429 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) fprintf(stderr, ">>>size mm\n"); global_size_mode = SIZE_MM; } +#line 1865 "testpatterny.c" /* yacc.c:1646 */ break; case 57: -/* Line 1792 of yacc.c */ -#line 440 "testpatterny.y" +#line 440 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>hsize %f\n", (yyvsp[(2) - (2)].dval)); - global_hsize = (yyvsp[(2) - (2)].dval); + fprintf(stderr, ">>>hsize %f\n", (yyvsp[0].dval)); + global_hsize = (yyvsp[0].dval); } +#line 1875 "testpatterny.c" /* yacc.c:1646 */ break; case 58: -/* Line 1792 of yacc.c */ -#line 447 "testpatterny.y" +#line 447 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>vsize %f\n", (yyvsp[(2) - (2)].dval)); - global_vsize = (yyvsp[(2) - (2)].dval); + fprintf(stderr, ">>>vsize %f\n", (yyvsp[0].dval)); + global_vsize = (yyvsp[0].dval); } +#line 1885 "testpatterny.c" /* yacc.c:1646 */ break; case 59: -/* Line 1792 of yacc.c */ -#line 454 "testpatterny.y" +#line 454 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>blackline %d\n", (yyvsp[(2) - (2)].ival)); - global_noblackline = !((yyvsp[(2) - (2)].ival)); + fprintf(stderr, ">>>blackline %d\n", (yyvsp[0].ival)); + global_noblackline = !((yyvsp[0].ival)); } +#line 1895 "testpatterny.c" /* yacc.c:1646 */ break; case 60: -/* Line 1792 of yacc.c */ -#line 462 "testpatterny.y" +#line 462 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>noscale %d\n", (yyvsp[(2) - (2)].ival)); - global_noscale = (yyvsp[(2) - (2)].ival); + fprintf(stderr, ">>>colorline %d\n", (yyvsp[0].ival)); + global_colorline = ((yyvsp[0].ival) != 0); } +#line 1905 "testpatterny.c" /* yacc.c:1646 */ break; case 61: -/* Line 1792 of yacc.c */ -#line 470 "testpatterny.y" +#line 470 "testpatterny.y" /* yacc.c:1646 */ + { + if (getenv("STP_TESTPATTERN_DEBUG")) + fprintf(stderr, ">>>noscale %d\n", (yyvsp[0].ival)); + global_noscale = (yyvsp[0].ival); + } +#line 1915 "testpatterny.c" /* yacc.c:1646 */ + break; + + case 62: +#line 478 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>color_block1 %f %f %f (%d)\n", (yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].dval), (yyvsp[(3) - (3)].dval), + fprintf(stderr, ">>>color_block1 %f %f %f (%d)\n", (yyvsp[-2].dval), (yyvsp[-1].dval), (yyvsp[0].dval), current_index); if (current_index < STP_CHANNEL_LIMIT) { - current_testpattern->d.pattern.mins[current_index] = (yyvsp[(1) - (3)].dval); - current_testpattern->d.pattern.vals[current_index] = (yyvsp[(2) - (3)].dval); - current_testpattern->d.pattern.gammas[current_index] = (yyvsp[(3) - (3)].dval); + current_testpattern->d.pattern.mins[current_index] = (yyvsp[-2].dval); + current_testpattern->d.pattern.vals[current_index] = (yyvsp[-1].dval); + current_testpattern->d.pattern.gammas[current_index] = (yyvsp[0].dval); current_index++; } } +#line 1932 "testpatterny.c" /* yacc.c:1646 */ break; - case 67: -/* Line 1792 of yacc.c */ -#line 494 "testpatterny.y" + case 68: +#line 502 "testpatterny.y" /* yacc.c:1646 */ { - int channel = find_color((yyvsp[(1) - (4)].sval)); + int channel = find_color((yyvsp[-3].sval)); if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>color_block2a %s %f %f %f\n", (yyvsp[(1) - (4)].sval), (yyvsp[(2) - (4)].dval), (yyvsp[(3) - (4)].dval), (yyvsp[(4) - (4)].dval)); + fprintf(stderr, ">>>color_block2a %s %f %f %f\n", (yyvsp[-3].sval), (yyvsp[-2].dval), (yyvsp[-1].dval), (yyvsp[0].dval)); if (channel >= 0 && channel < STP_CHANNEL_LIMIT) { - current_testpattern->d.pattern.mins[channel] = (yyvsp[(2) - (4)].dval); - current_testpattern->d.pattern.vals[channel] = (yyvsp[(3) - (4)].dval); - current_testpattern->d.pattern.gammas[channel] = (yyvsp[(4) - (4)].dval); + current_testpattern->d.pattern.mins[channel] = (yyvsp[-2].dval); + current_testpattern->d.pattern.vals[channel] = (yyvsp[-1].dval); + current_testpattern->d.pattern.gammas[channel] = (yyvsp[0].dval); } } +#line 1948 "testpatterny.c" /* yacc.c:1646 */ break; - case 68: -/* Line 1792 of yacc.c */ -#line 508 "testpatterny.y" + case 69: +#line 516 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>color_block2b %d %f %f %f\n", (yyvsp[(2) - (5)].ival), (yyvsp[(3) - (5)].dval), (yyvsp[(4) - (5)].dval), (yyvsp[(5) - (5)].dval)); - if ((yyvsp[(2) - (5)].ival) >= 0 && (yyvsp[(2) - (5)].ival) < STP_CHANNEL_LIMIT) + fprintf(stderr, ">>>color_block2b %d %f %f %f\n", (yyvsp[-3].ival), (yyvsp[-2].dval), (yyvsp[-1].dval), (yyvsp[0].dval)); + if ((yyvsp[-3].ival) >= 0 && (yyvsp[-3].ival) < STP_CHANNEL_LIMIT) { - current_testpattern->d.pattern.mins[(yyvsp[(2) - (5)].ival)] = (yyvsp[(3) - (5)].dval); - current_testpattern->d.pattern.vals[(yyvsp[(2) - (5)].ival)] = (yyvsp[(4) - (5)].dval); - current_testpattern->d.pattern.gammas[(yyvsp[(2) - (5)].ival)] = (yyvsp[(5) - (5)].dval); + current_testpattern->d.pattern.mins[(yyvsp[-3].ival)] = (yyvsp[-2].dval); + current_testpattern->d.pattern.vals[(yyvsp[-3].ival)] = (yyvsp[-1].dval); + current_testpattern->d.pattern.gammas[(yyvsp[-3].ival)] = (yyvsp[0].dval); } } +#line 1963 "testpatterny.c" /* yacc.c:1646 */ break; - case 77: -/* Line 1792 of yacc.c */ -#line 533 "testpatterny.y" + case 78: +#line 541 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>patvars %f %f %f %f %f\n", (yyvsp[(1) - (5)].dval), (yyvsp[(2) - (5)].dval), (yyvsp[(3) - (5)].dval), (yyvsp[(4) - (5)].dval), (yyvsp[(5) - (5)].dval)); + fprintf(stderr, ">>>patvars %f %f %f %f %f\n", (yyvsp[-4].dval), (yyvsp[-3].dval), (yyvsp[-2].dval), (yyvsp[-1].dval), (yyvsp[0].dval)); current_testpattern->type = E_PATTERN; - current_testpattern->d.pattern.lower = (yyvsp[(1) - (5)].dval); - current_testpattern->d.pattern.upper = (yyvsp[(2) - (5)].dval); - current_testpattern->d.pattern.levels[1] = (yyvsp[(3) - (5)].dval); - current_testpattern->d.pattern.levels[2] = (yyvsp[(4) - (5)].dval); - current_testpattern->d.pattern.levels[3] = (yyvsp[(5) - (5)].dval); + current_testpattern->d.pattern.lower = (yyvsp[-4].dval); + current_testpattern->d.pattern.upper = (yyvsp[-3].dval); + current_testpattern->d.pattern.levels[1] = (yyvsp[-2].dval); + current_testpattern->d.pattern.levels[2] = (yyvsp[-1].dval); + current_testpattern->d.pattern.levels[3] = (yyvsp[0].dval); current_testpattern = get_next_testpattern(); current_index = 0; } +#line 1980 "testpatterny.c" /* yacc.c:1646 */ break; - case 79: -/* Line 1792 of yacc.c */ -#line 551 "testpatterny.y" + case 80: +#line 559 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) fprintf(stderr, ">>>xpattern\n"); @@ -2156,30 +1993,30 @@ yyreduce: current_testpattern = get_next_testpattern(); current_index = 0; } +#line 1997 "testpatterny.c" /* yacc.c:1646 */ break; - case 80: -/* Line 1792 of yacc.c */ -#line 566 "testpatterny.y" + case 81: +#line 574 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>grid %d\n", (yyvsp[(2) - (2)].ival)); + fprintf(stderr, ">>>grid %d\n", (yyvsp[0].ival)); current_testpattern->type = E_GRID; - current_testpattern->d.grid.ticks = (yyvsp[(2) - (2)].ival); + current_testpattern->d.grid.ticks = (yyvsp[0].ival); current_testpattern = get_next_testpattern(); current_index = 0; } +#line 2010 "testpatterny.c" /* yacc.c:1646 */ break; - case 81: -/* Line 1792 of yacc.c */ -#line 577 "testpatterny.y" + case 82: +#line 585 "testpatterny.y" /* yacc.c:1646 */ { if (getenv("STP_TESTPATTERN_DEBUG")) - fprintf(stderr, ">>>image %d %d\n", (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); + fprintf(stderr, ">>>image %d %d\n", (yyvsp[-1].ival), (yyvsp[0].ival)); current_testpattern->type = E_IMAGE; - current_testpattern->d.image.x = (yyvsp[(2) - (3)].ival); - current_testpattern->d.image.y = (yyvsp[(3) - (3)].ival); + current_testpattern->d.image.x = (yyvsp[-1].ival); + current_testpattern->d.image.y = (yyvsp[0].ival); if (current_testpattern->d.image.x <= 0 || current_testpattern->d.image.y <= 0) { @@ -2188,20 +2025,20 @@ yyreduce: } return 0; } +#line 2029 "testpatterny.c" /* yacc.c:1646 */ break; - case 82: -/* Line 1792 of yacc.c */ -#line 594 "testpatterny.y" + case 83: +#line 602 "testpatterny.y" /* yacc.c:1646 */ { - fprintf(stderr,"%s",(yyvsp[(1) - (1)].sval)); - free((yyvsp[(1) - (1)].sval)); + fprintf(stderr,"%s",(yyvsp[0].sval)); + free((yyvsp[0].sval)); } +#line 2038 "testpatterny.c" /* yacc.c:1646 */ break; - case 86: -/* Line 1792 of yacc.c */ -#line 607 "testpatterny.y" + case 87: +#line 615 "testpatterny.y" /* yacc.c:1646 */ { close_output(); if (global_output) @@ -2209,63 +2046,63 @@ yyreduce: global_output = NULL; output = stdout; } +#line 2050 "testpatterny.c" /* yacc.c:1646 */ break; - case 87: -/* Line 1792 of yacc.c */ -#line 617 "testpatterny.y" + case 88: +#line 625 "testpatterny.y" /* yacc.c:1646 */ { - global_output = (yyvsp[(2) - (2)].sval); + global_output = (yyvsp[0].sval); } +#line 2058 "testpatterny.c" /* yacc.c:1646 */ break; - case 90: -/* Line 1792 of yacc.c */ -#line 626 "testpatterny.y" + case 91: +#line 634 "testpatterny.y" /* yacc.c:1646 */ { start_job = 1; } +#line 2064 "testpatterny.c" /* yacc.c:1646 */ break; - case 91: -/* Line 1792 of yacc.c */ -#line 630 "testpatterny.y" + case 92: +#line 638 "testpatterny.y" /* yacc.c:1646 */ { end_job = 1; } +#line 2070 "testpatterny.c" /* yacc.c:1646 */ break; - case 116: -/* Line 1792 of yacc.c */ -#line 640 "testpatterny.y" + case 118: +#line 648 "testpatterny.y" /* yacc.c:1646 */ { global_did_something = 1; } +#line 2076 "testpatterny.c" /* yacc.c:1646 */ break; - case 121: -/* Line 1792 of yacc.c */ -#line 647 "testpatterny.y" + case 123: +#line 655 "testpatterny.y" /* yacc.c:1646 */ { global_did_something = 1; } +#line 2082 "testpatterny.c" /* yacc.c:1646 */ break; - case 124: -/* Line 1792 of yacc.c */ -#line 654 "testpatterny.y" + case 126: +#line 662 "testpatterny.y" /* yacc.c:1646 */ { global_did_something = 1; } +#line 2088 "testpatterny.c" /* yacc.c:1646 */ break; - case 130: -/* Line 1792 of yacc.c */ -#line 664 "testpatterny.y" + case 132: +#line 672 "testpatterny.y" /* yacc.c:1646 */ { return 0; } +#line 2094 "testpatterny.c" /* yacc.c:1646 */ break; - case 131: -/* Line 1792 of yacc.c */ -#line 668 "testpatterny.y" + case 133: +#line 676 "testpatterny.y" /* yacc.c:1646 */ { current_testpattern = get_next_testpattern(); } +#line 2102 "testpatterny.c" /* yacc.c:1646 */ break; -/* Line 1792 of yacc.c */ -#line 2269 "testpatterny.c" +#line 2106 "testpatterny.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2287,7 +2124,7 @@ yyreduce: *++yyvsp = yyval; - /* Now `shift' the result of the reduction. Determine what state + /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -2302,9 +2139,9 @@ yyreduce: goto yynewstate; -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ @@ -2355,20 +2192,20 @@ yyerrlab: if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } } /* Else will try to reuse lookahead token after shifting the error @@ -2387,7 +2224,7 @@ yyerrorlab: if (/*CONSTCOND*/ 0) goto yyerrorlab; - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -2400,29 +2237,29 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yydestruct ("Error: popping", - yystos[yystate], yyvsp); + yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -2473,14 +2310,14 @@ yyreturn: yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); } - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -2491,11 +2328,7 @@ yyreturn: if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - /* Make sure YYID is used. */ - return YYID (yyresult); + return yyresult; } - - -/* Line 2055 of yacc.c */ -#line 674 "testpatterny.y" +#line 682 "testpatterny.y" /* yacc.c:1906 */ diff --git a/src/testpattern/testpatterny.h b/src/testpattern/testpatterny.h index 6fae959..259ea29 100644 --- a/src/testpattern/testpatterny.h +++ b/src/testpattern/testpatterny.h @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.7. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + 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 3 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, see <http://www.gnu.org/licenses/>. */ @@ -26,13 +26,13 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ #ifndef YY_YY_TESTPATTERNY_H_INCLUDED # define YY_YY_TESTPATTERNY_H_INCLUDED -/* Enabling traces. */ +/* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -40,60 +40,60 @@ extern int yydebug; #endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - tINT = 258, - tDOUBLE = 259, - tSTRING = 260, - COLOR = 261, - GAMMA = 262, - LEVEL = 263, - STEPS = 264, - INK_LIMIT = 265, - PRINTER = 266, - PARAMETER = 267, - PARAMETER_INT = 268, - PARAMETER_BOOL = 269, - PARAMETER_FLOAT = 270, - PARAMETER_CURVE = 271, - DENSITY = 272, - TOP = 273, - LEFT = 274, - SIZE_MODE = 275, - RELATIVE = 276, - PT = 277, - IN = 278, - MM = 279, - HSIZE = 280, - VSIZE = 281, - BLACKLINE = 282, - NOSCALE = 283, - PATTERN = 284, - XPATTERN = 285, - EXTENDED = 286, - IMAGE = 287, - GRID = 288, - SEMI = 289, - CHANNEL = 290, - CMYK = 291, - KCMY = 292, - RGB = 293, - CMY = 294, - GRAY = 295, - WHITE = 296, - MODE = 297, - PAGESIZE = 298, - ROUND = 299, - MESSAGE = 300, - OUTPUT = 301, - START_JOB = 302, - END_JOB = 303, - END = 304 - }; + enum yytokentype + { + tINT = 258, + tDOUBLE = 259, + tSTRING = 260, + COLOR = 261, + GAMMA = 262, + LEVEL = 263, + STEPS = 264, + INK_LIMIT = 265, + PRINTER = 266, + PARAMETER = 267, + PARAMETER_INT = 268, + PARAMETER_BOOL = 269, + PARAMETER_FLOAT = 270, + PARAMETER_CURVE = 271, + DENSITY = 272, + TOP = 273, + LEFT = 274, + SIZE_MODE = 275, + RELATIVE = 276, + PT = 277, + IN = 278, + MM = 279, + HSIZE = 280, + VSIZE = 281, + BLACKLINE = 282, + COLORLINE = 283, + NOSCALE = 284, + PATTERN = 285, + XPATTERN = 286, + EXTENDED = 287, + IMAGE = 288, + GRID = 289, + SEMI = 290, + CHANNEL = 291, + CMYK = 292, + KCMY = 293, + RGB = 294, + CMY = 295, + GRAY = 296, + WHITE = 297, + MODE = 298, + PAGESIZE = 299, + ROUND = 300, + MESSAGE = 301, + OUTPUT = 302, + START_JOB = 303, + END_JOB = 304, + END = 305 + }; #endif /* Tokens. */ #define tINT 258 @@ -121,51 +121,35 @@ extern int yydebug; #define HSIZE 280 #define VSIZE 281 #define BLACKLINE 282 -#define NOSCALE 283 -#define PATTERN 284 -#define XPATTERN 285 -#define EXTENDED 286 -#define IMAGE 287 -#define GRID 288 -#define SEMI 289 -#define CHANNEL 290 -#define CMYK 291 -#define KCMY 292 -#define RGB 293 -#define CMY 294 -#define GRAY 295 -#define WHITE 296 -#define MODE 297 -#define PAGESIZE 298 -#define ROUND 299 -#define MESSAGE 300 -#define OUTPUT 301 -#define START_JOB 302 -#define END_JOB 303 -#define END 304 +#define COLORLINE 283 +#define NOSCALE 284 +#define PATTERN 285 +#define XPATTERN 286 +#define EXTENDED 287 +#define IMAGE 288 +#define GRID 289 +#define SEMI 290 +#define CHANNEL 291 +#define CMYK 292 +#define KCMY 293 +#define RGB 294 +#define CMY 295 +#define GRAY 296 +#define WHITE 297 +#define MODE 298 +#define PAGESIZE 299 +#define ROUND 300 +#define MESSAGE 301 +#define OUTPUT 302 +#define START_JOB 303 +#define END_JOB 304 +#define END 305 +/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -#endif - extern YYSTYPE yylval; -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ #endif /* !YY_YY_TESTPATTERNY_H_INCLUDED */ diff --git a/src/testpattern/testpatterny.y b/src/testpattern/testpatterny.y index 0a4df6b..4678949 100644 --- a/src/testpattern/testpatterny.y +++ b/src/testpattern/testpatterny.y @@ -15,8 +15,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ %{ @@ -113,6 +112,7 @@ find_color(const char *name) %token HSIZE %token VSIZE %token BLACKLINE +%token COLORLINE %token NOSCALE %token PATTERN %token XPATTERN @@ -458,6 +458,14 @@ blackline: BLACKLINE tINT } ; +colorline: COLORLINE tINT + { + if (getenv("STP_TESTPATTERN_DEBUG")) + fprintf(stderr, ">>>colorline %d\n", $2); + global_colorline = ($2 != 0); + } +; + noscale: NOSCALE tINT { if (getenv("STP_TESTPATTERN_DEBUG")) @@ -633,7 +641,7 @@ end_job: END_JOB A_Rule: gamma | channel_gamma | level | channel_level | global_gamma | steps | ink_limit | printer | parameter | density | top | left | hsize | vsize | blackline | noscale | inputspec | page_size | message - | output | start_job | end_job | size_mode | round + | output | start_job | end_job | size_mode | round | colorline ; Rule: A_Rule SEMI diff --git a/src/xml/Makefile.am b/src/xml/Makefile.am index 557c8e1..41af8fe 100644 --- a/src/xml/Makefile.am +++ b/src/xml/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. @@ -20,19 +19,23 @@ include $(top_srcdir)/scripts/global.mk -SUBDIRS = escp2 +SUBDIRS = \ + dither \ + escp2 \ + papers \ + printers + +STAMPS = \ + dither/xml-stamp \ + escp2/xml-stamp \ + papers/xml-stamp \ + printers/xml-stamp + ## Variables pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml -pkgxmldata_DATA = \ - dither-matrix-1x1.xml \ - dither-matrix-2x1.xml \ - dither-matrix-4x1.xml \ - papers.xml \ - printers.xml - ## Rules noinst_PROGRAMS = extract-strings @@ -40,10 +43,12 @@ noinst_PROGRAMS = extract-strings extract_strings_SOURCES = extract-strings.c extract_strings_LDADD = $(GUTENPRINT_LIBS) -xml-stamp: $(pkgxmldata_DATA) escp2/xml-stamp Makefile.am +xml-stamp: $(pkgxmldata_DATA) $(STAMPS) Makefile.am -rm -f $@ $@.tmp touch $@.tmp - sed 's;^;escp2/;' escp2/xml-stamp >> $@.tmp + for dir in $(SUBDIRS) ; do \ + sed "s;^;$$dir/;" $${dir}/xml-stamp >> $@.tmp ; \ + done for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done mv $@.tmp $@ @@ -63,6 +68,6 @@ dist-hook: xmli18n-tmp.h xml-stamp CLEANFILES = xmli18n-tmp.h xmli18n-tmp.h.tmp xml-stamp xml-stamp.tmp -EXTRA_DIST = $(pkgxmldata_DATA) +EXTRA_DIST = $(pkgxmldata_DATA) xmli18n-tmp.h MAINTAINERCLEANFILES = Makefile.in diff --git a/src/xml/Makefile.in b/src/xml/Makefile.in index 6d5bc71..4a75f19 100644 --- a/src/xml/Makefile.in +++ b/src/xml/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -19,9 +19,18 @@ #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__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -84,23 +93,22 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(top_srcdir)/scripts/depcomp noinst_PROGRAMS = extract-strings$(EXEEXT) subdir = src/xml ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -127,7 +135,8 @@ 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__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/extract-strings.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -162,35 +171,6 @@ am__can_run_installinfo = \ 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/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -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 = \ @@ -198,7 +178,7 @@ am__recursive_targets = \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - distdir + distdir distdir-am 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 @@ -219,6 +199,8 @@ am__define_uniq_tagged_files = \ ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/scripts/depcomp \ + $(top_srcdir)/scripts/global.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -254,6 +236,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -274,7 +258,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -291,6 +274,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -353,10 +337,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -380,7 +366,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -398,9 +383,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -468,21 +455,24 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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 -SUBDIRS = escp2 -pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml -pkgxmldata_DATA = \ - dither-matrix-1x1.xml \ - dither-matrix-2x1.xml \ - dither-matrix-4x1.xml \ - papers.xml \ - printers.xml +SUBDIRS = \ + dither \ + escp2 \ + papers \ + printers + +STAMPS = \ + dither/xml-stamp \ + escp2/xml-stamp \ + papers/xml-stamp \ + printers/xml-stamp +pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml extract_strings_SOURCES = extract-strings.c extract_strings_LDADD = $(GUTENPRINT_LIBS) # xmli18n-tmp.h is needed by po/POTFILES.in at dist time CLEANFILES = xmli18n-tmp.h xmli18n-tmp.h.tmp xml-stamp xml-stamp.tmp -EXTRA_DIST = $(pkgxmldata_DATA) +EXTRA_DIST = $(pkgxmldata_DATA) xmli18n-tmp.h MAINTAINERCLEANFILES = Makefile.in all: all-recursive @@ -500,16 +490,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/xml/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/xml/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -539,21 +528,27 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract-strings.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract-strings.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) .c.o: @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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -567,27 +562,6 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -install-pkgxmldataDATA: $(pkgxmldata_DATA) - @$(NORMAL_INSTALL) - @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"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgxmldatadir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgxmldatadir)" || exit $$?; \ - done - -uninstall-pkgxmldataDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - 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. @@ -688,7 +662,10 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -748,12 +725,9 @@ distdir: $(DISTFILES) dist-hook check-am: all-am check: check-recursive -all-am: Makefile $(PROGRAMS) $(DATA) all-local +all-am: Makefile $(PROGRAMS) all-local installdirs: installdirs-recursive installdirs-am: - for dir in "$(DESTDIR)$(pkgxmldatadir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive @@ -792,7 +766,7 @@ clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-recursive - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/extract-strings.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -809,7 +783,7 @@ info: info-recursive info-am: -install-data-am: install-pkgxmldataDATA +install-data-am: install-dvi: install-dvi-recursive @@ -838,7 +812,7 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/extract-strings.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -855,12 +829,12 @@ ps: ps-recursive ps-am: -uninstall-am: uninstall-pkgxmldataDATA +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 \ + am--depfiles 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 \ @@ -868,12 +842,13 @@ uninstall-am: uninstall-pkgxmldataDATA 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 installdirs-am \ - 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-pkgxmldataDATA + install-ps install-ps-am install-strip 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-am uninstall uninstall-am + +.PRECIOUS: Makefile @SET_MAKE@ @@ -884,18 +859,16 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) -xml-stamp: $(pkgxmldata_DATA) escp2/xml-stamp Makefile.am +xml-stamp: $(pkgxmldata_DATA) $(STAMPS) Makefile.am -rm -f $@ $@.tmp touch $@.tmp - sed 's;^;escp2/;' escp2/xml-stamp >> $@.tmp + for dir in $(SUBDIRS) ; do \ + sed "s;^;$$dir/;" $${dir}/xml-stamp >> $@.tmp ; \ + done for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done mv $@.tmp $@ diff --git a/src/xml/dither/Makefile.am b/src/xml/dither/Makefile.am new file mode 100644 index 0000000..136c453 --- /dev/null +++ b/src/xml/dither/Makefile.am @@ -0,0 +1,43 @@ +## Copyright (C) 2017 Robert Krawitz +## +## 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, 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, see <https://www.gnu.org/licenses/>. + +## Process this file with automake to produce Makefile.in. + +@SET_MAKE@ + +include $(top_srcdir)/scripts/global.mk + +## Variables + +pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/dither + +pkgxmldata_DATA = \ + matrix-1x1.xml \ + matrix-2x1.xml \ + matrix-4x1.xml + + +xml-stamp: $(pkgxmldata_DATA) Makefile.am + -rm -f $@ $@.tmp + touch $@.tmp + for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done + mv $@.tmp $@ + +all-local: xml-stamp + +dist-hook: xml-stamp +CLEANFILES = xmli18n-tmp.h xml-stamp xml-stamp.tmp + +EXTRA_DIST = $(pkgxmldata_DATA) diff --git a/src/xml/dither/Makefile.in b/src/xml/dither/Makefile.in new file mode 100644 index 0000000..57ab6bc --- /dev/null +++ b/src/xml/dither/Makefile.in @@ -0,0 +1,652 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Variables + +#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 = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/xml/dither +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +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/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +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) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/scripts/global.mk +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@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ +BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ +BZIP2 = @BZIP2@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMPRESS = @COMPRESS@ +CONVERT = @CONVERT@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSUF = @CSUF@ +CUPS_CFLAGS = @CUPS_CFLAGS@ +CUPS_CONFIG = @CUPS_CONFIG@ +CUPS_LIBS = @CUPS_LIBS@ +CUPS_PPD_PS_LEVEL = @CUPS_PPD_PS_LEVEL@ +CYGPATH_W = @CYGPATH_W@ +DB2HTML = @DB2HTML@ +DB2PDF = @DB2PDF@ +DB2PS = @DB2PS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOXYGEN = @DOXYGEN@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +DVIPDF = @DVIPDF@ +DVIPS = @DVIPS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FIND = @FIND@ +GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GIMP2_CFLAGS = @GIMP2_CFLAGS@ +GIMP2_LIBS = @GIMP2_LIBS@ +GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNUCFLAGS = @GNUCFLAGS@ +GREP = @GREP@ +GTK2_CFLAGS = @GTK2_CFLAGS@ +GTK2_LIBS = @GTK2_LIBS@ +GUTENPRINTUI2_BINARY_AGE = @GUTENPRINTUI2_BINARY_AGE@ +GUTENPRINTUI2_CFLAGS = @GUTENPRINTUI2_CFLAGS@ +GUTENPRINTUI2_CURRENT_INTERFACE = @GUTENPRINTUI2_CURRENT_INTERFACE@ +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@ +GUTENPRINT_INTERFACE_AGE = @GUTENPRINT_INTERFACE_AGE@ +GUTENPRINT_LIBDEPS = @GUTENPRINT_LIBDEPS@ + +# Libraries +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@ +GZIP = @GZIP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ +LIBS = $(INTLLIBS) @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_BACKEND_LIBDEPS = @LIBUSB_BACKEND_LIBDEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LRZIP = @LRZIP@ +LTALLOCA = @LTALLOCA@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKGROOT = @PKGROOT@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +RELEASE_DATE = @RELEASE_DATE@ +RM = @RM@ +RZIP = @RZIP@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TEST = @TEST@ +TEXI2HTML = @TEXI2HTML@ +TRUE = @TRUE@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WHICH_PPDS = @WHICH_PPDS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XZ = @XZ@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +cups_bindir = @cups_bindir@ +cups_conf_datadir = @cups_conf_datadir@ +cups_conf_serverbin = @cups_conf_serverbin@ +cups_conf_serverroot = @cups_conf_serverroot@ +cups_exec_prefix = @cups_exec_prefix@ +cups_prefix = @cups_prefix@ +cups_sbindir = @cups_sbindir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gimp2_plug_indir = @gimp2_plug_indir@ +gutenprint_cflags = @gutenprint_cflags@ +gutenprint_libdeps = @gutenprint_libdeps@ +gutenprint_libs = @gutenprint_libs@ +gutenprintui2_cflags = @gutenprintui2_cflags@ +gutenprintui2_libdeps = @gutenprintui2_libdeps@ +gutenprintui2_libs = @gutenprintui2_libs@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(LOCAL_CPPFLAGS) $(GNUCFLAGS) +pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/dither +pkgxmldata_DATA = \ + matrix-1x1.xml \ + matrix-2x1.xml \ + matrix-4x1.xml + +CLEANFILES = xmli18n-tmp.h xml-stamp xml-stamp.tmp +EXTRA_DIST = $(pkgxmldata_DATA) +all: all-am + +.SUFFIXES: +$(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 \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/xml/dither/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/xml/dither/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; +$(top_srcdir)/scripts/global.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgxmldataDATA: $(pkgxmldata_DATA) + @$(NORMAL_INSTALL) + @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"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgxmldatadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgxmldatadir)" || exit $$?; \ + done + +uninstall-pkgxmldataDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgxmldatadir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: check-am +all-am: Makefile $(DATA) all-local +installdirs: + for dir in "$(DESTDIR)$(pkgxmldatadir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + 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: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgxmldataDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgxmldataDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am all-local check check-am clean clean-generic \ + 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 + +.PRECIOUS: Makefile + + +@SET_MAKE@ + +# Rules + +$(top_builddir)/src/main/libgutenprint.la: + cd $(top_builddir)/src/main; \ + $(MAKE) + +$(top_builddir)/src/gutenprintui2/libgutenprintui2.la: + cd $(top_builddir)/src/gutenprintui2; \ + $(MAKE) + +xml-stamp: $(pkgxmldata_DATA) Makefile.am + -rm -f $@ $@.tmp + touch $@.tmp + for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done + mv $@.tmp $@ + +all-local: xml-stamp + +dist-hook: xml-stamp + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/xml/dither-matrix-1x1.xml b/src/xml/dither/matrix-1x1.xml index 87a2ccf..87a2ccf 100644 --- a/src/xml/dither-matrix-1x1.xml +++ b/src/xml/dither/matrix-1x1.xml diff --git a/src/xml/dither-matrix-2x1.xml b/src/xml/dither/matrix-2x1.xml index 29aab5e..29aab5e 100644 --- a/src/xml/dither-matrix-2x1.xml +++ b/src/xml/dither/matrix-2x1.xml diff --git a/src/xml/dither-matrix-4x1.xml b/src/xml/dither/matrix-4x1.xml index 46d6817..46d6817 100644 --- a/src/xml/dither-matrix-4x1.xml +++ b/src/xml/dither/matrix-4x1.xml diff --git a/src/xml/escp2/Makefile.am b/src/xml/escp2/Makefile.am index c8df1ed..2b4c866 100644 --- a/src/xml/escp2/Makefile.am +++ b/src/xml/escp2/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. @@ -27,25 +26,27 @@ SUBDIRS = \ media \ mediasizes \ qualitypresets \ + resolutions \ weaves -xml-stamp: media/xml-stamp \ - model/xml-stamp \ - inputslots/xml-stamp \ - inks/xml-stamp \ - mediasizes/xml-stamp \ - qualitypresets/Makefile.am \ - weaves/Makefile.am \ - Makefile.am +STAMPS = \ + inks/xml-stamp \ + inputslots/xml-stamp \ + model/xml-stamp \ + media/xml-stamp \ + mediasizes/xml-stamp \ + qualitypresets/xml-stamp \ + resolutions/xml-stamp \ + weaves/xml-stamp + + +xml-stamp: $(pkgxmldata_DATA) $(STAMPS) Makefile.am -rm -f $@ $@.tmp touch $@.tmp - sed 's;^;media/;' media/xml-stamp >> $@.tmp - sed 's;^;model/;' model/xml-stamp >> $@.tmp - sed 's;^;inputslots/;' inputslots/xml-stamp >> $@.tmp - sed 's;^;inks/;' inks/xml-stamp >> $@.tmp - sed 's;^;mediasizes/;' mediasizes/xml-stamp >> $@.tmp - sed 's;^;weaves/;' weaves/xml-stamp >> $@.tmp - sed 's;^;qualitypresets/;' qualitypresets/xml-stamp >> $@.tmp + for dir in $(SUBDIRS) ; do \ + sed "s;^;$$dir/;" $${dir}/xml-stamp >> $@.tmp ; \ + done + for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done mv $@.tmp $@ all-local: xml-stamp diff --git a/src/xml/escp2/Makefile.in b/src/xml/escp2/Makefile.in index ad6278c..9c03fa5 100644 --- a/src/xml/escp2/Makefile.in +++ b/src/xml/escp2/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -19,7 +19,17 @@ #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__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -82,22 +92,21 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am subdir = src/xml/escp2 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -136,7 +145,7 @@ am__recursive_targets = \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - distdir + distdir distdir-am 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 @@ -157,6 +166,8 @@ am__define_uniq_tagged_files = \ ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/scripts/global.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -192,6 +203,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -212,7 +225,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -229,6 +241,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -291,10 +304,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -318,7 +333,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -336,9 +350,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -406,7 +422,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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 SUBDIRS = \ inks \ inputslots \ @@ -414,8 +429,19 @@ SUBDIRS = \ media \ mediasizes \ qualitypresets \ + resolutions \ weaves +STAMPS = \ + inks/xml-stamp \ + inputslots/xml-stamp \ + model/xml-stamp \ + media/xml-stamp \ + mediasizes/xml-stamp \ + qualitypresets/xml-stamp \ + resolutions/xml-stamp \ + weaves/xml-stamp + CLEANFILES = xml-stamp MAINTAINERCLEANFILES = Makefile.in all: all-recursive @@ -433,16 +459,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/xml/escp2/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/xml/escp2/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -558,7 +583,10 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -735,6 +763,8 @@ uninstall-am: mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am +.PRECIOUS: Makefile + @SET_MAKE@ @@ -744,31 +774,17 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) -xml-stamp: media/xml-stamp \ - model/xml-stamp \ - inputslots/xml-stamp \ - inks/xml-stamp \ - mediasizes/xml-stamp \ - qualitypresets/Makefile.am \ - weaves/Makefile.am \ - Makefile.am +xml-stamp: $(pkgxmldata_DATA) $(STAMPS) Makefile.am -rm -f $@ $@.tmp touch $@.tmp - sed 's;^;media/;' media/xml-stamp >> $@.tmp - sed 's;^;model/;' model/xml-stamp >> $@.tmp - sed 's;^;inputslots/;' inputslots/xml-stamp >> $@.tmp - sed 's;^;inks/;' inks/xml-stamp >> $@.tmp - sed 's;^;mediasizes/;' mediasizes/xml-stamp >> $@.tmp - sed 's;^;weaves/;' weaves/xml-stamp >> $@.tmp - sed 's;^;qualitypresets/;' qualitypresets/xml-stamp >> $@.tmp + for dir in $(SUBDIRS) ; do \ + sed "s;^;$$dir/;" $${dir}/xml-stamp >> $@.tmp ; \ + done + for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done mv $@.tmp $@ all-local: xml-stamp diff --git a/src/xml/escp2/inks/Makefile.am b/src/xml/escp2/inks/Makefile.am index 493067c..647ba2a 100644 --- a/src/xml/escp2/inks/Makefile.am +++ b/src/xml/escp2/inks/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. @@ -32,6 +31,7 @@ pkgxmldata_DATA = \ c80.xml \ c82.xml \ claria.xml \ + claria_xp.xml \ cmy.xml \ cmykrb.xml \ cmykro.xml \ diff --git a/src/xml/escp2/inks/Makefile.in b/src/xml/escp2/inks/Makefile.in index 3db12cb..11cbfb3 100644 --- a/src/xml/escp2/inks/Makefile.in +++ b/src/xml/escp2/inks/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,17 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -83,22 +93,21 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am subdir = src/xml/escp2/inks ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -152,6 +161,8 @@ am__uninstall_files_from_dir = { \ am__installdirs = "$(DESTDIR)$(pkgxmldatadir)" DATA = $(pkgxmldata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/scripts/global.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -162,6 +173,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -182,7 +195,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -199,6 +211,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -261,10 +274,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -288,7 +303,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -306,9 +320,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -376,7 +392,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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 pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/escp2/inks pkgxmldata_DATA = \ artisan.xml \ @@ -386,6 +401,7 @@ pkgxmldata_DATA = \ c80.xml \ c82.xml \ claria.xml \ + claria_xp.xml \ cmy.xml \ cmykrb.xml \ cmykro.xml \ @@ -445,16 +461,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/xml/escp2/inks/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/xml/escp2/inks/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -498,7 +513,10 @@ ctags CTAGS: cscope cscopelist: -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -650,6 +668,8 @@ uninstall-am: uninstall-pkgxmldataDATA mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-pkgxmldataDATA +.PRECIOUS: Makefile + @SET_MAKE@ @@ -659,10 +679,6 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) diff --git a/src/xml/escp2/inks/artisan.xml b/src/xml/escp2/inks/artisan.xml index 3b69f80..57600b1 100644 --- a/src/xml/escp2/inks/artisan.xml +++ b/src/xml/escp2/inks/artisan.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="artisan"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/b500.xml b/src/xml/escp2/inks/b500.xml index 9cb8d9d..b352494 100644 --- a/src/xml/escp2/inks/b500.xml +++ b/src/xml/escp2/inks/b500.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="b500"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/c120.xml b/src/xml/escp2/inks/c120.xml index 3f76227..42b70f6 100644 --- a/src/xml/escp2/inks/c120.xml +++ b/src/xml/escp2/inks/c120.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="c120"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/c64.xml b/src/xml/escp2/inks/c64.xml index add88ab..1181729 100644 --- a/src/xml/escp2/inks/c64.xml +++ b/src/xml/escp2/inks/c64.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="c64"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/c80.xml b/src/xml/escp2/inks/c80.xml index 91b174d..1d8f3c7 100644 --- a/src/xml/escp2/inks/c80.xml +++ b/src/xml/escp2/inks/c80.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="c80"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/c82.xml b/src/xml/escp2/inks/c82.xml index 48685a3..7ae2c95 100644 --- a/src/xml/escp2/inks/c82.xml +++ b/src/xml/escp2/inks/c82.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="c82"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/claria.xml b/src/xml/escp2/inks/claria.xml index 81747c8..0f9ac51 100644 --- a/src/xml/escp2/inks/claria.xml +++ b/src/xml/escp2/inks/claria.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="claria"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/claria_xp.xml b/src/xml/escp2/inks/claria_xp.xml new file mode 100644 index 0000000..44d38b5 --- /dev/null +++ b/src/xml/escp2/inks/claria_xp.xml @@ -0,0 +1,245 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2InkGroup name="claria_xp"> +<Curves> + <curve name="cmykrCyan" wrap="wrap" type="linear" gamma="0" piecewise="false"> + <sequence count="48" lower-bound="0" upper-bound="1"> + 1 1 1 1 1 1 1 1 + 1 0.875 0.75 0.625 0.5 0.375 0.25 0.125 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 + 1 1 1 1 1 1 1 1 + </sequence> + </curve> + <curve name="cmykrMagenta" wrap="wrap" type="linear" gamma="0" piecewise="false"> + <sequence count="48" lower-bound="0" upper-bound="1"> + 0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 + 1 1 1 1 1 1 1 1 + 1 1 0.85 0.7 0.6 0.5 0.4 0.3 + 0.2 0.1 0.05 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + </sequence> + </curve> + <curve name="cmykrYellow" wrap="wrap" type="linear" gamma="0" piecewise="false"> + <sequence count="48" lower-bound="0" upper-bound="1"> + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0.05 0.15 + 0.25 0.35 0.45 0.55 0.65 0.75 0.85 0.95 + 1 1 1 1 1 1 1 1 + 1 0.875 0.75 0.625 0.5 0.375 0.25 0.125 + </sequence> + </curve> + <curve name="cmykrRed" wrap="wrap" type="linear" gamma="0" piecewise="false"> + <sequence count="48" lower-bound="0" upper-bound="1"> + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0.025 0.4 0.6 0.75 0.89 1 1 1 + 1 0.875 0.75 0.625 0.5 0.375 0.25 0.125 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + </sequence> + </curve> +</Curves> + +<InkList translate="text" name="None" text="EPSON Standard Inks"> + <Shades> + <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="CMYKk" text="Six Color Photo" InkID="OTHER"> + <Channels> + <channel name="claria_photo_black" index="0"> + <subchannel color="0" subchannel="0" subchannel="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + <SubchannelTransitionParam name="LightBlackTrans"/> + </subchannel> + <subchannel color="0" subchannel="1" headOffset="2" name="LightBlack" text="Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + <SubchannelTransitionParam name="GrayTrans"/> + <SubchannelValueParam name="GrayValue"/> + <SubchannelScaleParam name="GrayScale"/> + </subchannel> + </channel> + <channel name="claria_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <HueCurve ref="cmykrCyan"/> + <subchannel color="2" subchannel="0" headOffset="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="claria_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <HueCurve ref="cmykrMagenta"/> + <subchannel color="1" subchannel="0" headOffset="1" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="claria_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <HueCurve ref="cmykrYellow"/> + <subchannel color="4" subchannel="0" headOffset="0" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + <channel name="claria_red" index="4"> + <HueCurveParam name="RedHueCurve"/> + <HueCurve ref="cmykrRed"/> + <subchannel color="7" subchannel="0" headOffset="1" name="Red" text="Red" translate="text"> + <ChannelDensityParam name="RedDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="PhotoCMYKk" text="Five Color Photo" InkID="CMYKk"> + <Channels> + <channel name="claria_photo_black" index="0"> + <subchannel color="0" subchannel="0" headOffset="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + <SubchannelTransitionParam name="LightBlackTrans"/> + </subchannel> + <subchannel color="0" subchannel="1" headOffset="2" name="LightBlack" text="Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + <SubchannelTransitionParam name="GrayTrans"/> + <SubchannelValueParam name="GrayValue"/> + <SubchannelScaleParam name="GrayScale"/> + </subchannel> + </channel> + <channel name="claria_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" subchannel="0" headOffset="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="claria_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" subchannel="0" headOffset="1" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="claria_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" subchannel="0" headOffset="0" 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="claria_black" index="0"> + <subchannel color="0" subchannel="0" headOffset="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="claria_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" subchannel="0" headOffset="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="claria_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" subchannel="0" headOffset="1" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="claria_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" subchannel="0" headOffset="0" 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="claria_cyan" index="1"> + <HueCurveParam name="CyanHueCurve"/> + <subchannel color="2" headOffset="2" subchannel="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="claria_magenta" index="2"> + <HueCurveParam name="MagentaHueCurve"/> + <subchannel color="1" subchannel="0" headOffset="1" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="claria_yellow" index="3"> + <HueCurveParam name="YellowHueCurve"/> + <subchannel color="4" subchannel="0" headOffset="0" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> + + <InkName translate="text" name="PhysicalCMYKkR" text="Six Color Raw" InkID="Extended"> + <Channels> + <channel name="claria_black" index="0"> + <subchannel color="0" subchannel="0" headOffset="0" name="Black" text="Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="claria_extended_black" index="1"> + <subchannel color="0" subchannel="1" headOffset="2" name="LightBlack" text="Light Black" translate="text"> + <ChannelDensityParam name="BlackDensity"/> + </subchannel> + </channel> + <channel name="claria_cyan" index="2"> + <subchannel color="2" subchannel="0" headOffset="2" name="Cyan" text="Cyan" translate="text"> + <ChannelDensityParam name="CyanDensity"/> + </subchannel> + </channel> + <channel name="claria_magenta" index="3"> + <subchannel color="1" subchannel="0" headOffset="1" name="Magenta" text="Magenta" translate="text"> + <ChannelDensityParam name="MagentaDensity"/> + </subchannel> + </channel> + <channel name="claria_yellow" index="4"> + <subchannel color="4" subchannel="0" headOffset="0" name="Yellow" text="Yellow" translate="text"> + <ChannelDensityParam name="YellowDensity"/> + </subchannel> + </channel> + <channel name="claria_red" index="5"> + <subchannel color="7" subchannel="0" headOffset="1" name="Red" text="Red" translate="text"> + <ChannelDensityParam name="RedDensity"/> + </subchannel> + </channel> + </Channels> + </InkName> +</InkList> +</escp2InkGroup> +</gutenprint> diff --git a/src/xml/escp2/inks/cmy.xml b/src/xml/escp2/inks/cmy.xml index fbaa098..0e82c85 100644 --- a/src/xml/escp2/inks/cmy.xml +++ b/src/xml/escp2/inks/cmy.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="cmy"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/cmykrb.xml b/src/xml/escp2/inks/cmykrb.xml index f53eec6..07073e0 100644 --- a/src/xml/escp2/inks/cmykrb.xml +++ b/src/xml/escp2/inks/cmykrb.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="cmykrb"> <Curves> diff --git a/src/xml/escp2/inks/cmykro.xml b/src/xml/escp2/inks/cmykro.xml index 50decb4..d0d4964 100644 --- a/src/xml/escp2/inks/cmykro.xml +++ b/src/xml/escp2/inks/cmykro.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="cmykro"> <Curves> diff --git a/src/xml/escp2/inks/cx3650.xml b/src/xml/escp2/inks/cx3650.xml index 004d6b1..d5ee76c 100644 --- a/src/xml/escp2/inks/cx3650.xml +++ b/src/xml/escp2/inks/cx3650.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="cx3650"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/defaultblack.xml b/src/xml/escp2/inks/defaultblack.xml index e520b15..44cbe19 100644 --- a/src/xml/escp2/inks/defaultblack.xml +++ b/src/xml/escp2/inks/defaultblack.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="defaultblack"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/f360.xml b/src/xml/escp2/inks/f360.xml index be01d2c..9c596d7 100644 --- a/src/xml/escp2/inks/f360.xml +++ b/src/xml/escp2/inks/f360.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="f360"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/f360_photo.xml b/src/xml/escp2/inks/f360_photo.xml index 0128197..ba76065 100644 --- a/src/xml/escp2/inks/f360_photo.xml +++ b/src/xml/escp2/inks/f360_photo.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="f360_photo"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/f360_photo7_japan.xml b/src/xml/escp2/inks/f360_photo7_japan.xml index 50b10c7..8e2f2ad 100644 --- a/src/xml/escp2/inks/f360_photo7_japan.xml +++ b/src/xml/escp2/inks/f360_photo7_japan.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="f360_photo7_japan"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/f360_ultrachrome.xml b/src/xml/escp2/inks/f360_ultrachrome.xml index c9332cf..2c87652 100644 --- a/src/xml/escp2/inks/f360_ultrachrome.xml +++ b/src/xml/escp2/inks/f360_ultrachrome.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="f360_ultrachrome"> <InkList translate="text" name="ultraphoto" text="UltraChrome Photo Black"> diff --git a/src/xml/escp2/inks/f360_ultrachrome_k3.xml b/src/xml/escp2/inks/f360_ultrachrome_k3.xml index 0036f8b..1e7cd4f 100644 --- a/src/xml/escp2/inks/f360_ultrachrome_k3.xml +++ b/src/xml/escp2/inks/f360_ultrachrome_k3.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="f360_ultrachrome_k3"> <InkList translate="text" name="ultra3photo" text="Photo Black"> diff --git a/src/xml/escp2/inks/f360_ultrachrome_k3v.xml b/src/xml/escp2/inks/f360_ultrachrome_k3v.xml index 4dd2839..e29ff6e 100644 --- a/src/xml/escp2/inks/f360_ultrachrome_k3v.xml +++ b/src/xml/escp2/inks/f360_ultrachrome_k3v.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="f360_ultrachrome_k3v"> <InkList translate="text" name="ultra3photo" text="Photo Black"> diff --git a/src/xml/escp2/inks/f360_ultrachrome_k3v_2.xml b/src/xml/escp2/inks/f360_ultrachrome_k3v_2.xml index 0281046..5dad05b 100644 --- a/src/xml/escp2/inks/f360_ultrachrome_k3v_2.xml +++ b/src/xml/escp2/inks/f360_ultrachrome_k3v_2.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="f360_ultrachrome_k3v"> <InkList translate="text" name="ultra3photo" text="Photo Black"> diff --git a/src/xml/escp2/inks/nx100.xml b/src/xml/escp2/inks/nx100.xml index 6dd412a..210f3f4 100644 --- a/src/xml/escp2/inks/nx100.xml +++ b/src/xml/escp2/inks/nx100.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="nx100"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/photo_gen0.xml b/src/xml/escp2/inks/photo_gen0.xml index e4dcd4c..9785fc2 100644 --- a/src/xml/escp2/inks/photo_gen0.xml +++ b/src/xml/escp2/inks/photo_gen0.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="photo_gen0"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/photo_gen1.xml b/src/xml/escp2/inks/photo_gen1.xml index be7c6ba..6d3e083 100644 --- a/src/xml/escp2/inks/photo_gen1.xml +++ b/src/xml/escp2/inks/photo_gen1.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="photo_gen1"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/photo_gen2.xml b/src/xml/escp2/inks/photo_gen2.xml index 1d2efc7..e582bbd 100644 --- a/src/xml/escp2/inks/photo_gen2.xml +++ b/src/xml/escp2/inks/photo_gen2.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="photo_gen2"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/photo_gen3.xml b/src/xml/escp2/inks/photo_gen3.xml index e899b4b..1d974e4 100644 --- a/src/xml/escp2/inks/photo_gen3.xml +++ b/src/xml/escp2/inks/photo_gen3.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="photo_gen3"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/photo_gen3_4.xml b/src/xml/escp2/inks/photo_gen3_4.xml index 1b83402..bf155b9 100644 --- a/src/xml/escp2/inks/photo_gen3_4.xml +++ b/src/xml/escp2/inks/photo_gen3_4.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="photo_gen3_4"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/photo_gen4.xml b/src/xml/escp2/inks/photo_gen4.xml index 2283184..1e69f81 100644 --- a/src/xml/escp2/inks/photo_gen4.xml +++ b/src/xml/escp2/inks/photo_gen4.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="photo_gen3"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/photo_pigment.xml b/src/xml/escp2/inks/photo_pigment.xml index f63cb69..3140ed5 100644 --- a/src/xml/escp2/inks/photo_pigment.xml +++ b/src/xml/escp2/inks/photo_pigment.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="photo_pigment"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/picturemate_4.xml b/src/xml/escp2/inks/picturemate_4.xml index 602992c..5d368bd 100644 --- a/src/xml/escp2/inks/picturemate_4.xml +++ b/src/xml/escp2/inks/picturemate_4.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="picturemate_4"> <InkList translate="text" name="picturemate_4" text="Standard"> diff --git a/src/xml/escp2/inks/picturemate_6.xml b/src/xml/escp2/inks/picturemate_6.xml index 418de94..7ddf02e 100644 --- a/src/xml/escp2/inks/picturemate_6.xml +++ b/src/xml/escp2/inks/picturemate_6.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="picturemate_6"> <InkList translate="text" name="picturemate_6" text="Standard"> diff --git a/src/xml/escp2/inks/pro_gen1.xml b/src/xml/escp2/inks/pro_gen1.xml index d1a2760..84f48e3 100644 --- a/src/xml/escp2/inks/pro_gen1.xml +++ b/src/xml/escp2/inks/pro_gen1.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="pro_gen1"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/pro_gen2.xml b/src/xml/escp2/inks/pro_gen2.xml index f005b6c..04eb4bd 100644 --- a/src/xml/escp2/inks/pro_gen2.xml +++ b/src/xml/escp2/inks/pro_gen2.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="pro_gen2"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/pro_pigment.xml b/src/xml/escp2/inks/pro_pigment.xml index 340688c..57e7f0a 100644 --- a/src/xml/escp2/inks/pro_pigment.xml +++ b/src/xml/escp2/inks/pro_pigment.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="pro_pigment"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/pro_ultrachrome.xml b/src/xml/escp2/inks/pro_ultrachrome.xml index 637e58c..188bbe1 100644 --- a/src/xml/escp2/inks/pro_ultrachrome.xml +++ b/src/xml/escp2/inks/pro_ultrachrome.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="pro_ultrachrome"> <InkList translate="text" name="ultraphoto" text="UltraChrome Photo Black"> diff --git a/src/xml/escp2/inks/pro_ultrachrome_k3.xml b/src/xml/escp2/inks/pro_ultrachrome_k3.xml index 74e76be..708cd43 100644 --- a/src/xml/escp2/inks/pro_ultrachrome_k3.xml +++ b/src/xml/escp2/inks/pro_ultrachrome_k3.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="pro_ultrachrome_k3"> <InkList translate="text" name="ultra3photo" text="Photo Black"> diff --git a/src/xml/escp2/inks/pro_ultrachrome_k34.xml b/src/xml/escp2/inks/pro_ultrachrome_k34.xml index 7077f4c..d14e899 100644 --- a/src/xml/escp2/inks/pro_ultrachrome_k34.xml +++ b/src/xml/escp2/inks/pro_ultrachrome_k34.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="pro_ultrachrome_k3"> <InkList translate="text" name="ultra3photo" text="Photo Black"> diff --git a/src/xml/escp2/inks/pro_ultrachrome_k3v.xml b/src/xml/escp2/inks/pro_ultrachrome_k3v.xml index 8a7f6a9..3f8168d 100644 --- a/src/xml/escp2/inks/pro_ultrachrome_k3v.xml +++ b/src/xml/escp2/inks/pro_ultrachrome_k3v.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="pro_ultrachrome_k3v"> <InkList translate="text" name="ultra3photo" text="Photo Black"> diff --git a/src/xml/escp2/inks/pro_ultrachrome_k3v10.xml b/src/xml/escp2/inks/pro_ultrachrome_k3v10.xml index 6677137..69fc258 100644 --- a/src/xml/escp2/inks/pro_ultrachrome_k3v10.xml +++ b/src/xml/escp2/inks/pro_ultrachrome_k3v10.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="pro_ultrachrome_k3v"> <InkList translate="text" name="ultra3photo" text="Photo Black"> diff --git a/src/xml/escp2/inks/pro_ultrachrome_k3v10a.xml b/src/xml/escp2/inks/pro_ultrachrome_k3v10a.xml index 990f8a0..51913c3 100644 --- a/src/xml/escp2/inks/pro_ultrachrome_k3v10a.xml +++ b/src/xml/escp2/inks/pro_ultrachrome_k3v10a.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="pro_ultrachrome_k3v10a"> <InkList translate="text" name="ultra3photo" text="Photo Black"> diff --git a/src/xml/escp2/inks/pro_ultrachrome_k3v10b.xml b/src/xml/escp2/inks/pro_ultrachrome_k3v10b.xml index f643cd4..499cd6a 100644 --- a/src/xml/escp2/inks/pro_ultrachrome_k3v10b.xml +++ b/src/xml/escp2/inks/pro_ultrachrome_k3v10b.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="pro_ultrachrome_k3v10b"> <InkList translate="text" name="ultra3photo" text="Photo Black"> diff --git a/src/xml/escp2/inks/pro_ultrachrome_k3v4.xml b/src/xml/escp2/inks/pro_ultrachrome_k3v4.xml index df84750..a9a0ec9 100644 --- a/src/xml/escp2/inks/pro_ultrachrome_k3v4.xml +++ b/src/xml/escp2/inks/pro_ultrachrome_k3v4.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="pro_ultrachrome_k3v4"> <InkList translate="text" name="ultra3photo" text="Photo Black"> diff --git a/src/xml/escp2/inks/standard.xml b/src/xml/escp2/inks/standard.xml index 9b13905..9c2005a 100644 --- a/src/xml/escp2/inks/standard.xml +++ b/src/xml/escp2/inks/standard.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="standard"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/standard_gen0.xml b/src/xml/escp2/inks/standard_gen0.xml index 5b7ee5d..43a41e0 100644 --- a/src/xml/escp2/inks/standard_gen0.xml +++ b/src/xml/escp2/inks/standard_gen0.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="standard_gen0"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/sx445.xml b/src/xml/escp2/inks/sx445.xml index 7abb32f..424d023 100644 --- a/src/xml/escp2/inks/sx445.xml +++ b/src/xml/escp2/inks/sx445.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="nx100"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/ultrachrome.xml b/src/xml/escp2/inks/ultrachrome.xml index 1c180cf..6068b4b 100644 --- a/src/xml/escp2/inks/ultrachrome.xml +++ b/src/xml/escp2/inks/ultrachrome.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="ultrachrome"> <InkList translate="text" name="ultraphoto" text="UltraChrome Photo Black"> diff --git a/src/xml/escp2/inks/wf40.xml b/src/xml/escp2/inks/wf40.xml index 177fdc9..804c1b9 100644 --- a/src/xml/escp2/inks/wf40.xml +++ b/src/xml/escp2/inks/wf40.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="wf40"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/wf500.xml b/src/xml/escp2/inks/wf500.xml index 073f632..f6bb29c 100644 --- a/src/xml/escp2/inks/wf500.xml +++ b/src/xml/escp2/inks/wf500.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="wf500"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/x80.xml b/src/xml/escp2/inks/x80.xml index 80ce8e8..2d4397a 100644 --- a/src/xml/escp2/inks/x80.xml +++ b/src/xml/escp2/inks/x80.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="x80"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inks/xp100.xml b/src/xml/escp2/inks/xp100.xml index 0c41f0f..2d802f8 100644 --- a/src/xml/escp2/inks/xp100.xml +++ b/src/xml/escp2/inks/xp100.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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-1287, USA. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InkGroup name="xp100"> <InkList translate="text" name="None" text="EPSON Standard Inks"> diff --git a/src/xml/escp2/inputslots/Makefile.am b/src/xml/escp2/inputslots/Makefile.am index 87fc177..3bba583 100644 --- a/src/xml/escp2/inputslots/Makefile.am +++ b/src/xml/escp2/inputslots/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. diff --git a/src/xml/escp2/inputslots/Makefile.in b/src/xml/escp2/inputslots/Makefile.in index e4db367..aac1cce 100644 --- a/src/xml/escp2/inputslots/Makefile.in +++ b/src/xml/escp2/inputslots/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,17 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -83,22 +93,21 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am subdir = src/xml/escp2/inputslots ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -152,6 +161,8 @@ am__uninstall_files_from_dir = { \ am__installdirs = "$(DESTDIR)$(pkgxmldatadir)" DATA = $(pkgxmldata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/scripts/global.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -162,6 +173,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -182,7 +195,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -199,6 +211,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -261,10 +274,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -288,7 +303,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -306,9 +320,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -376,7 +392,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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 pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/escp2/inputslots pkgxmldata_DATA = \ artisan.xml \ @@ -416,16 +431,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/xml/escp2/inputslots/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/xml/escp2/inputslots/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -469,7 +483,10 @@ ctags CTAGS: cscope cscopelist: -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -621,6 +638,8 @@ uninstall-am: uninstall-pkgxmldataDATA mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-pkgxmldataDATA +.PRECIOUS: Makefile + @SET_MAKE@ @@ -630,10 +649,6 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) diff --git a/src/xml/escp2/inputslots/artisan.xml b/src/xml/escp2/inputslots/artisan.xml index 4ce4872..dc32625 100644 --- a/src/xml/escp2/inputslots/artisan.xml +++ b/src/xml/escp2/inputslots/artisan.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="artisan"> diff --git a/src/xml/escp2/inputslots/b500.xml b/src/xml/escp2/inputslots/b500.xml index eacb4bd..4c763f2 100644 --- a/src/xml/escp2/inputslots/b500.xml +++ b/src/xml/escp2/inputslots/b500.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="b500"> diff --git a/src/xml/escp2/inputslots/cd.xml b/src/xml/escp2/inputslots/cd.xml index 6a69256..73cc9c2 100644 --- a/src/xml/escp2/inputslots/cd.xml +++ b/src/xml/escp2/inputslots/cd.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="cd"> diff --git a/src/xml/escp2/inputslots/cd_cutter_roll_feed.xml b/src/xml/escp2/inputslots/cd_cutter_roll_feed.xml index 57d8699..e8888db 100644 --- a/src/xml/escp2/inputslots/cd_cutter_roll_feed.xml +++ b/src/xml/escp2/inputslots/cd_cutter_roll_feed.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="cd_cutter_roll_feed"> diff --git a/src/xml/escp2/inputslots/cd_roll_feed.xml b/src/xml/escp2/inputslots/cd_roll_feed.xml index 7dd8cd0..1fd06a1 100644 --- a/src/xml/escp2/inputslots/cd_roll_feed.xml +++ b/src/xml/escp2/inputslots/cd_roll_feed.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="cd_roll_feed"> diff --git a/src/xml/escp2/inputslots/cutter_roll_feed.xml b/src/xml/escp2/inputslots/cutter_roll_feed.xml index 0e29b78..bdce978 100644 --- a/src/xml/escp2/inputslots/cutter_roll_feed.xml +++ b/src/xml/escp2/inputslots/cutter_roll_feed.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="cutter_roll_feed"> diff --git a/src/xml/escp2/inputslots/default-duplex.xml b/src/xml/escp2/inputslots/default-duplex.xml index 7f3acb3..cde5132 100644 --- a/src/xml/escp2/inputslots/default-duplex.xml +++ b/src/xml/escp2/inputslots/default-duplex.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="default-duplex"> <slot translate="text" name="Main" text="Main Input"> diff --git a/src/xml/escp2/inputslots/default.xml b/src/xml/escp2/inputslots/default.xml index 5070744..8471490 100644 --- a/src/xml/escp2/inputslots/default.xml +++ b/src/xml/escp2/inputslots/default.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="default"/> </gutenprint> diff --git a/src/xml/escp2/inputslots/pro3880.xml b/src/xml/escp2/inputslots/pro3880.xml index 7a06e69..a3051d9 100644 --- a/src/xml/escp2/inputslots/pro3880.xml +++ b/src/xml/escp2/inputslots/pro3880.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2InputSlots name="pro3880"> +<escp2InputSlots name="pro3880"> <slot translate="text" name="Standard" text="Standard"> <InitSequence>IR\002\000\000\003PP\003\000\000\001\000</InitSequence> diff --git a/src/xml/escp2/inputslots/pro_cutter_roll_feed.xml b/src/xml/escp2/inputslots/pro_cutter_roll_feed.xml index a617a25..1658936 100644 --- a/src/xml/escp2/inputslots/pro_cutter_roll_feed.xml +++ b/src/xml/escp2/inputslots/pro_cutter_roll_feed.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="pro_cutter_roll_feed"> diff --git a/src/xml/escp2/inputslots/pro_roll_feed.xml b/src/xml/escp2/inputslots/pro_roll_feed.xml index abaa4d0..9c46208 100644 --- a/src/xml/escp2/inputslots/pro_roll_feed.xml +++ b/src/xml/escp2/inputslots/pro_roll_feed.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="pro_roll_feed"> diff --git a/src/xml/escp2/inputslots/r1800.xml b/src/xml/escp2/inputslots/r1800.xml index a26b60c..147170b 100644 --- a/src/xml/escp2/inputslots/r1800.xml +++ b/src/xml/escp2/inputslots/r1800.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="r1800"> diff --git a/src/xml/escp2/inputslots/r2400.xml b/src/xml/escp2/inputslots/r2400.xml index 6630a09..ac4a92b 100644 --- a/src/xml/escp2/inputslots/r2400.xml +++ b/src/xml/escp2/inputslots/r2400.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="r2400"> diff --git a/src/xml/escp2/inputslots/r2880.xml b/src/xml/escp2/inputslots/r2880.xml index 181cc15..e26bd6e 100644 --- a/src/xml/escp2/inputslots/r2880.xml +++ b/src/xml/escp2/inputslots/r2880.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="r2400"> diff --git a/src/xml/escp2/inputslots/rx680.xml b/src/xml/escp2/inputslots/rx680.xml index a124f46..84f67bf 100644 --- a/src/xml/escp2/inputslots/rx680.xml +++ b/src/xml/escp2/inputslots/rx680.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="rx680"> diff --git a/src/xml/escp2/inputslots/rx700.xml b/src/xml/escp2/inputslots/rx700.xml index c9088d1..5718af7 100644 --- a/src/xml/escp2/inputslots/rx700.xml +++ b/src/xml/escp2/inputslots/rx700.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="rx700"> diff --git a/src/xml/escp2/inputslots/spro5000.xml b/src/xml/escp2/inputslots/spro5000.xml index 8ce630a..13cb5e7 100644 --- a/src/xml/escp2/inputslots/spro5000.xml +++ b/src/xml/escp2/inputslots/spro5000.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="spro5000"> diff --git a/src/xml/escp2/inputslots/standard_roll_feed.xml b/src/xml/escp2/inputslots/standard_roll_feed.xml index 0396de6..1422d39 100644 --- a/src/xml/escp2/inputslots/standard_roll_feed.xml +++ b/src/xml/escp2/inputslots/standard_roll_feed.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="standard_roll_feed"> diff --git a/src/xml/escp2/inputslots/wf7000.xml b/src/xml/escp2/inputslots/wf7000.xml index f2fa7c6..8dcb6d0 100644 --- a/src/xml/escp2/inputslots/wf7000.xml +++ b/src/xml/escp2/inputslots/wf7000.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2InputSlots name="wf7000"> @@ -29,7 +28,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <slot translate="text" name="tray2" text="Tray 2"> <Duplex><Tumble/></Duplex> - <InitSequence>PP\003\000\000\001\001</InitSequence> + <InitSequence>PP\003\000\000\001\002</InitSequence> </slot> </escp2InputSlots> </gutenprint> diff --git a/src/xml/escp2/media/Makefile.am b/src/xml/escp2/media/Makefile.am index c152ae8..26d5320 100644 --- a/src/xml/escp2/media/Makefile.am +++ b/src/xml/escp2/media/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. @@ -32,6 +31,7 @@ pkgxmldata_DATA = \ c80.xml \ c82.xml \ claria.xml \ + claria_xp.xml \ claria1400.xml \ cmy.xml \ cmykrb.xml \ diff --git a/src/xml/escp2/media/Makefile.in b/src/xml/escp2/media/Makefile.in index fbb0324..50a2828 100644 --- a/src/xml/escp2/media/Makefile.in +++ b/src/xml/escp2/media/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,17 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -83,22 +93,21 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am subdir = src/xml/escp2/media ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -152,6 +161,8 @@ am__uninstall_files_from_dir = { \ am__installdirs = "$(DESTDIR)$(pkgxmldatadir)" DATA = $(pkgxmldata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/scripts/global.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -162,6 +173,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -182,7 +195,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -199,6 +211,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -261,10 +274,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -288,7 +303,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -306,9 +320,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -376,7 +392,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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 pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/escp2/media pkgxmldata_DATA = \ artisan.xml \ @@ -386,6 +401,7 @@ pkgxmldata_DATA = \ c80.xml \ c82.xml \ claria.xml \ + claria_xp.xml \ claria1400.xml \ cmy.xml \ cmykrb.xml \ @@ -441,16 +457,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/xml/escp2/media/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/xml/escp2/media/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -494,7 +509,10 @@ ctags CTAGS: cscope cscopelist: -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -646,6 +664,8 @@ uninstall-am: uninstall-pkgxmldataDATA mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-pkgxmldataDATA +.PRECIOUS: Makefile + @SET_MAKE@ @@ -655,10 +675,6 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) diff --git a/src/xml/escp2/media/artisan.xml b/src/xml/escp2/media/artisan.xml index 8386e0b..6e567ee 100644 --- a/src/xml/escp2/media/artisan.xml +++ b/src/xml/escp2/media/artisan.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="claria"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/b500.xml b/src/xml/escp2/media/b500.xml index 01e6ded..014dceb 100644 --- a/src/xml/escp2/media/b500.xml +++ b/src/xml/escp2/media/b500.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="b500"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/c120.xml b/src/xml/escp2/media/c120.xml index bb3c450..cad2e79 100644 --- a/src/xml/escp2/media/c120.xml +++ b/src/xml/escp2/media/c120.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="c120"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/c64.xml b/src/xml/escp2/media/c64.xml index a26ac8c..7c94dbe 100644 --- a/src/xml/escp2/media/c64.xml +++ b/src/xml/escp2/media/c64.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="c64"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/c80.xml b/src/xml/escp2/media/c80.xml index 6dc4f22..0c926ab 100644 --- a/src/xml/escp2/media/c80.xml +++ b/src/xml/escp2/media/c80.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="c80"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/c82.xml b/src/xml/escp2/media/c82.xml index 8e0b560..a292e0f 100644 --- a/src/xml/escp2/media/c82.xml +++ b/src/xml/escp2/media/c82.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="c82"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/claria.xml b/src/xml/escp2/media/claria.xml index 7b14cf7..ce894f5 100644 --- a/src/xml/escp2/media/claria.xml +++ b/src/xml/escp2/media/claria.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="claria"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/claria1400.xml b/src/xml/escp2/media/claria1400.xml index 465fc7d..a9b36e5 100644 --- a/src/xml/escp2/media/claria1400.xml +++ b/src/xml/escp2/media/claria1400.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="claria"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/claria_xp.xml b/src/xml/escp2/media/claria_xp.xml new file mode 100644 index 0000000..32759b5 --- /dev/null +++ b/src/xml/escp2/media/claria_xp.xml @@ -0,0 +1,2420 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Papers name="claria"> +<feature name="PlatenGap"/> +<feature name="PaperMedia"/> +<feature name="PrintMethod"/> +<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.01 -0.03 -0.06 -0.1 -0.15 -0.2 -0.25 + -0.3 -0.35 -0.38 -0.4 -0.42 -0.46 -0.49 -0.52 + -0.55 -0.57 -0.57 -0.55 -0.52 -0.48 -0.4 -0.3 + -0.12 -0.07 -0.04 -0.02 0 0 0 0 + 0 0 0 0 -0.02 -0.04 -0.08 -0.13 + -0.18 -0.18 -0.19 -0.16 -0.13 -0.1 -0.07 -0.03 + </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.66 0.67 0.69 0.73 0.77 0.83 0.87 0.89 + 0.91 0.88 0.84 0.78 0.78 0.8 0.82 0.85 + 0.87 0.9 0.94 0.97 1 1 1 1 + 1 1 1 1 1 1 1 1 + 1 1 0.99 0.98 0.96 0.94 0.92 0.88 + 0.84 0.72 0.69 0.67 0.66 0.66 0.66 0.66 + </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.05 1.15 1.25 1.35 1.45 1.5 1.5 + 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 + 1.5 1.4 1.3 1.2 1.1 1 1 1 + 1 1 1 1 1 1 1 1 + 1 1.1 1.3 1.55 1.8 1.95 2 2 + 2 2 2 1.95 1.8 1.55 1.3 1.1 + </sequence> + </curve> + </namedParam> +</Curves> +<paper translate="text" name="Plain" text="Plain Paper" class="plain"> + <parameter type="integer" name="PaperMedia">0</parameter> + <parameter type="integer" name="PrintMethod">0x41</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x41</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="BrightWhite" text="Bright White Paper" class="plain"> + <parameter type="integer" name="PaperMedia">0</parameter> + <parameter type="integer" name="PrintMethod">0x41</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x41</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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"> + <parameter type="integer" name="PaperMedia">5</parameter> + <parameter type="integer" name="PrintMethod">0x41</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x41</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.692000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.692000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.692000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.692000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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"> + <parameter type="integer" name="PaperMedia">7</parameter> + <parameter type="integer" name="PrintMethod">0x41</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x41</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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"> + <parameter type="integer" name="PaperMedia">9</parameter> + <parameter type="integer" name="PrintMethod">0x41</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x41</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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"> + <parameter type="integer" name="PaperMedia">9</parameter> + <parameter type="integer" name="PrintMethod">0x41</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x40</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x50</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x50</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0x50</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0x50</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0x50</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0x50</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0x50</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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"> + <parameter type="integer" name="PaperMedia">10</parameter> + <parameter type="integer" name="PrintMethod">0x41</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x41</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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"> + <parameter type="integer" name="PaperMedia">5</parameter> + <parameter type="integer" name="PrintMethod">0x41</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x41</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.600000</parameter> + <parameter type="float" name="GCRLower">0.150000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.600000</parameter> + <parameter type="float" name="GCRLower">0.150000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.600000</parameter> + <parameter type="float" name="GCRLower">0.150000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.600000</parameter> + <parameter type="float" name="GCRLower">0.150000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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"> + <parameter type="integer" name="PaperMedia">5</parameter> + <parameter type="integer" name="PrintMethod">0x54</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x41</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="PresentationMatte" text="Premium Presentation Paper Matte" class="good"> + <parameter type="integer" name="PaperMedia">3</parameter> + <parameter type="integer" name="PrintMethod">0x54</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x41</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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"> + <parameter type="integer" name="PaperMedia">1</parameter> + <parameter type="integer" name="PrintMethod">0x41</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x41</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0x51</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.709000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.150000</parameter> + <parameter type="float" name="GCRUpper">0.750000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.709000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.150000</parameter> + <parameter type="float" name="GCRUpper">0.750000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.709000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.150000</parameter> + <parameter type="float" name="GCRUpper">0.750000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.709000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.150000</parameter> + <parameter type="float" name="GCRUpper">0.750000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="CD" text="CD or DVD" class="premium"> + <parameter type="integer" name="PaperMedia">91</parameter> + <parameter type="integer" name="PrintMethod">0xb1</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0xb1</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0xb1</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0xb1</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0xb1</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0xb1</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0xb1</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0xb1</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0xb1</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0xb1</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0xb1</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0xb1</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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"> + <parameter type="integer" name="PaperMedia">3</parameter> + <parameter type="integer" name="PrintMethod">0x54</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x41</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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"> + <parameter type="integer" name="PaperMedia">6</parameter> + <parameter type="integer" name="PrintMethod">0x54</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x42</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.667000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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"> + <parameter type="integer" name="PaperMedia">11</parameter> + <parameter type="integer" name="PrintMethod">0x54</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x42</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + <ink translate="text" name="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + <ink translate="text" name="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + <ink translate="text" name="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="UltraGlossyPhoto" text="Ultra Glossy Photo Paper" class="premium"> + <parameter type="integer" name="PaperMedia">38</parameter> + <parameter type="integer" name="PrintMethod">0x54</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x42</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + <ink translate="text" name="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + <ink translate="text" name="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + <ink translate="text" name="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="Semigloss" text="Premium Semigloss Photo Paper" class="premium"> + <parameter type="integer" name="PaperMedia">12</parameter> + <parameter type="integer" name="PrintMethod">0x54</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x42</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + <ink translate="text" name="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + <ink translate="text" name="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + <ink translate="text" name="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="Luster" text="Premium Luster Photo Paper" class="premium"> + <parameter type="integer" name="PaperMedia">13</parameter> + <parameter type="integer" name="PrintMethod">0x54</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x42</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + <ink translate="text" name="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + <ink translate="text" name="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + <ink translate="text" name="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> +</paper> + +<paper translate="text" name="UltraLuster" text="Ultra Premium Photo Paper Luster" class="premium"> + <parameter type="integer" name="PaperMedia">38</parameter> + <parameter type="integer" name="PrintMethod">0x54</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x42</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + <ink translate="text" name="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + <ink translate="text" name="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="hue_map"/> + <parameter type="curve" name="LumMap" ref="lum_map"/> + <parameter type="curve" name="SatMap" ref="sat_map"/> + </ink> + <ink translate="text" name="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.750000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.300000</parameter> + <parameter type="float" name="GCRLower">0.250000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="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="premium"> + <parameter type="integer" name="PaperMedia">19</parameter> + <parameter type="integer" name="PrintMethod">0x54</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x42</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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"> + <parameter type="integer" name="PaperMedia">5</parameter> + <parameter type="integer" name="PrintMethod">0x54</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x42</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.999000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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"> + <parameter type="integer" name="PaperMedia">23</parameter> + <parameter type="integer" name="PrintMethod">0x54</parameter> + + <resolution name="360x90sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360x180sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="360sw"> + <parameter type="integer" name="PrintMethod">0x10</parameter> + </resolution> + <resolution name="720x360sw"> + <parameter type="integer" name="PrintMethod">0x42</parameter> + </resolution> + <resolution name="720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x720sw"> + <parameter type="integer" name="PrintMethod">0x54</parameter> + </resolution> + <resolution name="1440x1440ov"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x1440sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="2880x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + <resolution name="5760x2880sw"> + <parameter type="integer" name="PrintMethod">0xb0</parameter> + </resolution> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.900000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.900000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.900000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.833000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.750000</parameter> + <parameter type="float" name="GCRLower">0.200000</parameter> + <parameter type="float" name="GCRUpper">0.900000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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"> + + <ink translate="text" name="None" text="EPSON Standard Inks"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="quadtone" text="Quadtone"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISQuadtone" text="MISQuadtone"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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="MISHextone" text="MIS Hextone"> + <parameter type="float" name="Density">0.540000</parameter> + <parameter type="float" name="SubchannelCutoff">0.250000</parameter> + <parameter type="float" name="BlackTrans">0.500000</parameter> + <parameter type="float" name="GCRLower">0.100000</parameter> + <parameter type="float" name="GCRUpper">0.500000</parameter> + <parameter type="float" name="CyanBalance">1.000000</parameter> + <parameter type="float" name="MagentaBalance">0.700000</parameter> + <parameter type="float" name="YellowBalance">0.700000</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/cmy.xml b/src/xml/escp2/media/cmy.xml index fe30094..cd2c008 100644 --- a/src/xml/escp2/media/cmy.xml +++ b/src/xml/escp2/media/cmy.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="cmy"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/cmykrb.xml b/src/xml/escp2/media/cmykrb.xml index 376b95e..b6372f9 100644 --- a/src/xml/escp2/media/cmykrb.xml +++ b/src/xml/escp2/media/cmykrb.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="cmykrb"> <feature name="PaperMedia"/> diff --git a/src/xml/escp2/media/cmykro.xml b/src/xml/escp2/media/cmykro.xml index 943ec7a..131ec91 100644 --- a/src/xml/escp2/media/cmykro.xml +++ b/src/xml/escp2/media/cmykro.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="cmykro"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/cx3650.xml b/src/xml/escp2/media/cx3650.xml index e87ee30..5ecf34f 100644 --- a/src/xml/escp2/media/cx3650.xml +++ b/src/xml/escp2/media/cx3650.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="cx3650"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/f360.xml b/src/xml/escp2/media/f360.xml index 4a5334d..0d0c364 100644 --- a/src/xml/escp2/media/f360.xml +++ b/src/xml/escp2/media/f360.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="f360"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/f360_photo.xml b/src/xml/escp2/media/f360_photo.xml index b1b13f9..547ef21 100644 --- a/src/xml/escp2/media/f360_photo.xml +++ b/src/xml/escp2/media/f360_photo.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="f360_photo"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/f360_photo7_japan.xml b/src/xml/escp2/media/f360_photo7_japan.xml index 19c4f9c..450e80d 100644 --- a/src/xml/escp2/media/f360_photo7_japan.xml +++ b/src/xml/escp2/media/f360_photo7_japan.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="f360_photo7_japan"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/f360_ultrachrome.xml b/src/xml/escp2/media/f360_ultrachrome.xml index 8249d00..2271b4e 100644 --- a/src/xml/escp2/media/f360_ultrachrome.xml +++ b/src/xml/escp2/media/f360_ultrachrome.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="f360_ultrachrome"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/f360_ultrachrome_k3.xml b/src/xml/escp2/media/f360_ultrachrome_k3.xml index c43628c..e92ebaa 100644 --- a/src/xml/escp2/media/f360_ultrachrome_k3.xml +++ b/src/xml/escp2/media/f360_ultrachrome_k3.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="f360_ultrachrome_k3"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/f360_ultrachrome_k3v.xml b/src/xml/escp2/media/f360_ultrachrome_k3v.xml index 9d91d34..c908567 100644 --- a/src/xml/escp2/media/f360_ultrachrome_k3v.xml +++ b/src/xml/escp2/media/f360_ultrachrome_k3v.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="f360_ultrachrome_k3v"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/nx100.xml b/src/xml/escp2/media/nx100.xml index b49dcda..45ee66a 100644 --- a/src/xml/escp2/media/nx100.xml +++ b/src/xml/escp2/media/nx100.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="c120"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/photo_gen0.xml b/src/xml/escp2/media/photo_gen0.xml index 4856cf1..1236be6 100644 --- a/src/xml/escp2/media/photo_gen0.xml +++ b/src/xml/escp2/media/photo_gen0.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="photo_gen0"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/photo_gen1.xml b/src/xml/escp2/media/photo_gen1.xml index 612f070..6960821 100644 --- a/src/xml/escp2/media/photo_gen1.xml +++ b/src/xml/escp2/media/photo_gen1.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="photo_gen1"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/photo_gen2.xml b/src/xml/escp2/media/photo_gen2.xml index 17b0851..fb217d8 100644 --- a/src/xml/escp2/media/photo_gen2.xml +++ b/src/xml/escp2/media/photo_gen2.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="photo_gen2"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/photo_gen3.xml b/src/xml/escp2/media/photo_gen3.xml index 6c41472..df5bc36 100644 --- a/src/xml/escp2/media/photo_gen3.xml +++ b/src/xml/escp2/media/photo_gen3.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="photo_gen3"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/photo_gen3_4.xml b/src/xml/escp2/media/photo_gen3_4.xml index c7af620..d92670e 100644 --- a/src/xml/escp2/media/photo_gen3_4.xml +++ b/src/xml/escp2/media/photo_gen3_4.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="photo_gen3_4"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/photo_gen4.xml b/src/xml/escp2/media/photo_gen4.xml index 97a11b8..a55df18 100644 --- a/src/xml/escp2/media/photo_gen4.xml +++ b/src/xml/escp2/media/photo_gen4.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="photo_gen4"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/photo_pigment.xml b/src/xml/escp2/media/photo_pigment.xml index 46d35ef..93e45a1 100644 --- a/src/xml/escp2/media/photo_pigment.xml +++ b/src/xml/escp2/media/photo_pigment.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="photo_pigment"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/picturemate_4.xml b/src/xml/escp2/media/picturemate_4.xml index d02ab66..1601b4f 100644 --- a/src/xml/escp2/media/picturemate_4.xml +++ b/src/xml/escp2/media/picturemate_4.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="picturemate_4"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/picturemate_6.xml b/src/xml/escp2/media/picturemate_6.xml index a5dcaf1..2c5401a 100644 --- a/src/xml/escp2/media/picturemate_6.xml +++ b/src/xml/escp2/media/picturemate_6.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="picturemate_6"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/pro3880_ultrachrome_k3v.xml b/src/xml/escp2/media/pro3880_ultrachrome_k3v.xml index 931558a..bff0505 100644 --- a/src/xml/escp2/media/pro3880_ultrachrome_k3v.xml +++ b/src/xml/escp2/media/pro3880_ultrachrome_k3v.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="pro3880_ultrachrome_k3v"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/pro_gen1.xml b/src/xml/escp2/media/pro_gen1.xml index 31dd712..1cff150 100644 --- a/src/xml/escp2/media/pro_gen1.xml +++ b/src/xml/escp2/media/pro_gen1.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="pro_gen1"> <feature name="PaperThickness"/> diff --git a/src/xml/escp2/media/pro_gen2.xml b/src/xml/escp2/media/pro_gen2.xml index 49f78d6..e2ad841 100644 --- a/src/xml/escp2/media/pro_gen2.xml +++ b/src/xml/escp2/media/pro_gen2.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="pro_gen2"> <feature name="PaperThickness"/> diff --git a/src/xml/escp2/media/pro_pigment.xml b/src/xml/escp2/media/pro_pigment.xml index 105a803..90f11b2 100644 --- a/src/xml/escp2/media/pro_pigment.xml +++ b/src/xml/escp2/media/pro_pigment.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="pro_pigment"> <feature name="PaperThickness"/> diff --git a/src/xml/escp2/media/pro_ultrachrome.xml b/src/xml/escp2/media/pro_ultrachrome.xml index 53283f6..843ce61 100644 --- a/src/xml/escp2/media/pro_ultrachrome.xml +++ b/src/xml/escp2/media/pro_ultrachrome.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="pro_ultrachrome"> <Curves> diff --git a/src/xml/escp2/media/pro_ultrachrome_k3.xml b/src/xml/escp2/media/pro_ultrachrome_k3.xml index b9c628d..8ff6fcf 100644 --- a/src/xml/escp2/media/pro_ultrachrome_k3.xml +++ b/src/xml/escp2/media/pro_ultrachrome_k3.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="pro_ultrachrome_k3"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/pro_ultrachrome_k3v.xml b/src/xml/escp2/media/pro_ultrachrome_k3v.xml index 1149102..7ea2723 100644 --- a/src/xml/escp2/media/pro_ultrachrome_k3v.xml +++ b/src/xml/escp2/media/pro_ultrachrome_k3v.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="pro_ultrachrome_k3v"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/pro_ultrachrome_k3v10.xml b/src/xml/escp2/media/pro_ultrachrome_k3v10.xml index 1149102..7ea2723 100644 --- a/src/xml/escp2/media/pro_ultrachrome_k3v10.xml +++ b/src/xml/escp2/media/pro_ultrachrome_k3v10.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="pro_ultrachrome_k3v"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/pro_ultrachrome_k3v10a.xml b/src/xml/escp2/media/pro_ultrachrome_k3v10a.xml index f8baa0e..f9e0ced 100644 --- a/src/xml/escp2/media/pro_ultrachrome_k3v10a.xml +++ b/src/xml/escp2/media/pro_ultrachrome_k3v10a.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="pro_ultrachrome_k3v10a"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/pro_ultrachrome_k3v10b.xml b/src/xml/escp2/media/pro_ultrachrome_k3v10b.xml index 14df009..9220def 100644 --- a/src/xml/escp2/media/pro_ultrachrome_k3v10b.xml +++ b/src/xml/escp2/media/pro_ultrachrome_k3v10b.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="pro_ultrachrome_k3v10b"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/r800.xml b/src/xml/escp2/media/r800.xml index 52869e7..ab5f9ca 100644 --- a/src/xml/escp2/media/r800.xml +++ b/src/xml/escp2/media/r800.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="r800"> <Curves> diff --git a/src/xml/escp2/media/standard.xml b/src/xml/escp2/media/standard.xml index c8dfce9..0b615c2 100644 --- a/src/xml/escp2/media/standard.xml +++ b/src/xml/escp2/media/standard.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="standard"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/standard_gen0.xml b/src/xml/escp2/media/standard_gen0.xml index 3c10ef9..d615e5c 100644 --- a/src/xml/escp2/media/standard_gen0.xml +++ b/src/xml/escp2/media/standard_gen0.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="standard_gen0"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/ultrachrome.xml b/src/xml/escp2/media/ultrachrome.xml index 7e844ec..94fb33f 100644 --- a/src/xml/escp2/media/ultrachrome.xml +++ b/src/xml/escp2/media/ultrachrome.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="ultrachrome"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/media/wf500.xml b/src/xml/escp2/media/wf500.xml index fdf8a00..1ca1550 100644 --- a/src/xml/escp2/media/wf500.xml +++ b/src/xml/escp2/media/wf500.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="c120"> <feature name="PlatenGap"/> diff --git a/src/xml/escp2/media/x80.xml b/src/xml/escp2/media/x80.xml index fe28a20..4de1131 100644 --- a/src/xml/escp2/media/x80.xml +++ b/src/xml/escp2/media/x80.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2Papers name="x80"> <feature name="FeedSequence"/> diff --git a/src/xml/escp2/mediasizes/Makefile.am b/src/xml/escp2/mediasizes/Makefile.am index 04fc891..31eafe8 100644 --- a/src/xml/escp2/mediasizes/Makefile.am +++ b/src/xml/escp2/mediasizes/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. diff --git a/src/xml/escp2/mediasizes/Makefile.in b/src/xml/escp2/mediasizes/Makefile.in index 2818b4b..bea766a 100644 --- a/src/xml/escp2/mediasizes/Makefile.in +++ b/src/xml/escp2/mediasizes/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,17 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -83,22 +93,21 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am subdir = src/xml/escp2/mediasizes ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -152,6 +161,8 @@ am__uninstall_files_from_dir = { \ am__installdirs = "$(DESTDIR)$(pkgxmldatadir)" DATA = $(pkgxmldata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/scripts/global.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -162,6 +173,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -182,7 +195,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -199,6 +211,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -261,10 +274,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -288,7 +303,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -306,9 +320,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -376,7 +392,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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 pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/escp2/mediasizes pkgxmldata_DATA = \ standard.xml @@ -398,16 +413,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/xml/escp2/mediasizes/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/xml/escp2/mediasizes/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -451,7 +465,10 @@ ctags CTAGS: cscope cscopelist: -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -603,6 +620,8 @@ uninstall-am: uninstall-pkgxmldataDATA mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-pkgxmldataDATA +.PRECIOUS: Makefile + @SET_MAKE@ @@ -612,10 +631,6 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) diff --git a/src/xml/escp2/mediasizes/standard.xml b/src/xml/escp2/mediasizes/standard.xml index 630ae66..2280db8 100644 --- a/src/xml/escp2/mediasizes/standard.xml +++ b/src/xml/escp2/mediasizes/standard.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2MediaSizes name="default"> <MediaSize type="sheet" name="A4"> diff --git a/src/xml/escp2/model/Makefile.am b/src/xml/escp2/model/Makefile.am index b705d12..03a64df 100644 --- a/src/xml/escp2/model/Makefile.am +++ b/src/xml/escp2/model/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. @@ -20,10 +19,18 @@ include $(top_srcdir)/scripts/global.mk +SUBDIRS = \ + base + +STAMPS= \ + base/xml-stamp + ## Variables pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/escp2/model +# rlk 20171111: models 19, 33, 59, 111 are unused. + pkgxmldata_DATA = \ model_0.xml \ model_1.xml \ @@ -44,7 +51,6 @@ pkgxmldata_DATA = \ model_16.xml \ model_17.xml \ model_18.xml \ - model_19.xml \ model_20.xml \ model_21.xml \ model_22.xml \ @@ -58,7 +64,6 @@ pkgxmldata_DATA = \ model_30.xml \ model_31.xml \ model_32.xml \ - model_33.xml \ model_34.xml \ model_35.xml \ model_36.xml \ @@ -84,7 +89,6 @@ pkgxmldata_DATA = \ model_56.xml \ model_57.xml \ model_58.xml \ - model_59.xml \ model_60.xml \ model_61.xml \ model_62.xml \ @@ -136,7 +140,6 @@ pkgxmldata_DATA = \ model_108.xml \ model_109.xml \ model_110.xml \ - model_111.xml \ model_112.xml \ model_113.xml \ model_114.xml \ @@ -156,11 +159,15 @@ pkgxmldata_DATA = \ model_128.xml \ model_129.xml \ model_130.xml \ - model_131.xml + model_131.xml \ + model_132.xml -xml-stamp: $(pkgxmldata_DATA) Makefile.am +xml-stamp: $(pkgxmldata_DATA) $(STAMPS) Makefile.am -rm -f $@ $@.tmp touch $@.tmp + for dir in $(SUBDIRS) ; do \ + sed "s;^;$$dir/;" $${dir}/xml-stamp >> $@.tmp ; \ + done for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done mv $@.tmp $@ diff --git a/src/xml/escp2/model/Makefile.in b/src/xml/escp2/model/Makefile.in index 0d8b15f..a919cbb 100644 --- a/src/xml/escp2/model/Makefile.in +++ b/src/xml/escp2/model/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,17 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -83,22 +93,21 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am subdir = src/xml/escp2/model ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -117,6 +126,14 @@ am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = +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;; \ @@ -151,8 +168,62 @@ am__uninstall_files_from_dir = { \ } 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_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir distdir-am 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) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/scripts/global.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ @@ -162,6 +233,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -182,7 +255,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -199,6 +271,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -261,10 +334,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -288,7 +363,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -306,9 +380,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -376,8 +452,15 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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 +SUBDIRS = \ + base + +STAMPS = \ + base/xml-stamp + pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/escp2/model + +# rlk 20171111: models 19, 33, 59, 111 are unused. pkgxmldata_DATA = \ model_0.xml \ model_1.xml \ @@ -398,7 +481,6 @@ pkgxmldata_DATA = \ model_16.xml \ model_17.xml \ model_18.xml \ - model_19.xml \ model_20.xml \ model_21.xml \ model_22.xml \ @@ -412,7 +494,6 @@ pkgxmldata_DATA = \ model_30.xml \ model_31.xml \ model_32.xml \ - model_33.xml \ model_34.xml \ model_35.xml \ model_36.xml \ @@ -438,7 +519,6 @@ pkgxmldata_DATA = \ model_56.xml \ model_57.xml \ model_58.xml \ - model_59.xml \ model_60.xml \ model_61.xml \ model_62.xml \ @@ -490,7 +570,6 @@ pkgxmldata_DATA = \ model_108.xml \ model_109.xml \ model_110.xml \ - model_111.xml \ model_112.xml \ model_113.xml \ model_114.xml \ @@ -510,11 +589,12 @@ pkgxmldata_DATA = \ model_128.xml \ model_129.xml \ model_130.xml \ - model_131.xml + model_131.xml \ + model_132.xml CLEANFILES = xmli18n-tmp.h xml-stamp xml-stamp.tmp EXTRA_DIST = $(pkgxmldata_DATA) -all: all-am +all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/scripts/global.mk $(am__configure_deps) @@ -529,16 +609,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/xml/escp2/model/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/xml/escp2/model/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -575,14 +654,110 @@ uninstall-pkgxmldataDATA: @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgxmldatadir)'; $(am__uninstall_files_from_dir) -tags TAGS: -ctags CTAGS: +# 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. +$(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//`; \ + 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; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + 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-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 + +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 -cscope cscopelist: +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am -distdir: $(DISTFILES) +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -612,25 +787,51 @@ distdir: $(DISTFILES) || 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; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am -check: check-am +check: check-recursive all-am: Makefile $(DATA) all-local -installdirs: +installdirs: installdirs-recursive +installdirs-am: for dir in "$(DESTDIR)$(pkgxmldatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -installcheck: installcheck-am +installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ @@ -653,86 +854,89 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -clean: clean-am +clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am -distclean: distclean-am +distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic +distclean-am: clean-am distclean-generic distclean-tags -dvi: dvi-am +dvi: dvi-recursive dvi-am: -html: html-am +html: html-recursive html-am: -info: info-am +info: info-recursive info-am: install-data-am: install-pkgxmldataDATA -install-dvi: install-dvi-am +install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: -install-html: install-html-am +install-html: install-html-recursive install-html-am: -install-info: install-info-am +install-info: install-info-recursive install-info-am: install-man: -install-pdf: install-pdf-am +install-pdf: install-pdf-recursive install-pdf-am: -install-ps: install-ps-am +install-ps: install-ps-recursive install-ps-am: installcheck-am: -maintainer-clean: maintainer-clean-am +maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic -mostlyclean: mostlyclean-am +mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool -pdf: pdf-am +pdf: pdf-recursive pdf-am: -ps: ps-am +ps: ps-recursive ps-am: uninstall-am: uninstall-pkgxmldataDATA -.MAKE: install-am install-strip +.MAKE: $(am__recursive_targets) install-am install-strip -.PHONY: all all-am all-local check check-am clean clean-generic \ - clean-libtool cscopelist-am ctags-am dist-hook distclean \ - distclean-generic distclean-libtool distdir dvi dvi-am html \ +.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-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 + 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 uninstall-pkgxmldataDATA + +.PRECIOUS: Makefile @SET_MAKE@ @@ -743,17 +947,16 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) -xml-stamp: $(pkgxmldata_DATA) Makefile.am +xml-stamp: $(pkgxmldata_DATA) $(STAMPS) Makefile.am -rm -f $@ $@.tmp touch $@.tmp + for dir in $(SUBDIRS) ; do \ + sed "s;^;$$dir/;" $${dir}/xml-stamp >> $@.tmp ; \ + done for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done mv $@.tmp $@ diff --git a/src/xml/escp2/model/base/Makefile.am b/src/xml/escp2/model/base/Makefile.am new file mode 100644 index 0000000..2168906 --- /dev/null +++ b/src/xml/escp2/model/base/Makefile.am @@ -0,0 +1,76 @@ +## Copyright (C) 2008 Robert Krawitz +## +## 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, 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, see <https://www.gnu.org/licenses/>. + +## Process this file with automake to produce Makefile.in. + +@SET_MAKE@ + +include $(top_srcdir)/scripts/global.mk + +## Variables + +pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/escp2/model/base + +pkgxmldata_DATA = \ + baseline_300.xml \ + baseline_360.xml \ + bx.xml \ + c1xx.xml \ + c2x.xml \ + c4x.xml \ + c7xx.xml \ + c8x_base.xml \ + c8x.xml \ + cpro.xml \ + photo2.xml \ + picmate.xml \ + pro_ultrachrome_k3.xml \ + pro_ultrachrome_k3_base.xml \ + pro_ultrachrome_k3_cutter.xml \ + pro_ultrachrome_k3v.xml \ + pro_ultrachrome_k3v10.xml \ + pro_ultrachrome_k3v10_base.xml \ + pro_ultrachrome_k3v10a.xml \ + pro_ultrachrome_k3v10b.xml \ + pro_x000.xml \ + pro_x500.xml \ + pro_x600.xml \ + pro_x700.xml \ + pro_x800.xml \ + pro_x880.xml \ + r200.xml \ + r240.xml \ + r800.xml \ + sc800.xml \ + sp700.xml \ + sp750.xml \ + sp950.xml \ + wf7xxx.xml + +xml-stamp: $(pkgxmldata_DATA) $(STAMPS) Makefile.am + -rm -f $@ $@.tmp + touch $@.tmp + for dir in $(SUBDIRS) ; do \ + sed "s;^;$$dir/;" $${dir}/xml-stamp >> $@.tmp ; \ + done + for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done + mv $@.tmp $@ + +all-local: xml-stamp + +dist-hook: xml-stamp +CLEANFILES = xmli18n-tmp.h xml-stamp xml-stamp.tmp + +EXTRA_DIST = $(pkgxmldata_DATA) diff --git a/src/xml/escp2/model/base/Makefile.in b/src/xml/escp2/model/base/Makefile.in new file mode 100644 index 0000000..f596300 --- /dev/null +++ b/src/xml/escp2/model/base/Makefile.in @@ -0,0 +1,686 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Variables + +#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 = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/xml/escp2/model/base +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +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/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +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) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/scripts/global.mk +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@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ +BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ +BZIP2 = @BZIP2@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMPRESS = @COMPRESS@ +CONVERT = @CONVERT@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSUF = @CSUF@ +CUPS_CFLAGS = @CUPS_CFLAGS@ +CUPS_CONFIG = @CUPS_CONFIG@ +CUPS_LIBS = @CUPS_LIBS@ +CUPS_PPD_PS_LEVEL = @CUPS_PPD_PS_LEVEL@ +CYGPATH_W = @CYGPATH_W@ +DB2HTML = @DB2HTML@ +DB2PDF = @DB2PDF@ +DB2PS = @DB2PS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOXYGEN = @DOXYGEN@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +DVIPDF = @DVIPDF@ +DVIPS = @DVIPS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FIND = @FIND@ +GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GIMP2_CFLAGS = @GIMP2_CFLAGS@ +GIMP2_LIBS = @GIMP2_LIBS@ +GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNUCFLAGS = @GNUCFLAGS@ +GREP = @GREP@ +GTK2_CFLAGS = @GTK2_CFLAGS@ +GTK2_LIBS = @GTK2_LIBS@ +GUTENPRINTUI2_BINARY_AGE = @GUTENPRINTUI2_BINARY_AGE@ +GUTENPRINTUI2_CFLAGS = @GUTENPRINTUI2_CFLAGS@ +GUTENPRINTUI2_CURRENT_INTERFACE = @GUTENPRINTUI2_CURRENT_INTERFACE@ +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@ +GUTENPRINT_INTERFACE_AGE = @GUTENPRINT_INTERFACE_AGE@ +GUTENPRINT_LIBDEPS = @GUTENPRINT_LIBDEPS@ + +# Libraries +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@ +GZIP = @GZIP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ +LIBS = $(INTLLIBS) @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_BACKEND_LIBDEPS = @LIBUSB_BACKEND_LIBDEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LRZIP = @LRZIP@ +LTALLOCA = @LTALLOCA@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKGROOT = @PKGROOT@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +RELEASE_DATE = @RELEASE_DATE@ +RM = @RM@ +RZIP = @RZIP@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TEST = @TEST@ +TEXI2HTML = @TEXI2HTML@ +TRUE = @TRUE@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WHICH_PPDS = @WHICH_PPDS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XZ = @XZ@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +cups_bindir = @cups_bindir@ +cups_conf_datadir = @cups_conf_datadir@ +cups_conf_serverbin = @cups_conf_serverbin@ +cups_conf_serverroot = @cups_conf_serverroot@ +cups_exec_prefix = @cups_exec_prefix@ +cups_prefix = @cups_prefix@ +cups_sbindir = @cups_sbindir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gimp2_plug_indir = @gimp2_plug_indir@ +gutenprint_cflags = @gutenprint_cflags@ +gutenprint_libdeps = @gutenprint_libdeps@ +gutenprint_libs = @gutenprint_libs@ +gutenprintui2_cflags = @gutenprintui2_cflags@ +gutenprintui2_libdeps = @gutenprintui2_libdeps@ +gutenprintui2_libs = @gutenprintui2_libs@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(LOCAL_CPPFLAGS) $(GNUCFLAGS) +pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/escp2/model/base +pkgxmldata_DATA = \ + baseline_300.xml \ + baseline_360.xml \ + bx.xml \ + c1xx.xml \ + c2x.xml \ + c4x.xml \ + c7xx.xml \ + c8x_base.xml \ + c8x.xml \ + cpro.xml \ + photo2.xml \ + picmate.xml \ + pro_ultrachrome_k3.xml \ + pro_ultrachrome_k3_base.xml \ + pro_ultrachrome_k3_cutter.xml \ + pro_ultrachrome_k3v.xml \ + pro_ultrachrome_k3v10.xml \ + pro_ultrachrome_k3v10_base.xml \ + pro_ultrachrome_k3v10a.xml \ + pro_ultrachrome_k3v10b.xml \ + pro_x000.xml \ + pro_x500.xml \ + pro_x600.xml \ + pro_x700.xml \ + pro_x800.xml \ + pro_x880.xml \ + r200.xml \ + r240.xml \ + r800.xml \ + sc800.xml \ + sp700.xml \ + sp750.xml \ + sp950.xml \ + wf7xxx.xml + +CLEANFILES = xmli18n-tmp.h xml-stamp xml-stamp.tmp +EXTRA_DIST = $(pkgxmldata_DATA) +all: all-am + +.SUFFIXES: +$(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 \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/xml/escp2/model/base/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/xml/escp2/model/base/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; +$(top_srcdir)/scripts/global.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgxmldataDATA: $(pkgxmldata_DATA) + @$(NORMAL_INSTALL) + @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"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgxmldatadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgxmldatadir)" || exit $$?; \ + done + +uninstall-pkgxmldataDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgxmldatadir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: check-am +all-am: Makefile $(DATA) all-local +installdirs: + for dir in "$(DESTDIR)$(pkgxmldatadir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + 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: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgxmldataDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgxmldataDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am all-local check check-am clean clean-generic \ + 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 + +.PRECIOUS: Makefile + + +@SET_MAKE@ + +# Rules + +$(top_builddir)/src/main/libgutenprint.la: + cd $(top_builddir)/src/main; \ + $(MAKE) + +$(top_builddir)/src/gutenprintui2/libgutenprintui2.la: + cd $(top_builddir)/src/gutenprintui2; \ + $(MAKE) + +xml-stamp: $(pkgxmldata_DATA) $(STAMPS) Makefile.am + -rm -f $@ $@.tmp + touch $@.tmp + for dir in $(SUBDIRS) ; do \ + sed "s;^;$$dir/;" $${dir}/xml-stamp >> $@.tmp ; \ + done + for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done + mv $@.tmp $@ + +all-local: xml-stamp + +dist-hook: xml-stamp + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/xml/escp2/model/base/baseline_300.xml b/src/xml/escp2/model/base/baseline_300.xml new file mode 100644 index 0000000..f67bdc1 --- /dev/null +++ b/src/xml/escp2/model/base/baseline_300.xml @@ -0,0 +1,25 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="baseline_300"> + <baseSeparation>300</baseSeparation> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/baseline_360.xml b/src/xml/escp2/model/base/baseline_360.xml new file mode 100644 index 0000000..3716ff9 --- /dev/null +++ b/src/xml/escp2/model/base/baseline_360.xml @@ -0,0 +1,25 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="baseline_360"> + <baseSeparation>360</baseSeparation > +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/bx.xml b/src/xml/escp2/model/base/bx.xml new file mode 100644 index 0000000..cfc94dd --- /dev/null +++ b/src/xml/escp2/model/base/bx.xml @@ -0,0 +1,84 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model id="92" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/c120.xml"/> + <qualityPresets src="escp2/qualitypresets/wf40.xml"/> + <inkGroup src="escp2/inks/wf40.xml"/> + <mediaSizes src="escp2/mediasizes/standard.xml"/> + <resolutions src="escp2/resolutions/wf6xx.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> + <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> + <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> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/c1xx.xml b/src/xml/escp2/model/base/c1xx.xml new file mode 100644 index 0000000..adcf467 --- /dev/null +++ b/src/xml/escp2/model/base/c1xx.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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="c1xx" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/c120.xml"/> + <inputSlots src="escp2/inputslots/default.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <inkGroup src="escp2/inks/c120.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>59</Nozzles> + <MinNozzles>60</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>2</NozzleSeparation> + </headConfiguration> + <headConfiguration type="black"> + <Nozzles>358</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>1</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <headConfiguration type="fast"> + <Nozzles>358</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>1</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <physicalChannels>4</physicalChannels> + <resolutionScale>14400</resolutionScale> + <minimumResolution>360 180</minimumResolution> + <maximumResolution>5760 2880</maximumResolution> + <extraVerticalFeed>10</extraVerticalFeed> + <separationRows>1</separationRows> + <zeroMarginOffset>80</zeroMarginOffset> + <microLeftMargin>42</microLeftMargin> + <initialVerticalOffset>-240</initialVerticalOffset> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>16588800</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <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> + <AlignmentChoices>4 15 0 0</AlignmentChoices> + <ChannelNames> + <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"> + <physicalResolution>360 180</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.120000</parameter> + <parameter type="float" name="DropSize2">0.300000</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.120000</parameter> + <parameter type="float" name="DropSize2">0.300000</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.120000</parameter> + <parameter type="float" name="DropSize2">0.300000</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.120000</parameter> + <parameter type="float" name="DropSize2">0.300000</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.512000</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.256000</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.128000</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="5760x1440sw" text="5760 x 1440 DPI"> + <physicalResolution>5760 1440</physicalResolution> + <parameter type="float" name="escp2_density">0.128000</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="2880x2880sw" text="2880 x 2880 DPI"> + <physicalResolution>2880 2880</physicalResolution> + <parameter type="float" name="escp2_density">0.128000</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="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">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/base/c2x.xml b/src/xml/escp2/model/base/c2x.xml new file mode 100644 index 0000000..15152a5 --- /dev/null +++ b/src/xml/escp2/model/base/c2x.xml @@ -0,0 +1,80 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="c2x" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/x80.xml"/> + <inputSlots src="escp2/inputslots/default.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <inkGroup src="escp2/inks/x80.xml"/> + <resolutions src="escp2/resolutions/sc480.xml"/> + <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> + <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> + <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> + <commandSet>2000</commandSet> + <borderless>No</borderless> + <supportsVariableDropsizes/> + <hasFastGraymode/> + <sendZeroAdvance/> + <supportsInkChange/> + <supportsD4Mode/> + <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>15</Nozzles> + <MinNozzles>15</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>3</NozzleSeparation> + </headConfiguration> + <headConfiguration type="black"> + <Nozzles>48</Nozzles> + <MinNozzles>48</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>3</NozzleSeparation> + </headConfiguration> + <headConfiguration type="fast"> + <Nozzles>48</Nozzles> + <MinNozzles>48</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>3</NozzleSeparation> + </headConfiguration> + <physicalChannels>4</physicalChannels> + <resolutionScale>14400</resolutionScale> + <minimumResolution>90 90</minimumResolution> + <maximumResolution>720 720</maximumResolution> + <separationRows>1</separationRows> + <initialVerticalOffset>-99</initialVerticalOffset> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <maximumMediaSize>684 86400</maximumMediaSize> + <maximumImageableArea>612 86400</maximumImageableArea> + <margins interleave="soft" 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> + <AlignmentChoices>3 15 0 0</AlignmentChoices> + <ChannelNames> + <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> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/model_59.xml b/src/xml/escp2/model/base/c4x.xml index a395c3d..22169e1 100644 --- a/src/xml/escp2/model/model_59.xml +++ b/src/xml/escp2/model/base/c4x.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="59"> +<escp2Model name="c4x" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/x80.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -55,10 +54,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>90 90</minimumResolution> - <maximumResolution>2880 720</maximumResolution> + <maximumResolution>1440 720</maximumResolution> <separationRows>1</separationRows> <initialVerticalOffset>-99</initialVerticalOffset> <minHorizontalAlignment>1</minHorizontalAlignment> @@ -81,8 +79,8 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> <physicalResolution>360 120</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="float" name="escp2_density">2.800000</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.325000</parameter> @@ -91,8 +89,8 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </resolution> <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> <physicalResolution>360 240</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="float" name="escp2_density">2.800000</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.325000</parameter> @@ -101,8 +99,8 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </resolution> <resolution translate="text" name="360sw" text="360 DPI"> <physicalResolution>360 360</physicalResolution> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="float" name="escp2_density">1.400000</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.325000</parameter> @@ -111,8 +109,8 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </resolution> <resolution translate="text" name="720x360sw" text="720 x 360 DPI"> <physicalResolution>720 360</physicalResolution> - <parameter type="float" name="escp2_density">0.650000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="float" name="escp2_density">0.700000</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.325000</parameter> @@ -121,8 +119,8 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </resolution> <resolution translate="text" name="720sw" text="720 DPI"> <physicalResolution>720 720</physicalResolution> - <parameter type="float" name="escp2_density">0.568000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="float" name="escp2_density">0.710000</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.325000</parameter> @@ -132,8 +130,8 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <resolution translate="text" name="720hq" text="720 DPI High Quality"> <physicalResolution>720 720</physicalResolution> <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.568000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="float" name="escp2_density">0.710000</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.325000</parameter> @@ -142,22 +140,24 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. </resolution> <resolution translate="text" name="1440x720sw" text="1440 x 720 DPI"> <physicalResolution>1440 720</physicalResolution> - <parameter type="float" name="escp2_density">0.523000</parameter> + <parameter type="float" name="escp2_density">0.355000</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.650000</parameter> - <parameter type="float" name="DropSize2">1.000000</parameter> + <parameter type="float" name="DropSize1">0.325000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> </resolution> <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> <physicalResolution>1440 720</physicalResolution> <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.523000</parameter> + <parameter type="float" name="escp2_density">0.355000</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.650000</parameter> - <parameter type="float" name="DropSize2">1.000000</parameter> + <parameter type="float" name="DropSize1">0.325000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> </resolution> </resolutions> </escp2Model> diff --git a/src/xml/escp2/model/base/c7xx.xml b/src/xml/escp2/model/base/c7xx.xml new file mode 100644 index 0000000..a6b66aa --- /dev/null +++ b/src/xml/escp2/model/base/c7xx.xml @@ -0,0 +1,73 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="c7xx" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/standard.xml"/> + <inputSlots src="escp2/inputslots/default.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <inkGroup src="escp2/inks/standard.xml"/> + <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> + <commandSet>1999</commandSet> + <borderless>No</borderless> + <supportsVariableDropsizes/> + <hasFastGraymode/> + <sendZeroAdvance/> + <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>48</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>3</NozzleSeparation> + </headConfiguration> + <headConfiguration type="black"> + <Nozzles>144</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <headConfiguration type="fast"> + <Nozzles>144</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <physicalChannels>4</physicalChannels> + <resolutionScale>14400</resolutionScale> + <minimumResolution>90 90</minimumResolution> + <maximumResolution>1440 720</maximumResolution> + <separationRows>1</separationRows> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <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> + <AlignmentChoices>3 15 0 0</AlignmentChoices> + <ChannelNames> + <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> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/c8x.xml b/src/xml/escp2/model/base/c8x.xml new file mode 100644 index 0000000..8ec51dc --- /dev/null +++ b/src/xml/escp2/model/base/c8x.xml @@ -0,0 +1,26 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="c8x" base="escp2/model/base/c8x_base.xml"> + <media src="escp2/media/c82.xml"/> + <inkGroup src="escp2/inks/c82.xml"/> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/c8x_base.xml b/src/xml/escp2/model/base/c8x_base.xml new file mode 100644 index 0000000..c6258ed --- /dev/null +++ b/src/xml/escp2/model/base/c8x_base.xml @@ -0,0 +1,67 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="c8x_base" base="escp2/model/base/baseline_360.xml"> + <inputSlots src="escp2/inputslots/default.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <resolutions src="escp2/resolutions/c8x.xml"/> + <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> + <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> + <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> + <commandSet>2000</commandSet> + <supportsVariableDropsizes/> + <hasFastGraymode/> + <sendZeroAdvance/> + <supportsD4Mode/> + <preferredEnvelopeOrientation>Portrait</preferredEnvelopeOrientation> + <headConfiguration type="black"> + <Nozzles>180</Nozzles> + <MinNozzles>180</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>2</NozzleSeparation> + </headConfiguration> + <headConfiguration type="fast"> + <Nozzles>180</Nozzles> + <MinNozzles>180</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>2</NozzleSeparation> + </headConfiguration> + <physicalChannels>4</physicalChannels> + <resolutionScale>14400</resolutionScale> + <minimumResolution>360 180</minimumResolution> + <separationRows>1</separationRows> + <initialVerticalOffset>-240</initialVerticalOffset> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <minimumMediaSize>144 144</minimumMediaSize> + <maximumMediaSize>612 86400</maximumMediaSize> + <maximumImageableArea>612 86400</maximumImageableArea> + <margins interleave="soft" media="roll">9 9 0 0</margins> + <margins interleave="printer" media="roll">9 9 0 0</margins> + <AlignmentChoices>4 15 0 0</AlignmentChoices> + <ChannelNames> + <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> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/cpro.xml b/src/xml/escp2/model/base/cpro.xml new file mode 100644 index 0000000..fc015cc --- /dev/null +++ b/src/xml/escp2/model/base/cpro.xml @@ -0,0 +1,58 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="cpro" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/standard_gen0.xml"/> + <inputSlots src="escp2/inputslots/default.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <inkGroup src="escp2/inks/standard_gen0.xml"/> + <resolutions src="escp2/resolutions/escp2-i.xml"/> + <commandSet>1998</commandSet> + <borderless>No</borderless> + <sendZeroAdvance/> + <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>16</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>4</NozzleSeparation> + </headConfiguration> + <physicalChannels>4</physicalChannels> + <minimumResolution>90 90</minimumResolution> + <maximumResolution>720 720</maximumResolution> + <separationRows>1</separationRows> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <margins interleave="soft" media="sheet">9 9 9 40</margins> + <margins interleave="printer" media="sheet">9 9 9 40</margins> + <margins interleave="soft" media="roll">9 9 0 0</margins> + <margins interleave="printer" media="roll">9 9 0 0</margins> + <AlignmentChoices>1 7 0 0</AlignmentChoices> + <ChannelNames> + <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> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/photo2.xml b/src/xml/escp2/model/base/photo2.xml new file mode 100644 index 0000000..4d5eaf7 --- /dev/null +++ b/src/xml/escp2/model/base/photo2.xml @@ -0,0 +1,65 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="photo2" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/photo_gen2.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <inkGroup src="escp2/inks/photo_gen2.xml"/> + <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> + <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> + <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> + <commandSet>2000</commandSet> + <borderless>Yes</borderless> + <supportsVariableDropsizes/> + <sendZeroAdvance/> + <supportsD4Mode/> + <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>48</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>3</NozzleSeparation> + </headConfiguration> + <physicalChannels>6</physicalChannels> + <resolutionScale>14400</resolutionScale> + <minimumResolution>90 90</minimumResolution> + <separationRows>1</separationRows> + <zeroMarginOffset>80</zeroMarginOffset> + <microLeftMargin>42</microLeftMargin> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <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> + <AlignmentChoices>3 15 0 0</AlignmentChoices> + <ChannelNames> + <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> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/picmate.xml b/src/xml/escp2/model/base/picmate.xml new file mode 100644 index 0000000..2524031 --- /dev/null +++ b/src/xml/escp2/model/base/picmate.xml @@ -0,0 +1,114 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="picmate" base="escp2/model/base/baseline_360.xml"> + <inputSlots src="escp2/inputslots/default.xml"/> + <qualityPresets src="escp2/qualitypresets/picturemate.xml"/> + <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> + <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> + <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> + <commandSet>2000</commandSet> + <borderless>Full</borderless> + <supportsVariableDropsizes/> + <sendZeroAdvance/> + <supportsD4Mode/> + <preferredEnvelopeOrientation>Portrait</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>90</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>3</NozzleSeparation> + </headConfiguration> + <resolutionScale>28800</resolutionScale> + <minimumResolution>1440 720</minimumResolution> + <maximumResolution>5760 1440</maximumResolution> + <separationRows>1</separationRows> + <zeroMarginOffset>80</zeroMarginOffset> + <microLeftMargin>42</microLeftMargin> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <maximumMediaSize>288 86400</maximumMediaSize> + <maximumImageableArea>288 86400</maximumImageableArea> + <margins interleave="soft" media="sheet">9 9 0 0</margins> + <margins interleave="printer" media="sheet">9 9 0 0</margins> + <margins interleave="soft" media="roll">9 9 0 0</margins> + <margins interleave="printer" media="roll">9 9 0 0</margins> + <CDOffset>204 191</CDOffset> + <CDMediaSize>595 842</CDMediaSize> + <AlignmentChoices>4 15 0 0</AlignmentChoices> + <resolutions> + <resolution translate="text" name="1440x720ov" text="1440 x 720 DPI"> + <physicalResolution>2880 720</physicalResolution> + <printedResolution>1440 720</printedResolution> + <parameter type="float" name="escp2_density">1.596000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.400000</parameter> + <parameter type="float" name="DropSize2">0.650000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720x1440ov" text="1440 x 720 DPI Transposed"> + <physicalResolution>1440 1440</physicalResolution> + <printedResolution>720 1440</printedResolution> + <parameter type="float" name="escp2_density">1.596000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.400000</parameter> + <parameter type="float" name="DropSize2">0.650000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x1440sw" text="1440 x 1440 DPI"> + <physicalResolution>1440 1440</physicalResolution> + <parameter type="float" name="escp2_density">0.798000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.400000</parameter> + <parameter type="float" name="DropSize2">0.650000</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.422500</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.399750</parameter> + <parameter type="float" name="DropSize2">0.650000</parameter> + <parameter type="float" name="DropSize3">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.211870</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.399750</parameter> + <parameter type="float" name="DropSize2">0.650000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + </resolutions> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/pro_ultrachrome_k3.xml b/src/xml/escp2/model/base/pro_ultrachrome_k3.xml new file mode 100644 index 0000000..283d394 --- /dev/null +++ b/src/xml/escp2/model/base/pro_ultrachrome_k3.xml @@ -0,0 +1,26 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="pro_ultrachrome_k3" base="escp2/model/base/pro_ultrachrome_k3_cutter.xml"> + <media src="escp2/media/pro_ultrachrome_k3.xml"/> + <inkGroup src="escp2/inks/pro_ultrachrome_k3.xml"/> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/pro_ultrachrome_k3_base.xml b/src/xml/escp2/model/base/pro_ultrachrome_k3_base.xml new file mode 100644 index 0000000..96be987 --- /dev/null +++ b/src/xml/escp2/model/base/pro_ultrachrome_k3_base.xml @@ -0,0 +1,55 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="pro_ultrachrome_k3_base" base="escp2/model/base/baseline_360.xml"> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <printerWeaves src="escp2/weaves/pro7600.xml"/> + <resolutions src="escp2/resolutions/prox600.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> + <commandSet>Pro</commandSet> + <supportsVariableDropsizes/> + <hasFastGraymode/> + <sendZeroAdvance/> + <supportsD4Mode/> + <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>1</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <physicalChannels>8</physicalChannels> + <resolutionScale>14400</resolutionScale> + <minimumResolution>360 180</minimumResolution> + <maximumResolution>2880 2880</maximumResolution> + <separationRows>1</separationRows> + <zeroMarginOffset>43</zeroMarginOffset> + <microLeftMargin>5</microLeftMargin> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <margins interleave="soft" media="sheet">9 9 9 40</margins> + <margins interleave="printer" media="sheet">9 9 9 40</margins> + <AlignmentChoices>3 15 0 0</AlignmentChoices> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/pro_ultrachrome_k3_cutter.xml b/src/xml/escp2/model/base/pro_ultrachrome_k3_cutter.xml new file mode 100644 index 0000000..9579569 --- /dev/null +++ b/src/xml/escp2/model/base/pro_ultrachrome_k3_cutter.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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="pro_ultrachrome_k3_cutter" base="escp2/model/base/pro_ultrachrome_k3_base.xml"> + <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> + <borderless>HorizontalOnly</borderless> + <margins interleave="soft" media="roll">9 9 0 0</margins> + <margins interleave="printer" media="roll">9 9 0 0</margins> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/pro_ultrachrome_k3v.xml b/src/xml/escp2/model/base/pro_ultrachrome_k3v.xml new file mode 100644 index 0000000..0d0584b --- /dev/null +++ b/src/xml/escp2/model/base/pro_ultrachrome_k3v.xml @@ -0,0 +1,25 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="pro_ultrachrome_k3v" base="escp2/model/base/pro_ultrachrome_k3_cutter.xml"> + <media src="escp2/media/pro_ultrachrome_k3v.xml"/> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/pro_ultrachrome_k3v10.xml b/src/xml/escp2/model/base/pro_ultrachrome_k3v10.xml new file mode 100644 index 0000000..bfb6437 --- /dev/null +++ b/src/xml/escp2/model/base/pro_ultrachrome_k3v10.xml @@ -0,0 +1,26 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="pro_ultrachrome_k3v10" base="escp2/model/base/pro_ultrachrome_k3v10_base.xml"> + <media src="escp2/media/pro_ultrachrome_k3v10.xml"/> + <inkGroup src="escp2/inks/pro_ultrachrome_k3v10.xml"/> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/pro_ultrachrome_k3v10_base.xml b/src/xml/escp2/model/base/pro_ultrachrome_k3v10_base.xml new file mode 100644 index 0000000..da37de4 --- /dev/null +++ b/src/xml/escp2/model/base/pro_ultrachrome_k3v10_base.xml @@ -0,0 +1,133 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="pro_ultrachrome_k3v10_base" base="escp2/model/base/baseline_360.xml"> + <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> + <qualityPresets src="escp2/qualitypresets/prox900.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> + <commandSet>Pro</commandSet> + <borderless>HorizontalOnly</borderless> + <supportsVariableDropsizes/> + <hasFastGraymode/> + <sendZeroAdvance/> + <supportsD4Mode/> + <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>1</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <physicalChannels>10</physicalChannels> + <resolutionScale>14400</resolutionScale> + <minimumResolution>360 180</minimumResolution> + <maximumResolution>2880 2880</maximumResolution> + <separationRows>1</separationRows> + <zeroMarginOffset>43</zeroMarginOffset> + <microLeftMargin>5</microLeftMargin> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <margins interleave="soft" media="sheet">9 9 9 40</margins> + <margins interleave="printer" media="sheet">9 9 9 40</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> + <resolutions> + <resolution translate="text" name="360pro" text="360 DPI"> + <physicalResolution>360 360</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">5.000000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.290000</parameter> + <parameter type="float" name="DropSize2">0.630000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> + <physicalResolution>720 360</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">2.520000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.290000</parameter> + <parameter type="float" name="DropSize2">0.630000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720mw" text="720 DPI"> + <physicalResolution>720 720</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">1.260000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.290000</parameter> + <parameter type="float" name="DropSize2">0.630000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720x1440mw" text="1440 x 720 DPI"> + <physicalResolution>720 1440</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.891000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.275000</parameter> + <parameter type="float" name="DropSize2">0.450000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> + <physicalResolution>1440 1440</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.446000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.275000</parameter> + <parameter type="float" name="DropSize2">0.450000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> + <physicalResolution>2880 1440</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.775000</parameter> + <parameter type="integer" name="escp2_ink_type">5</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> + <physicalResolution>2880 2880</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.388000</parameter> + <parameter type="integer" name="escp2_ink_type">5</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + </resolutions> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/pro_ultrachrome_k3v10a.xml b/src/xml/escp2/model/base/pro_ultrachrome_k3v10a.xml new file mode 100644 index 0000000..ef81b59 --- /dev/null +++ b/src/xml/escp2/model/base/pro_ultrachrome_k3v10a.xml @@ -0,0 +1,26 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="pro_ultrachrome_k3v10a" base="escp2/model/base/pro_ultrachrome_k3v10_base.xml"> + <media src="escp2/media/pro_ultrachrome_k3v10a.xml"/> + <inkGroup src="escp2/inks/pro_ultrachrome_k3v10a.xml"/> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/pro_ultrachrome_k3v10b.xml b/src/xml/escp2/model/base/pro_ultrachrome_k3v10b.xml new file mode 100644 index 0000000..8c2962e --- /dev/null +++ b/src/xml/escp2/model/base/pro_ultrachrome_k3v10b.xml @@ -0,0 +1,26 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="pro_ultrachrome_k3v10b" base="escp2/model/base/pro_ultrachrome_k3v10_base.xml"> + <media src="escp2/media/pro_ultrachrome_k3v10b.xml"/> + <inkGroup src="escp2/inks/pro_ultrachrome_k3v10b.xml"/> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/pro_x000.xml b/src/xml/escp2/model/base/pro_x000.xml new file mode 100644 index 0000000..ddeda32 --- /dev/null +++ b/src/xml/escp2/model/base/pro_x000.xml @@ -0,0 +1,128 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="pro_x000" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/pro_gen1.xml"/> + <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <inkGroup src="escp2/inks/pro_gen1.xml"/> + <printerWeaves src="escp2/weaves/pro7000.xml"/> + <commandSet>Pro</commandSet> + <borderless>No</borderless> + <sendZeroAdvance/> + <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>1</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <physicalChannels>6</physicalChannels> + <resolutionScale>14400</resolutionScale> + <minimumResolution>90 90</minimumResolution> + <maximumResolution>1440 720</maximumResolution> + <separationRows>1</separationRows> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> + <minimumMediaSize>504 504</minimumMediaSize> + <maximumMediaSize>1728 86400</maximumMediaSize> + <maximumImageableArea>1728 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="roll">9 9 9 9</margins> + <margins interleave="printer" media="roll">9 9 9 9</margins> + <AlignmentChoices>1 7 0 0</AlignmentChoices> + <ChannelNames> + <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"> + <physicalResolution>360 90</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">2.600000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="180dpi" text="180 DPI Economy"> + <physicalResolution>180 180</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">2.600000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> + <physicalResolution>360 180</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">2.600000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="360pro" text="360 DPI"> + <physicalResolution>360 360</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">1.300000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> + <physicalResolution>720 360</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">1.300000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="720mw" text="720 DPI"> + <physicalResolution>720 720</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.775000</parameter> + <parameter type="integer" name="escp2_ink_type">1</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> + <physicalResolution>1440 720</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.388000</parameter> + <parameter type="integer" name="escp2_ink_type">1</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + </resolutions> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/pro_x500.xml b/src/xml/escp2/model/base/pro_x500.xml new file mode 100644 index 0000000..36e5813 --- /dev/null +++ b/src/xml/escp2/model/base/pro_x500.xml @@ -0,0 +1,122 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="pro_x500.xml" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/pro_pigment.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <inkGroup src="escp2/inks/pro_pigment.xml"/> + <printerWeaves src="escp2/weaves/pro7500.xml"/> + <commandSet>Pro</commandSet> + <borderless>No</borderless> + <sendZeroAdvance/> + <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>1</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <physicalChannels>6</physicalChannels> + <resolutionScale>14400</resolutionScale> + <minimumResolution>90 90</minimumResolution> + <maximumResolution>1440 720</maximumResolution> + <separationRows>1</separationRows> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> + <margins interleave="soft" media="sheet">9 9 9 40</margins> + <margins interleave="printer" media="sheet">9 9 9 40</margins> + <AlignmentChoices>1 7 0 0</AlignmentChoices> + <ChannelNames> + <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"> + <physicalResolution>360 90</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">3.000000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="180dpi" text="180 DPI Economy"> + <physicalResolution>180 180</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">3.000000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> + <physicalResolution>360 180</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">3.000000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="360pro" text="360 DPI"> + <physicalResolution>360 360</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">1.500000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> + <physicalResolution>720 360</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.780000</parameter> + <parameter type="integer" name="escp2_ink_type">2</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="720mw" text="720 DPI"> + <physicalResolution>720 720</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.775000</parameter> + <parameter type="integer" name="escp2_ink_type">1</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> + <physicalResolution>1440 720</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.388000</parameter> + <parameter type="integer" name="escp2_ink_type">1</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + </resolutions> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/model_111.xml b/src/xml/escp2/model/base/pro_x600.xml index 1fa6651..be008f5 100644 --- a/src/xml/escp2/model/model_111.xml +++ b/src/xml/escp2/model/base/pro_x600.xml @@ -17,14 +17,13 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="111"> - <media src="escp2/media/pro_ultrachrome_k3.xml"/> +<escp2Model name="pro_x600" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/pro_ultrachrome.xml"/> <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k34.xml"/> + <inkGroup src="escp2/inks/pro_ultrachrome.xml"/> <printerWeaves src="escp2/weaves/pro7600.xml"/> <verticalBorderlessSequence>SN\003\000\000\011\001</verticalBorderlessSequence> <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> @@ -43,7 +42,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>1</NozzleSeparation> </headConfiguration> <physicalChannels>7</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 180</minimumResolution> <maximumResolution>2880 1440</maximumResolution> @@ -53,9 +51,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <minHorizontalAlignment>1</minHorizontalAlignment> <baseHorizontalAlignment>28800</baseHorizontalAlignment> <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>504 504</minimumMediaSize> - <maximumMediaSize>1224 86400</maximumMediaSize> - <maximumImageableArea>1224 86400</maximumImageableArea> + <minimumMediaSize>144 144</minimumMediaSize> <margins interleave="soft" media="sheet">9 9 9 40</margins> <margins interleave="printer" media="sheet">9 9 9 40</margins> <margins interleave="soft" media="roll">9 9 0 0</margins> @@ -66,6 +62,8 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <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"> diff --git a/src/xml/escp2/model/base/pro_x700.xml b/src/xml/escp2/model/base/pro_x700.xml new file mode 100644 index 0000000..f028cef --- /dev/null +++ b/src/xml/escp2/model/base/pro_x700.xml @@ -0,0 +1,25 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="pro_x700" base="escp2/model/base/pro_ultrachrome_k3v.xml"> + <inkGroup src="escp2/inks/pro_ultrachrome_k3v4.xml"/> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/pro_x800.xml b/src/xml/escp2/model/base/pro_x800.xml new file mode 100644 index 0000000..75eb001 --- /dev/null +++ b/src/xml/escp2/model/base/pro_x800.xml @@ -0,0 +1,135 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="pro_x800" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/pro_ultrachrome.xml"/> + <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <inkGroup src="escp2/inks/pro_ultrachrome.xml"/> + <printerWeaves src="escp2/weaves/pro7600.xml"/> + <verticalBorderlessSequence>SN\003\000\000\011\001</verticalBorderlessSequence> + <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> + <commandSet>Pro</commandSet> + <borderless>Yes</borderless> + <supportsVariableDropsizes/> + <hasFastGraymode/> + <sendZeroAdvance/> + <supportsD4Mode/> + <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>1</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <physicalChannels>7</physicalChannels> + <resolutionScale>14400</resolutionScale> + <minimumResolution>360 180</minimumResolution> + <maximumResolution>2880 1440</maximumResolution> + <separationRows>1</separationRows> + <zeroMarginOffset>80</zeroMarginOffset> + <microLeftMargin>42</microLeftMargin> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <margins interleave="soft" media="sheet">9 9 9 40</margins> + <margins interleave="printer" media="sheet">9 9 9 40</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="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"> + <physicalResolution>360 180</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">2.300000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.160000</parameter> + <parameter type="float" name="DropSize2">0.400000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="360pro" text="360 DPI"> + <physicalResolution>360 360</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">1.150000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.160000</parameter> + <parameter type="float" name="DropSize2">0.400000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> + <physicalResolution>720 360</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.580000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.160000</parameter> + <parameter type="float" name="DropSize2">0.400000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720mw" text="720 DPI"> + <physicalResolution>720 720</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.766000</parameter> + <parameter type="integer" name="escp2_ink_type">16</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.200000</parameter> + <parameter type="float" name="DropSize2">0.450000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> + <physicalResolution>1440 720</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.388000</parameter> + <parameter type="integer" name="escp2_ink_type">16</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.200000</parameter> + <parameter type="float" name="DropSize2">0.450000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> + <physicalResolution>2880 1440</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.479000</parameter> + <parameter type="integer" name="escp2_ink_type">5</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + </resolutions> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/pro_x880.xml b/src/xml/escp2/model/base/pro_x880.xml new file mode 100644 index 0000000..fa8ee4d --- /dev/null +++ b/src/xml/escp2/model/base/pro_x880.xml @@ -0,0 +1,26 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="pro_x880" base="escp2/model/base/pro_ultrachrome_k3_cutter.xml"> + <media src="escp2/media/pro_ultrachrome_k3v.xml"/> + <inkGroup src="escp2/inks/pro_ultrachrome_k3v.xml"/> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/r200.xml b/src/xml/escp2/model/base/r200.xml new file mode 100644 index 0000000..c65e99f --- /dev/null +++ b/src/xml/escp2/model/base/r200.xml @@ -0,0 +1,156 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="r200" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/photo_gen3.xml"/> + <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <inkGroup src="escp2/inks/photo_gen3.xml"/> + <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> + <preinitRemoteSequence>PM\002\000\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>90</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>3</NozzleSeparation> + </headConfiguration> + <physicalChannels>6</physicalChannels> + <resolutionScale>14400</resolutionScale> + <minimumResolution>360 120</minimumResolution> + <maximumResolution>2880 1440</maximumResolution> + <separationRows>1</separationRows> + <zeroMarginOffset>80</zeroMarginOffset> + <microLeftMargin>42</microLeftMargin> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>2073600</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> + <CDOffset>204 191</CDOffset> + <CDMediaSize>595 842</CDMediaSize> + <extraBottom>24</extraBottom> + <AlignmentChoices>4 15 0 0</AlignmentChoices> + <ChannelNames> + <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"> + <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.150000</parameter> + <parameter type="float" name="DropSize2">0.300000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> + <physicalResolution>360 240</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.150000</parameter> + <parameter type="float" name="DropSize2">0.300000</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.150000</parameter> + <parameter type="float" name="DropSize2">0.300000</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.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.150000</parameter> + <parameter type="float" name="DropSize2">0.300000</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.679000</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.150000</parameter> + <parameter type="float" name="DropSize2">0.500000</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.657000</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.290000</parameter> + <parameter type="float" name="DropSize2">0.480000</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.328500</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.290000</parameter> + <parameter type="float" name="DropSize2">0.480000</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.164250</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.290000</parameter> + <parameter type="float" name="DropSize2">0.480000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + </resolutions> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/r240.xml b/src/xml/escp2/model/base/r240.xml new file mode 100644 index 0000000..c8cb8a2 --- /dev/null +++ b/src/xml/escp2/model/base/r240.xml @@ -0,0 +1,163 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="r240" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/photo_gen3_4.xml"/> + <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <inkGroup src="escp2/inks/photo_gen3_4.xml"/> + <preinitRemoteSequence>PM\002\000\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>90</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>3</NozzleSeparation> + </headConfiguration> + <physicalChannels>4</physicalChannels> + <resolutionScale>14400</resolutionScale> + <minimumResolution>360 120</minimumResolution> + <maximumResolution>5760 1440</maximumResolution> + <separationRows>1</separationRows> + <zeroMarginOffset>80</zeroMarginOffset> + <microLeftMargin>42</microLeftMargin> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>2073600</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> + <CDOffset>204 191</CDOffset> + <CDMediaSize>595 842</CDMediaSize> + <extraBottom>24</extraBottom> + <AlignmentChoices>4 15 0 0</AlignmentChoices> + <ChannelNames> + <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"> + <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.150000</parameter> + <parameter type="float" name="DropSize2">0.300000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> + <physicalResolution>360 240</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.150000</parameter> + <parameter type="float" name="DropSize2">0.300000</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.150000</parameter> + <parameter type="float" name="DropSize2">0.300000</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.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.150000</parameter> + <parameter type="float" name="DropSize2">0.300000</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.679000</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.150000</parameter> + <parameter type="float" name="DropSize2">0.500000</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.657000</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.290000</parameter> + <parameter type="float" name="DropSize2">0.480000</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.328500</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.290000</parameter> + <parameter type="float" name="DropSize2">0.480000</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.164250</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.290000</parameter> + <parameter type="float" name="DropSize2">0.480000</parameter> + <parameter type="float" name="DropSize3">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.082070</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.290000</parameter> + <parameter type="float" name="DropSize2">0.480000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + </resolutions> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/r800.xml b/src/xml/escp2/model/base/r800.xml new file mode 100644 index 0000000..fec7ca9 --- /dev/null +++ b/src/xml/escp2/model/base/r800.xml @@ -0,0 +1,172 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="r800" base="escp2/model/base/baseline_360.xml"> + <inputSlots src="escp2/inputslots/r1800.xml"/> + <qualityPresets src="escp2/qualitypresets/v2880.xml"/> + <inkGroup src="escp2/inks/cmykrb.xml"/> + <mediaSizes src="escp2/mediasizes/standard.xml"/> + <verticalBorderlessSequence>SNT\000\000\012\033\000\000\000\000\000\000\001\003\000\001\001\235\007T\001P\012\252\000\363\006?\002P\012\277\007(\002%\013,\001\253\000\037\001!\000\040\001\322\000\241\000\000\000\017\000\036\000\030\031\031\031\031\031\031\031\003\033\033ccccccccccc\002\000\001\000\001\001\362\014</verticalBorderlessSequence> + <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> + <commandSet>2000</commandSet> + <borderless>Yes</borderless> + <supportsVariableDropsizes/> + <hasFastGraymode/> + <sendZeroAdvance/> + <supportsD4Mode/> + <preferredEnvelopeOrientation>Portrait</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>180</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>2</NozzleSeparation> + </headConfiguration> + <physicalChannels>8</physicalChannels> + <resolutionScale>28800</resolutionScale> + <minimumResolution>360 180</minimumResolution> + <maximumResolution>5760 2880</maximumResolution> + <extraVerticalFeed>10</extraVerticalFeed> + <separationRows>1</separationRows> + <microLeftMargin>42</microLeftMargin> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>180</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>16588800</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <margins interleave="soft" media="sheet">9 9 0 11</margins> + <margins interleave="printer" media="sheet">9 9 0 11</margins> + <margins interleave="soft" media="roll">9 9 0 0</margins> + <margins interleave="printer" media="roll">9 9 0 0</margins> + <CDOffset>204 191</CDOffset> + <CDMediaSize>595 842</CDMediaSize> + <extraBottom>24</extraBottom> + <AlignmentChoices>4 15 0 0</AlignmentChoices> + <ChannelNames> + <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"> + <physicalResolution>360 180</physicalResolution> + <parameter type="float" name="escp2_density">2.800000</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">1.000000</parameter> + </resolution> + <resolution translate="text" name="360sw" text="360 DPI"> + <physicalResolution>360 360</physicalResolution> + <parameter type="float" name="escp2_density">1.400000</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">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.000000</parameter> + <parameter type="integer" name="escp2_ink_type">16</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.350000</parameter> + <parameter type="float" name="DropSize2">0.700000</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">1.000000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.350000</parameter> + <parameter type="float" name="DropSize2">0.700000</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.869000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.200000</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.942000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.470000</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.471000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.250000</parameter> + <parameter type="float" name="DropSize2">0.470000</parameter> + <parameter type="float" name="DropSize3">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.235000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.249100</parameter> + <parameter type="float" name="DropSize2">0.470000</parameter> + <parameter type="float" name="DropSize3">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.235000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.249100</parameter> + <parameter type="float" name="DropSize2">0.470000</parameter> + <parameter type="float" name="DropSize3">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.132023</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.249100</parameter> + <parameter type="float" name="DropSize2">0.470000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + </resolutions> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/sc800.xml b/src/xml/escp2/model/base/sc800.xml new file mode 100644 index 0000000..6b19aba --- /dev/null +++ b/src/xml/escp2/model/base/sc800.xml @@ -0,0 +1,133 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="sc800" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/standard_gen0.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <inkGroup src="escp2/inks/standard_gen0.xml"/> + <commandSet>1998</commandSet> + <borderless>No</borderless> + <sendZeroAdvance/> + <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>64</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>2</NozzleSeparation> + </headConfiguration> + <physicalChannels>4</physicalChannels> + <minimumResolution>180 180</minimumResolution> + <maximumResolution>1440 720</maximumResolution> + <separationRows>1</separationRows> + <pseudoSeparationRows>4</pseudoSeparationRows> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <AlignmentChoices>1 7 0 0</AlignmentChoices> + <ChannelNames> + <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"> + <physicalResolution>180 180</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">2.600000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> + <physicalResolution>360 180</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">2.600000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="360mw" text="360 DPI High Quality"> + <physicalResolution>360 360</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">1.300000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="360" text="360 DPI"> + <physicalResolution>360 360</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">1.300000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="720x360sw" text="720 x 360 DPI"> + <physicalResolution>720 360</physicalResolution> + <parameter type="float" name="escp2_density">0.650000</parameter> + <parameter type="integer" name="escp2_ink_type">2</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="720sw" text="720 DPI"> + <physicalResolution>720 720</physicalResolution> + <parameter type="float" name="escp2_density">0.775000</parameter> + <parameter type="integer" name="escp2_ink_type">1</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">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.775000</parameter> + <parameter type="integer" name="escp2_ink_type">1</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">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.388000</parameter> + <parameter type="integer" name="escp2_ink_type">1</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> + <physicalResolution>1440 720</physicalResolution> + <verticalPasses>2</verticalPasses> + <parameter type="float" name="escp2_density">0.388000</parameter> + <parameter type="integer" name="escp2_ink_type">1</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + </resolutions> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/sp700.xml b/src/xml/escp2/model/base/sp700.xml new file mode 100644 index 0000000..bd1502c --- /dev/null +++ b/src/xml/escp2/model/base/sp700.xml @@ -0,0 +1,59 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="sp700" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/photo_gen0.xml"/> + <inputSlots src="escp2/inputslots/default.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <inkGroup src="escp2/inks/photo_gen0.xml"/> + <resolutions src="escp2/resolutions/sp700.xml"/> + <commandSet>1998</commandSet> + <borderless>No</borderless> + <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>32</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>4</NozzleSeparation> + </headConfiguration> + <physicalChannels>6</physicalChannels> + <minimumResolution>90 90</minimumResolution> + <maximumResolution>1440 720</maximumResolution> + <separationRows>1</separationRows> + <extra720DPISeparation>8</extra720DPISeparation> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <margins interleave="soft" media="sheet">9 9 0 30</margins> + <margins interleave="printer" media="sheet">9 9 0 30</margins> + <margins interleave="soft" media="roll">9 9 0 0</margins> + <margins interleave="printer" media="roll">9 9 0 0</margins> + <ChannelNames> + <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> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/sp750.xml b/src/xml/escp2/model/base/sp750.xml new file mode 100644 index 0000000..5f4d9ef --- /dev/null +++ b/src/xml/escp2/model/base/sp750.xml @@ -0,0 +1,65 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="sp750" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/photo_gen1.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <inkGroup src="escp2/inks/photo_gen1.xml"/> + <resolutions src="escp2/resolutions/sc740.xml"/> + <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> + <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> + <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> + <commandSet>1999</commandSet> + <borderless>No</borderless> + <supportsVariableDropsizes/> + <sendZeroAdvance/> + <supportsD4Mode/> + <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>48</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>3</NozzleSeparation> + </headConfiguration> + <physicalChannels>6</physicalChannels> + <resolutionScale>14400</resolutionScale> + <minimumResolution>90 90</minimumResolution> + <maximumResolution>1440 720</maximumResolution> + <separationRows>1</separationRows> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <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> + <AlignmentChoices>3 15 0 0</AlignmentChoices> + <ChannelNames> + <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> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/sp950.xml b/src/xml/escp2/model/base/sp950.xml new file mode 100644 index 0000000..83915b0 --- /dev/null +++ b/src/xml/escp2/model/base/sp950.xml @@ -0,0 +1,129 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="sp950" base="escp2/model/base/baseline_360.xml"> + <inputSlots src="escp2/inputslots/cd_cutter_roll_feed.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <verticalBorderlessSequence>SN4\000\000\002\027\000\000\000\000\000\000\001\003\000\204\003\252\000\204\006\270\004\364\006v\005\230\011\226\000\304\004\226\000\206\002\270\012\031\030\031\031\031\031\004444\004\001\000\000\040\011</verticalBorderlessSequence> + <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> + <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> + <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> + <commandSet>2000</commandSet> + <borderless>Yes</borderless> + <supportsVariableDropsizes/> + <hasFast360DPI/> + <sendZeroAdvance/> + <supportsD4Mode/> + <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>96</Nozzles> + <MinNozzles>96</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>2</NozzleSeparation> + </headConfiguration> + <headConfiguration type="fast"> + <Nozzles>24</Nozzles> + <MinNozzles>24</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>1</NozzleSeparation> + </headConfiguration> + <physicalChannels>6</physicalChannels> + <resolutionScale>14400</resolutionScale> + <minimumResolution>360 180</minimumResolution> + <maximumResolution>2880 1440</maximumResolution> + <separationRows>1</separationRows> + <zeroMarginOffset>80</zeroMarginOffset> + <microLeftMargin>42</microLeftMargin> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>28800</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <maximumMediaSize>684 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> + <CDOffset>204 191</CDOffset> + <extraBottom>24</extraBottom> + <AlignmentChoices>4 15 0 0</AlignmentChoices> + <resolutions> + <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> + <physicalResolution>360 180</physicalResolution> + <parameter type="float" name="escp2_density">2.000000</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.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">1.000000</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.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">0.500000</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.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</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.650000</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="1440x720sw" text="1440 x 720 DPI"> + <physicalResolution>1440 720</physicalResolution> + <parameter type="float" name="escp2_density">0.325000</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.650000</parameter> + <parameter type="integer" name="escp2_ink_type">16</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + </resolutions> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/base/wf7xxx.xml b/src/xml/escp2/model/base/wf7xxx.xml new file mode 100644 index 0000000..78c8130 --- /dev/null +++ b/src/xml/escp2/model/base/wf7xxx.xml @@ -0,0 +1,85 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model name="wf7xxxx" base="escp2/model/base/baseline_360.xml"> + <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"/> + <resolutions src="escp2/resolutions/wf6xx.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> + <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> + <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> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/model_0.xml b/src/xml/escp2/model/model_0.xml index 48d621c..a29bc92 100644 --- a/src/xml/escp2/model/model_0.xml +++ b/src/xml/escp2/model/model_0.xml @@ -17,14 +17,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="0"> +<escp2Model id="0" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/standard_gen0.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> <inkGroup src="escp2/inks/standard_gen0.xml"/> + <resolutions src="escp2/resolutions/escp2-i.xml"/> <commandSet>1998</commandSet> <borderless>No</borderless> <hasFastGraymode/> @@ -37,7 +37,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>4</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <minimumResolution>90 90</minimumResolution> <maximumResolution>720 720</maximumResolution> <separationRows>1</separationRows> @@ -58,69 +57,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <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"> - <physicalResolution>360 90</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="180dpi" text="180 DPI Economy"> - <physicalResolution>180 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360mw" text="360 DPI High Quality"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.300000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.568000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_1.xml b/src/xml/escp2/model/model_1.xml index 53b34f6..2cd726e 100644 --- a/src/xml/escp2/model/model_1.xml +++ b/src/xml/escp2/model/model_1.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="1"> +<escp2Model id="1" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/standard_gen0.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -36,7 +35,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>1</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <minimumResolution>90 90</minimumResolution> <maximumResolution>720 720</maximumResolution> <separationRows>1</separationRows> diff --git a/src/xml/escp2/model/model_10.xml b/src/xml/escp2/model/model_10.xml index be896fd..ac7defb 100644 --- a/src/xml/escp2/model/model_10.xml +++ b/src/xml/escp2/model/model_10.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="10"> +<escp2Model id="10" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -38,7 +37,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>4</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>90 90</minimumResolution> <maximumResolution>720 720</maximumResolution> diff --git a/src/xml/escp2/model/model_100.xml b/src/xml/escp2/model/model_100.xml index b7a6293..f32fcb7 100644 --- a/src/xml/escp2/model/model_100.xml +++ b/src/xml/escp2/model/model_100.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="100"> +<escp2Model id="100" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/c120.xml"/> <inputSlots src="escp2/inputslots/cd.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -56,7 +55,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>1</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 180</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_101.xml b/src/xml/escp2/model/model_101.xml index 3b755b0..34e9783 100644 --- a/src/xml/escp2/model/model_101.xml +++ b/src/xml/escp2/model/model_101.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="101"> +<escp2Model id="101" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/wf500.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/wf40.xml"/> @@ -56,7 +55,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 120</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_102.xml b/src/xml/escp2/model/model_102.xml index 89ae05f..652ed09 100644 --- a/src/xml/escp2/model/model_102.xml +++ b/src/xml/escp2/model/model_102.xml @@ -17,134 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<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"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3v.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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="102" base="escp2/model/base/pro_x880.xml"> <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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">10.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_103.xml b/src/xml/escp2/model/model_103.xml index 6ddf923..5ed7040 100644 --- a/src/xml/escp2/model/model_103.xml +++ b/src/xml/escp2/model/model_103.xml @@ -17,134 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<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"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3.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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="103" base="escp2/model/base/pro_ultrachrome_k3.xml"> <maximumMediaSize>1728 86400</maximumMediaSize> <maximumImageableArea>1728 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">10.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_104.xml b/src/xml/escp2/model/model_104.xml index 60852e2..40d6a16 100644 --- a/src/xml/escp2/model/model_104.xml +++ b/src/xml/escp2/model/model_104.xml @@ -17,134 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<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"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3.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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="104" base="escp2/model/base/pro_ultrachrome_k3.xml"> <maximumMediaSize>3168 86400</maximumMediaSize> <maximumImageableArea>3168 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">10.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_105.xml b/src/xml/escp2/model/model_105.xml index 3ef8ac6..44b89ec 100644 --- a/src/xml/escp2/model/model_105.xml +++ b/src/xml/escp2/model/model_105.xml @@ -17,134 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<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"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3.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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="105" base="escp2/model/base/pro_ultrachrome_k3.xml"> <maximumMediaSize>4608 86400</maximumMediaSize> <maximumImageableArea>4608 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">10.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_106.xml b/src/xml/escp2/model/model_106.xml index bda3a7f..b618db3 100644 --- a/src/xml/escp2/model/model_106.xml +++ b/src/xml/escp2/model/model_106.xml @@ -17,134 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<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"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3.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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="106" base="escp2/model/base/pro_ultrachrome_k3.xml"> <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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">10.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_107.xml b/src/xml/escp2/model/model_107.xml index 1856efb..4cc4a58 100644 --- a/src/xml/escp2/model/model_107.xml +++ b/src/xml/escp2/model/model_107.xml @@ -17,136 +17,20 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="107"> +<escp2Model id="107" base="escp2/model/base/pro_ultrachrome_k3_base.xml"> <media src="escp2/media/pro_ultrachrome_k3v.xml"/> <inputSlots src="escp2/inputslots/pro3880.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> <inkGroup src="escp2/inks/pro_ultrachrome_k3v.xml"/> - <printerWeaves src="escp2/weaves/pro7600.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>Pro</commandSet> <borderless>Yes</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> <preferredEnvelopeOrientation>Portrait</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> <physicalChannels>9</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>1224 86400</maximumMediaSize> <maximumImageableArea>1224 86400</maximumImageableArea> <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> - <resolutions> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">10.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_108.xml b/src/xml/escp2/model/model_108.xml index 6c799d0..7a86bad 100644 --- a/src/xml/escp2/model/model_108.xml +++ b/src/xml/escp2/model/model_108.xml @@ -17,15 +17,15 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="108"> +<escp2Model id="108" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/pro_ultrachrome_k3.xml"/> <inputSlots src="escp2/inputslots/pro3880.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> <inkGroup src="escp2/inks/pro_ultrachrome_k3.xml"/> <printerWeaves src="escp2/weaves/pro7600.xml"/> + <resolutions src="escp2/resolutions/prox600.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> @@ -45,7 +45,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>1</NozzleSeparation> </headConfiguration> <physicalChannels>9</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 180</minimumResolution> <maximumResolution>2880 2880</maximumResolution> @@ -73,91 +72,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <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"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">10.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_109.xml b/src/xml/escp2/model/model_109.xml index ac29d15..c2ac3fe 100644 --- a/src/xml/escp2/model/model_109.xml +++ b/src/xml/escp2/model/model_109.xml @@ -17,134 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<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"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3v4.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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="109" base="escp2/model/base/pro_x700.xml"> <maximumMediaSize>1728 86400</maximumMediaSize> <maximumImageableArea>1728 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">10.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_11.xml b/src/xml/escp2/model/model_11.xml index d40adac..3284c0b 100644 --- a/src/xml/escp2/model/model_11.xml +++ b/src/xml/escp2/model/model_11.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="11"> +<escp2Model id="11" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -37,7 +36,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>4</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>90 90</minimumResolution> <maximumResolution>1440 720</maximumResolution> diff --git a/src/xml/escp2/model/model_110.xml b/src/xml/escp2/model/model_110.xml index 09830a0..0069a55 100644 --- a/src/xml/escp2/model/model_110.xml +++ b/src/xml/escp2/model/model_110.xml @@ -17,134 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<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"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3v4.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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="110" base="escp2/model/base/pro_x700.xml"> <maximumMediaSize>3168 86400</maximumMediaSize> <maximumImageableArea>3168 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">10.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_112.xml b/src/xml/escp2/model/model_112.xml index 0a0d95a..6a7b973 100644 --- a/src/xml/escp2/model/model_112.xml +++ b/src/xml/escp2/model/model_112.xml @@ -17,123 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="112"> - <media src="escp2/media/pro_ultrachrome.xml"/> - <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/pro_ultrachrome.xml"/> - <printerWeaves src="escp2/weaves/pro7600.xml"/> - <verticalBorderlessSequence>SN\003\000\000\011\001</verticalBorderlessSequence> - <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> - <commandSet>Pro</commandSet> - <borderless>Yes</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>7</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 1440</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="112" base="escp2/model/base/pro_x800.xml"> <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="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="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"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.300000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.160000</parameter> - <parameter type="float" name="DropSize2">0.400000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.150000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.160000</parameter> - <parameter type="float" name="DropSize2">0.400000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.580000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.160000</parameter> - <parameter type="float" name="DropSize2">0.400000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.766000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.200000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.200000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.479000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_113.xml b/src/xml/escp2/model/model_113.xml index 10d0366..b773df6 100644 --- a/src/xml/escp2/model/model_113.xml +++ b/src/xml/escp2/model/model_113.xml @@ -17,123 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="113"> - <media src="escp2/media/pro_ultrachrome.xml"/> - <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/pro_ultrachrome.xml"/> - <printerWeaves src="escp2/weaves/pro7600.xml"/> - <verticalBorderlessSequence>SN\003\000\000\011\001</verticalBorderlessSequence> - <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> - <commandSet>Pro</commandSet> - <borderless>Yes</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>7</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 1440</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="113" base="escp2/model/base/pro_x800.xml"> <maximumMediaSize>4608 86400</maximumMediaSize> <maximumImageableArea>4608 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="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="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"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.300000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.160000</parameter> - <parameter type="float" name="DropSize2">0.400000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.150000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.160000</parameter> - <parameter type="float" name="DropSize2">0.400000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.580000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.160000</parameter> - <parameter type="float" name="DropSize2">0.400000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.766000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.200000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.200000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.479000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_114.xml b/src/xml/escp2/model/model_114.xml index d693f13..9fa6b85 100644 --- a/src/xml/escp2/model/model_114.xml +++ b/src/xml/escp2/model/model_114.xml @@ -17,123 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="114"> - <media src="escp2/media/pro_ultrachrome.xml"/> - <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/pro_ultrachrome.xml"/> - <printerWeaves src="escp2/weaves/pro7600.xml"/> - <verticalBorderlessSequence>SN\003\000\000\011\001</verticalBorderlessSequence> - <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> - <commandSet>Pro</commandSet> - <borderless>Yes</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>7</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 1440</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="114" base="escp2/model/base/pro_x800.xml"> <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="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="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"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.300000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.160000</parameter> - <parameter type="float" name="DropSize2">0.400000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.150000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.160000</parameter> - <parameter type="float" name="DropSize2">0.400000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.580000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.160000</parameter> - <parameter type="float" name="DropSize2">0.400000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.766000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.200000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.200000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.479000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_115.xml b/src/xml/escp2/model/model_115.xml index c51862c..1599db7 100644 --- a/src/xml/escp2/model/model_115.xml +++ b/src/xml/escp2/model/model_115.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="115"> +<escp2Model id="115" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/f360_ultrachrome_k3v.xml"/> <inputSlots src="escp2/inputslots/r2880.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -45,7 +44,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>2</NozzleSeparation> </headConfiguration> <physicalChannels>9</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 180</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_116.xml b/src/xml/escp2/model/model_116.xml index d210401..83441dd 100644 --- a/src/xml/escp2/model/model_116.xml +++ b/src/xml/escp2/model/model_116.xml @@ -17,123 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<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_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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>10</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="116" base="escp2/model/base/pro_ultrachrome_k3v10.xml"> <maximumMediaSize>1728 86400</maximumMediaSize> <maximumImageableArea>1728 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x1440mw" text="1440 x 720 DPI"> - <physicalResolution>720 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_117.xml b/src/xml/escp2/model/model_117.xml index 980e66b..85b783a 100644 --- a/src/xml/escp2/model/model_117.xml +++ b/src/xml/escp2/model/model_117.xml @@ -17,123 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<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_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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>10</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="117" base="escp2/model/base/pro_ultrachrome_k3v10.xml"> <maximumMediaSize>3168 86400</maximumMediaSize> <maximumImageableArea>3168 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x1440mw" text="1440 x 720 DPI"> - <physicalResolution>720 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_118.xml b/src/xml/escp2/model/model_118.xml index 1a761a2..500840d 100644 --- a/src/xml/escp2/model/model_118.xml +++ b/src/xml/escp2/model/model_118.xml @@ -17,206 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="118"> - <media src="escp2/media/c120.xml"/> +<escp2Model id="118" base="escp2/model/base/bx.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 0 0</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.192</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="5760x1440sw" text="5760 x 1440 DPI"> - <physicalResolution>5760 1440</physicalResolution> - <parameter type="float" name="escp2_density">0.096</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="2880x2880sw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <parameter type="float" name="escp2_density">0.096</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="5760x2880sw" text="5760 x 2880 DPI"> - <physicalResolution>5760 2880</physicalResolution> - <parameter type="float" name="escp2_density">0.096</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> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_119.xml b/src/xml/escp2/model/model_119.xml index 5078e53..ae3a8f7 100644 --- a/src/xml/escp2/model/model_119.xml +++ b/src/xml/escp2/model/model_119.xml @@ -17,206 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </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> +<escp2Model id="119" base="escp2/model/base/wf7xxx.xml"> <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.192</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="5760x1440sw" text="5760 x 1440 DPI"> - <physicalResolution>5760 1440</physicalResolution> - <parameter type="float" name="escp2_density">0.096</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="2880x2880sw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <parameter type="float" name="escp2_density">0.096</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="5760x2880sw" text="5760 x 2880 DPI"> - <physicalResolution>5760 2880</physicalResolution> - <parameter type="float" name="escp2_density">0.096</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> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_12.xml b/src/xml/escp2/model/model_12.xml index d1d29da..a624f38 100644 --- a/src/xml/escp2/model/model_12.xml +++ b/src/xml/escp2/model/model_12.xml @@ -17,145 +17,11 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="12"> - <media src="escp2/media/standard.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/standard.xml"/> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <commandSet>1999</commandSet> - <borderless>No</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>48</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <headConfiguration type="black"> - <Nozzles>144</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>144</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="12" base="escp2/model/base/c7xx.xml"> + <resolutions src="escp2/resolutions/sc740.xml"/> <maximumMediaSize>684 3168</maximumMediaSize> <maximumImageableArea>612 3168</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> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</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.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">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.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.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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.568000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.568000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.284000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.284000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_120.xml b/src/xml/escp2/model/model_120.xml index e91caff..4bbf6a7 100644 --- a/src/xml/escp2/model/model_120.xml +++ b/src/xml/escp2/model/model_120.xml @@ -17,206 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </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> +<escp2Model id="120" base="escp2/model/base/wf7xxx.xml"> <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.192</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="5760x1440sw" text="5760 x 1440 DPI"> - <physicalResolution>5760 1440</physicalResolution> - <parameter type="float" name="escp2_density">0.096</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="2880x2880sw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <parameter type="float" name="escp2_density">0.096</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="5760x2880sw" text="5760 x 2880 DPI"> - <physicalResolution>5760 2880</physicalResolution> - <parameter type="float" name="escp2_density">0.096</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> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_121.xml b/src/xml/escp2/model/model_121.xml index f630c33..cb4b2e7 100644 --- a/src/xml/escp2/model/model_121.xml +++ b/src/xml/escp2/model/model_121.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="121"> +<escp2Model id="121" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/wf500.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/wf40.xml"/> @@ -56,7 +55,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 120</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_122.xml b/src/xml/escp2/model/model_122.xml index 99aa2da..7d07e30 100644 --- a/src/xml/escp2/model/model_122.xml +++ b/src/xml/escp2/model/model_122.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="122"> +<escp2Model id="122" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/claria.xml"/> <inputSlots src="escp2/inputslots/rx680.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -44,7 +43,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>4</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 90</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_123.xml b/src/xml/escp2/model/model_123.xml index 6ad1480..ea6617a 100644 --- a/src/xml/escp2/model/model_123.xml +++ b/src/xml/escp2/model/model_123.xml @@ -18,10 +18,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="123"> +<escp2Model id="123" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/wf500.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/wf40.xml"/> @@ -57,7 +56,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 120</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_124.xml b/src/xml/escp2/model/model_124.xml index cb0f1e2..d7a765b 100644 --- a/src/xml/escp2/model/model_124.xml +++ b/src/xml/escp2/model/model_124.xml @@ -17,123 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="124"> - <media src="escp2/media/pro_ultrachrome_k3v10a.xml"/> - <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/prox900.xml"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3v10a.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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>10</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="124" base="escp2/model/base/pro_ultrachrome_k3v10a.xml"> <maximumMediaSize>1728 86400</maximumMediaSize> <maximumImageableArea>1728 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x1440mw" text="1440 x 720 DPI"> - <physicalResolution>720 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_125.xml b/src/xml/escp2/model/model_125.xml index 04ddcee..76d3d20 100644 --- a/src/xml/escp2/model/model_125.xml +++ b/src/xml/escp2/model/model_125.xml @@ -17,123 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="125"> - <media src="escp2/media/pro_ultrachrome_k3v10a.xml"/> - <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/prox900.xml"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3v10a.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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>10</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="125" base="escp2/model/base/pro_ultrachrome_k3v10a.xml"> <maximumMediaSize>3168 86400</maximumMediaSize> <maximumImageableArea>3168 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x1440mw" text="1440 x 720 DPI"> - <physicalResolution>720 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_126.xml b/src/xml/escp2/model/model_126.xml index 33e51b0..304e420 100644 --- a/src/xml/escp2/model/model_126.xml +++ b/src/xml/escp2/model/model_126.xml @@ -17,123 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="126"> - <media src="escp2/media/pro_ultrachrome_k3v10b.xml"/> - <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/prox900.xml"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3v10b.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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>10</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="126" base="escp2/model/base/pro_ultrachrome_k3v10b.xml"> <maximumMediaSize>1728 86400</maximumMediaSize> <maximumImageableArea>1728 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x1440mw" text="1440 x 720 DPI"> - <physicalResolution>720 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_127.xml b/src/xml/escp2/model/model_127.xml index 21fe173..79ef9fe 100644 --- a/src/xml/escp2/model/model_127.xml +++ b/src/xml/escp2/model/model_127.xml @@ -17,123 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="127"> - <media src="escp2/media/pro_ultrachrome_k3v10b.xml"/> - <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/prox900.xml"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3v10b.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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>10</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="127" base="escp2/model/base/pro_ultrachrome_k3v10b.xml"> <maximumMediaSize>3168 86400</maximumMediaSize> <maximumImageableArea>3168 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x1440mw" text="1440 x 720 DPI"> - <physicalResolution>720 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_128.xml b/src/xml/escp2/model/model_128.xml index 5b6649d..bf11394 100644 --- a/src/xml/escp2/model/model_128.xml +++ b/src/xml/escp2/model/model_128.xml @@ -17,134 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="128"> - <media src="escp2/media/pro_ultrachrome_k3v.xml"/> - <inputSlots src="escp2/inputslots/pro_cutter_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3v.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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="128" base="escp2/model/base/pro_x880.xml"> <maximumMediaSize>936 86400</maximumMediaSize> <maximumImageableArea>936 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">10.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_129.xml b/src/xml/escp2/model/model_129.xml index aaa16b1..8502ed1 100644 --- a/src/xml/escp2/model/model_129.xml +++ b/src/xml/escp2/model/model_129.xml @@ -17,159 +17,23 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="129"> - <media src="escp2/media/c82.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/c82.xml"/> +<escp2Model id="129" base="escp2/model/base/c8x.xml"> <verticalBorderlessSequence>SN2\000\000\006\026\000\000\000\000\000\000\001\000\000\027\003\276\000?\007\000\000\334\005\366\011\366\011\226\000\000\000\226\000?\007\031\030\031\031\004\031\004\031\031\031\004\004\000\000]\006</verticalBorderlessSequence> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\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>59</Nozzles> <MinNozzles>60</MinNozzles> <FirstNozzle>1</FirstNozzle> <NozzleSeparation>2</NozzleSeparation> </headConfiguration> - <headConfiguration type="black"> - <Nozzles>180</Nozzles> - <MinNozzles>180</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>180</Nozzles> - <MinNozzles>180</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> <zeroMarginOffset>80</zeroMarginOffset> <microLeftMargin>42</microLeftMargin> - <initialVerticalOffset>-240</initialVerticalOffset> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> <bidirectionalAutoUpperLimit>1036800</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> - <AlignmentChoices>4 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 180</physicalResolution> - <parameter type="float" name="escp2_density">2.400000</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.000000</parameter> - <parameter type="float" name="DropSize2">0.000000</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">1.200000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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">0.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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.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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720sw" text="2880 x 720 DPI"> - <physicalResolution>2880 720</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">0.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440sw" text="1440 x 1440 DPI"> - <physicalResolution>1440 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">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.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">0.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">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.000000</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 efefb0d..78f820b 100644 --- a/src/xml/escp2/model/model_13.xml +++ b/src/xml/escp2/model/model_13.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="13"> +<escp2Model id="13" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -54,7 +53,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>1</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>180 180</minimumResolution> <maximumResolution>1440 720</maximumResolution> diff --git a/src/xml/escp2/model/model_130.xml b/src/xml/escp2/model/model_130.xml index 9ce64ba..458de45 100644 --- a/src/xml/escp2/model/model_130.xml +++ b/src/xml/escp2/model/model_130.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="130"> +<escp2Model id="130" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/f360_ultrachrome_k3v.xml"/> <inputSlots src="escp2/inputslots/pro3880.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -45,7 +44,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>2</NozzleSeparation> </headConfiguration> <physicalChannels>9</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 180</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_131.xml b/src/xml/escp2/model/model_131.xml index 26de179..27e6546 100644 --- a/src/xml/escp2/model/model_131.xml +++ b/src/xml/escp2/model/model_131.xml @@ -17,123 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="131"> - <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_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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>10</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="131" base="escp2/model/base/pro_ultrachrome_k3v10.xml"> <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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x1440mw" text="1440 x 720 DPI"> - <physicalResolution>720 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_132.xml b/src/xml/escp2/model/model_132.xml new file mode 100644 index 0000000..220f8d6 --- /dev/null +++ b/src/xml/escp2/model/model_132.xml @@ -0,0 +1,179 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Model id="132" base="escp2/model/base/baseline_360.xml"> + <media src="escp2/media/claria_xp.xml"/> + <inputSlots src="escp2/inputslots/rx680.xml"/> + <qualityPresets src="escp2/qualitypresets/standard.xml"/> + <inkGroup src="escp2/inks/claria_xp.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/> + <hasInterchangeableInkCartridges/> + <preferredEnvelopeOrientation>Portrait</preferredEnvelopeOrientation> + <headConfiguration type="default"> + <Nozzles>180</Nozzles> + <MinNozzles>1</MinNozzles> + <FirstNozzle>0</FirstNozzle> + <NozzleSeparation>2</NozzleSeparation> + </headConfiguration> + <physicalChannels>6</physicalChannels> + <resolutionScale>14400</resolutionScale> + <minimumResolution>360 180</minimumResolution> + <maximumResolution>5760 2880</maximumResolution> + <extraVerticalFeed>0</extraVerticalFeed> + <separationRows>1</separationRows> + <zeroMarginOffset>96</zeroMarginOffset> + <microLeftMargin>42</microLeftMargin> + <initialVerticalOffset>-15</initialVerticalOffset> + <minHorizontalAlignment>1</minHorizontalAlignment> + <baseHorizontalAlignment>180</baseHorizontalAlignment> + <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> + <minimumMediaSize>144 144</minimumMediaSize> + <maximumMediaSize>936 86400</maximumMediaSize> + <maximumImageableArea>936 86400</maximumImageableArea> + <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 9 9</margins> + <margins interleave="printer" media="roll">9 9 9 9</margins> + <CDOffset>201 162</CDOffset> + <CDMediaSize>595 842</CDMediaSize> + <extraBottom>24</extraBottom> + <ChannelNames> + <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"/> + <ChannelName translate="text" name="Red" text="Red"/> + </ChannelNames> + <resolutions> + <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> + <physicalResolution>360 180</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.360000</parameter> + <parameter type="float" name="DropSize2">0.600000</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">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.360000</parameter> + <parameter type="float" name="DropSize2">0.600000</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">2.450000</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.360000</parameter> + <parameter type="float" name="DropSize2">0.600000</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">1.550000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.130000</parameter> + <parameter type="float" name="DropSize2">0.440000</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.775000</parameter> + <parameter type="integer" name="escp2_ink_type">18</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.130000</parameter> + <parameter type="float" name="DropSize2">0.440000</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.387000</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.130000</parameter> + <parameter type="float" name="DropSize2">0.440000</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.193500</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.130000</parameter> + <parameter type="float" name="DropSize2">0.440000</parameter> + <parameter type="float" name="DropSize3">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.096750</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.130000</parameter> + <parameter type="float" name="DropSize2">0.440000</parameter> + <parameter type="float" name="DropSize3">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.096750</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.130000</parameter> + <parameter type="float" name="DropSize2">0.440000</parameter> + <parameter type="float" name="DropSize3">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.109940</parameter> + <parameter type="integer" name="escp2_ink_type">19</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.295454</parameter> + <parameter type="float" name="DropSize2">1.000000</parameter> + </resolution> + </resolutions> +</escp2Model> +</gutenprint> diff --git a/src/xml/escp2/model/model_14.xml b/src/xml/escp2/model/model_14.xml index 39e7f14..7349ed3 100644 --- a/src/xml/escp2/model/model_14.xml +++ b/src/xml/escp2/model/model_14.xml @@ -17,137 +17,11 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="14"> - <media src="escp2/media/photo_gen1.xml"/> +<escp2Model id="14" base="escp2/model/base/sp750.xml"> <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/photo_gen1.xml"/> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>1999</commandSet> - <borderless>No</borderless> - <supportsVariableDropsizes/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>48</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>684 3168</maximumMediaSize> <maximumImageableArea>612 3168</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> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</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.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">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.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.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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.568000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.568000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.284000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.284000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_15.xml b/src/xml/escp2/model/model_15.xml index 6a89096..f579d78 100644 --- a/src/xml/escp2/model/model_15.xml +++ b/src/xml/escp2/model/model_15.xml @@ -17,137 +17,11 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="15"> - <media src="escp2/media/photo_gen1.xml"/> +<escp2Model id="15" base="escp2/model/base/sp750.xml"> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/photo_gen1.xml"/> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>1999</commandSet> - <borderless>No</borderless> - <supportsVariableDropsizes/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>48</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>936 3168</maximumMediaSize> <maximumImageableArea>936 3168</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> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</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.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">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.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.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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.568000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.568000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.284000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.284000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_16.xml b/src/xml/escp2/model/model_16.xml index ccadc24..5dce5a3 100644 --- a/src/xml/escp2/model/model_16.xml +++ b/src/xml/escp2/model/model_16.xml @@ -17,148 +17,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="16"> - <media src="escp2/media/standard.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/standard.xml"/> +<escp2Model id="16" base="escp2/model/base/c7xx.xml"> + <resolutions src="escp2/resolutions/sc860.xml"/> <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>1999</commandSet> - <borderless>No</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>48</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <headConfiguration type="black"> - <Nozzles>144</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>144</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>684 3168</maximumMediaSize> <maximumImageableArea>612 3168</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> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 120</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</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">1.300000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</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">0.650000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</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.568000</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="720hq" text="720 DPI High Quality"> - <physicalResolution>720 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.568000</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="1440x720sw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <parameter type="float" name="escp2_density">0.523000</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.330000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.523000</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.330000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_17.xml b/src/xml/escp2/model/model_17.xml index 128bd72..2af8915 100644 --- a/src/xml/escp2/model/model_17.xml +++ b/src/xml/escp2/model/model_17.xml @@ -17,148 +17,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="17"> - <media src="escp2/media/standard.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/standard.xml"/> +<escp2Model id="17" base="escp2/model/base/c7xx.xml"> + <resolutions src="escp2/resolutions/sc860.xml"/> <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>1999</commandSet> - <borderless>No</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>48</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <headConfiguration type="black"> - <Nozzles>144</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>144</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>936 3168</maximumMediaSize> <maximumImageableArea>936 3168</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> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 120</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</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">1.300000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</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">0.650000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</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.568000</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="720hq" text="720 DPI High Quality"> - <physicalResolution>720 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.568000</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="1440x720sw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <parameter type="float" name="escp2_density">0.523000</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.330000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.523000</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.330000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_18.xml b/src/xml/escp2/model/model_18.xml index f436655..487d5d6 100644 --- a/src/xml/escp2/model/model_18.xml +++ b/src/xml/escp2/model/model_18.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="18"> +<escp2Model id="18" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -40,7 +39,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>4</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>90 90</minimumResolution> <maximumResolution>1440 720</maximumResolution> diff --git a/src/xml/escp2/model/model_2.xml b/src/xml/escp2/model/model_2.xml index 0000b81..72691aa 100644 --- a/src/xml/escp2/model/model_2.xml +++ b/src/xml/escp2/model/model_2.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="2"> +<escp2Model id="2" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/cmy.xml"/> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -36,7 +35,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>1</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <minimumResolution>90 90</minimumResolution> <maximumResolution>720 720</maximumResolution> <separationRows>1</separationRows> diff --git a/src/xml/escp2/model/model_20.xml b/src/xml/escp2/model/model_20.xml index 17101c1..c434302 100644 --- a/src/xml/escp2/model/model_20.xml +++ b/src/xml/escp2/model/model_20.xml @@ -17,14 +17,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="20"> +<escp2Model id="20" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/photo_gen1.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> <inkGroup src="escp2/inks/photo_gen1.xml"/> + <resolutions src="escp2/resolutions/sp720.xml"/> <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> @@ -41,7 +41,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>4</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>90 90</minimumResolution> <maximumResolution>1440 720</maximumResolution> @@ -65,99 +64,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <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"> - <physicalResolution>360 90</physicalResolution> - <parameter type="float" name="escp2_density">4.000000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="180sw" text="180 DPI Economy"> - <physicalResolution>180 180</physicalResolution> - <parameter type="float" name="escp2_density">4.000000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <parameter type="float" name="escp2_density">4.000000</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.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">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.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.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="720sw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <parameter type="float" name="escp2_density">0.568000</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="720hq" text="720 DPI High Quality"> - <physicalResolution>720 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.568000</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="1440x720sw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <parameter type="float" name="escp2_density">0.284000</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="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.284000</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> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_21.xml b/src/xml/escp2/model/model_21.xml index ea2ae3f..81638fa 100644 --- a/src/xml/escp2/model/model_21.xml +++ b/src/xml/escp2/model/model_21.xml @@ -17,141 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="21"> - <media src="escp2/media/x80.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/x80.xml"/> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> - <borderless>No</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsInkChange/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>15</Nozzles> - <MinNozzles>15</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <headConfiguration type="black"> - <Nozzles>48</Nozzles> - <MinNozzles>48</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>48</Nozzles> - <MinNozzles>48</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> +<escp2Model id="21" base="escp2/model/base/c2x.xml"> <maxBlackResolution>360</maxBlackResolution> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>720 720</maximumResolution> - <separationRows>1</separationRows> - <initialVerticalOffset>-99</initialVerticalOffset> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> - <maximumMediaSize>684 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> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 120</physicalResolution> - <parameter type="float" name="escp2_density">2.800000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</physicalResolution> - <parameter type="float" name="escp2_density">2.800000</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.325000</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">1.400000</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.325000</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">0.700000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.710000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.710000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720hq2" text="720 DPI Highest Quality"> - <physicalResolution>720 720</physicalResolution> - <verticalPasses>4</verticalPasses> - <parameter type="float" name="escp2_density">0.710000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_22.xml b/src/xml/escp2/model/model_22.xml index cf35f7f..5c146bb 100644 --- a/src/xml/escp2/model/model_22.xml +++ b/src/xml/escp2/model/model_22.xml @@ -17,139 +17,13 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="22"> - <media src="escp2/media/photo_gen2.xml"/> +<escp2Model id="22" base="escp2/model/base/photo2.xml"> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/photo_gen2.xml"/> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> - <borderless>Yes</borderless> - <supportsVariableDropsizes/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>48</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> + <resolutions src="escp2/resolutions/sc860.xml"/> <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>684 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> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 120</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</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">1.300000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</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">0.650000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</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.568000</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="720hq" text="720 DPI High Quality"> - <physicalResolution>720 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.568000</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="1440x720sw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <parameter type="float" name="escp2_density">0.523000</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.330000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.523000</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.330000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_23.xml b/src/xml/escp2/model/model_23.xml index 94d2c59..6e106da 100644 --- a/src/xml/escp2/model/model_23.xml +++ b/src/xml/escp2/model/model_23.xml @@ -17,139 +17,13 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="23"> - <media src="escp2/media/photo_gen2.xml"/> +<escp2Model id="23" base="escp2/model/base/photo2.xml"> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/photo_gen2.xml"/> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> - <borderless>Yes</borderless> - <supportsVariableDropsizes/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>48</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> + <resolutions src="escp2/resolutions/sc860.xml"/> <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>936 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> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 120</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</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">1.300000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</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">0.650000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.580000</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.568000</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="720hq" text="720 DPI High Quality"> - <physicalResolution>720 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.568000</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="1440x720sw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <parameter type="float" name="escp2_density">0.523000</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.330000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.523000</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.330000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_24.xml b/src/xml/escp2/model/model_24.xml index 0e892e6..bcda0c4 100644 --- a/src/xml/escp2/model/model_24.xml +++ b/src/xml/escp2/model/model_24.xml @@ -17,127 +17,16 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="24"> - <media src="escp2/media/standard_gen0.xml"/> +<escp2Model id="24" base="escp2/model/base/sc800.xml"> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/standard_gen0.xml"/> - <commandSet>1998</commandSet> - <borderless>No</borderless> <hasFastGraymode/> - <sendZeroAdvance/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>64</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <minimumResolution>180 180</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <pseudoSeparationRows>4</pseudoSeparationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>1224 3168</maximumMediaSize> <maximumImageableArea>1224 3168</maximumImageableArea> <margins interleave="soft" media="sheet">8 9 9 40</margins> <margins interleave="printer" media="sheet">8 9 9 40</margins> <margins interleave="soft" media="roll">8 9 0 0</margins> <margins interleave="printer" media="roll">8 9 0 0</margins> - <AlignmentChoices>1 7 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>180 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360mw" text="360 DPI High Quality"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360sw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <parameter type="float" name="escp2_density">0.650000</parameter> - <parameter type="integer" name="escp2_ink_type">2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720sw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.388000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">360</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">360</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_25.xml b/src/xml/escp2/model/model_25.xml index cf689bc..d20b151 100644 --- a/src/xml/escp2/model/model_25.xml +++ b/src/xml/escp2/model/model_25.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="25"> +<escp2Model id="25" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -54,7 +53,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>2</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>90 90</minimumResolution> <maximumResolution>1440 720</maximumResolution> diff --git a/src/xml/escp2/model/model_26.xml b/src/xml/escp2/model/model_26.xml index 1d25396..be40607 100644 --- a/src/xml/escp2/model/model_26.xml +++ b/src/xml/escp2/model/model_26.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="26"> +<escp2Model id="26" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/photo_pigment.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -53,7 +52,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>1</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>90 90</minimumResolution> <maximumResolution>1440 720</maximumResolution> diff --git a/src/xml/escp2/model/model_27.xml b/src/xml/escp2/model/model_27.xml index 4e7d862..f6285c7 100644 --- a/src/xml/escp2/model/model_27.xml +++ b/src/xml/escp2/model/model_27.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="27"> +<escp2Model id="27" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/photo_gen0.xml"/> <inputSlots src="escp2/inputslots/spro5000.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -36,7 +35,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>2</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <minimumResolution>180 180</minimumResolution> <maximumResolution>1440 720</maximumResolution> <separationRows>1</separationRows> diff --git a/src/xml/escp2/model/model_28.xml b/src/xml/escp2/model/model_28.xml index cbf66cf..ededc8b 100644 --- a/src/xml/escp2/model/model_28.xml +++ b/src/xml/escp2/model/model_28.xml @@ -17,114 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="28"> - <media src="escp2/media/pro_gen1.xml"/> - <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/pro_gen1.xml"/> - <printerWeaves src="escp2/weaves/pro7000.xml"/> - <commandSet>Pro</commandSet> - <borderless>No</borderless> - <sendZeroAdvance/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>504 504</minimumMediaSize> +<escp2Model id="28" base="escp2/model/base/pro_x000.xml"> <maximumMediaSize>1728 86400</maximumMediaSize> <maximumImageableArea>1728 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="roll">9 9 9 9</margins> - <margins interleave="printer" media="roll">9 9 9 9</margins> - <AlignmentChoices>1 7 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 90</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="180dpi" text="180 DPI Economy"> - <physicalResolution>180 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_29.xml b/src/xml/escp2/model/model_29.xml index 3d9cdcf..49c53e6 100644 --- a/src/xml/escp2/model/model_29.xml +++ b/src/xml/escp2/model/model_29.xml @@ -17,114 +17,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="29"> - <media src="escp2/media/pro_pigment.xml"/> +<escp2Model id="29" base="escp2/model/base/pro_x500.xml"> <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/pro_pigment.xml"/> - <printerWeaves src="escp2/weaves/pro7500.xml"/> - <commandSet>Pro</commandSet> - <borderless>No</borderless> - <sendZeroAdvance/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> <minimumMediaSize>504 504</minimumMediaSize> <maximumMediaSize>1728 86400</maximumMediaSize> <maximumImageableArea>1728 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="roll">9 9 9 9</margins> <margins interleave="printer" media="roll">9 9 9 9</margins> - <AlignmentChoices>1 7 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 90</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">3.000000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="180dpi" text="180 DPI Economy"> - <physicalResolution>180 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">3.000000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">3.000000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.500000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.780000</parameter> - <parameter type="integer" name="escp2_ink_type">2</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_3.xml b/src/xml/escp2/model/model_3.xml index 5026741..8a473e6 100644 --- a/src/xml/escp2/model/model_3.xml +++ b/src/xml/escp2/model/model_3.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="3"> +<escp2Model id="3" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/standard_gen0.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -36,7 +35,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>4</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <minimumResolution>90 90</minimumResolution> <maximumResolution>1440 720</maximumResolution> <separationRows>1</separationRows> diff --git a/src/xml/escp2/model/model_30.xml b/src/xml/escp2/model/model_30.xml index 2246b7c..5f03987 100644 --- a/src/xml/escp2/model/model_30.xml +++ b/src/xml/escp2/model/model_30.xml @@ -17,114 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="30"> - <media src="escp2/media/pro_gen1.xml"/> - <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/pro_gen1.xml"/> - <printerWeaves src="escp2/weaves/pro7000.xml"/> - <commandSet>Pro</commandSet> - <borderless>No</borderless> - <sendZeroAdvance/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>504 504</minimumMediaSize> +<escp2Model id="30" base="escp2/model/base/pro_x000.xml"> <maximumMediaSize>3168 86400</maximumMediaSize> <maximumImageableArea>3168 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="roll">9 9 9 9</margins> - <margins interleave="printer" media="roll">9 9 9 9</margins> - <AlignmentChoices>1 7 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 90</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="180dpi" text="180 DPI Economy"> - <physicalResolution>180 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_31.xml b/src/xml/escp2/model/model_31.xml index 0418908..30ce2b5 100644 --- a/src/xml/escp2/model/model_31.xml +++ b/src/xml/escp2/model/model_31.xml @@ -17,114 +17,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="31"> - <media src="escp2/media/pro_pigment.xml"/> +<escp2Model id="31" base="escp2/model/base/pro_x500.xml"> <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/pro_pigment.xml"/> - <printerWeaves src="escp2/weaves/pro7500.xml"/> - <commandSet>Pro</commandSet> - <borderless>No</borderless> - <sendZeroAdvance/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> <minimumMediaSize>504 504</minimumMediaSize> <maximumMediaSize>3168 86400</maximumMediaSize> <maximumImageableArea>3168 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="roll">9 9 9 9</margins> <margins interleave="printer" media="roll">9 9 9 9</margins> - <AlignmentChoices>1 7 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 90</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">3.000000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="180dpi" text="180 DPI Economy"> - <physicalResolution>180 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">3.000000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">3.000000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.500000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.780000</parameter> - <parameter type="integer" name="escp2_ink_type">2</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_32.xml b/src/xml/escp2/model/model_32.xml index d4572c0..b694d3c 100644 --- a/src/xml/escp2/model/model_32.xml +++ b/src/xml/escp2/model/model_32.xml @@ -17,14 +17,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="32"> +<escp2Model id="32" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> <inkGroup src="escp2/inks/standard.xml"/> + <resolutions src="escp2/resolutions/sc680.xml"/> <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> @@ -54,7 +54,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>1</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>90 90</minimumResolution> <maximumResolution>2880 720</maximumResolution> @@ -76,99 +75,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <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"> - <physicalResolution>360 120</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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">1.300000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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">0.650000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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.650000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.650000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.650000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720sw" text="2880 x 720 DPI"> - <physicalResolution>2880 720</physicalResolution> - <parameter type="float" name="escp2_density">0.325000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720hq2" text="2880 x 720 DPI Highest Quality"> - <physicalResolution>2880 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.325000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_34.xml b/src/xml/escp2/model/model_34.xml index 5aef30b..539dabe 100644 --- a/src/xml/escp2/model/model_34.xml +++ b/src/xml/escp2/model/model_34.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="34"> +<escp2Model id="34" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -54,7 +53,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>1</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>180 180</minimumResolution> <maximumResolution>2880 720</maximumResolution> diff --git a/src/xml/escp2/model/model_35.xml b/src/xml/escp2/model/model_35.xml index 767ce06..55a95fb 100644 --- a/src/xml/escp2/model/model_35.xml +++ b/src/xml/escp2/model/model_35.xml @@ -17,152 +17,16 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="35"> - <media src="escp2/media/photo_gen2.xml"/> +<escp2Model id="35" base="escp2/model/base/photo2.xml"> <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/photo_gen2.xml"/> + <resolutions src="escp2/resolutions/sc680.xml"/> <verticalBorderlessSequence>SN\003\000\000\000\002SN\003\000\000\001\001SN\003\000\000\011\001</verticalBorderlessSequence> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> - <borderless>Yes</borderless> - <supportsVariableDropsizes/> <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>48</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> <maximumResolution>2880 720</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>684 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> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 120</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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">1.300000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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">0.650000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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.650000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.650000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.650000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720sw" text="2880 x 720 DPI"> - <physicalResolution>2880 720</physicalResolution> - <parameter type="float" name="escp2_density">0.325000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720hq2" text="2880 x 720 DPI Highest Quality"> - <physicalResolution>2880 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.325000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_36.xml b/src/xml/escp2/model/model_36.xml index bbf4c6f..6feec70 100644 --- a/src/xml/escp2/model/model_36.xml +++ b/src/xml/escp2/model/model_36.xml @@ -17,152 +17,16 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="36"> - <media src="escp2/media/photo_gen2.xml"/> +<escp2Model id="36" base="escp2/model/base/photo2.xml"> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/photo_gen2.xml"/> + <resolutions src="escp2/resolutions/sc680.xml"/> <verticalBorderlessSequence>SN\003\000\000\000\010SN\003\000\000\001\001SN\003\000\000\002\000SN\003\000\000\007\000SN\003\000\000\011\001</verticalBorderlessSequence> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> - <borderless>Yes</borderless> - <supportsVariableDropsizes/> <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>48</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> <maximumResolution>2880 720</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>684 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> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 120</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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">1.300000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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">0.650000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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.650000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.650000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.650000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720sw" text="2880 x 720 DPI"> - <physicalResolution>2880 720</physicalResolution> - <parameter type="float" name="escp2_density">0.325000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720hq2" text="2880 x 720 DPI Highest Quality"> - <physicalResolution>2880 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.325000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_37.xml b/src/xml/escp2/model/model_37.xml index 067de1e..51d5a24 100644 --- a/src/xml/escp2/model/model_37.xml +++ b/src/xml/escp2/model/model_37.xml @@ -17,152 +17,16 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="37"> - <media src="escp2/media/photo_gen2.xml"/> +<escp2Model id="37" base="escp2/model/base/photo2.xml"> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/photo_gen2.xml"/> + <resolutions src="escp2/resolutions/sc680.xml"/> <verticalBorderlessSequence>SN\003\000\000\011\001</verticalBorderlessSequence> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> - <borderless>Yes</borderless> - <supportsVariableDropsizes/> <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>48</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> <maximumResolution>2880 720</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>936 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> <extraBottom>24</extraBottom> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 120</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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">1.300000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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">0.650000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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.650000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.650000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.650000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720sw" text="2880 x 720 DPI"> - <physicalResolution>2880 720</physicalResolution> - <parameter type="float" name="escp2_density">0.325000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720hq2" text="2880 x 720 DPI Highest Quality"> - <physicalResolution>2880 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.325000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_38.xml b/src/xml/escp2/model/model_38.xml index 9e79c9c..ea51bd4 100644 --- a/src/xml/escp2/model/model_38.xml +++ b/src/xml/escp2/model/model_38.xml @@ -17,151 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="38"> - <media src="escp2/media/x80.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/x80.xml"/> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> - <borderless>No</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsInkChange/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>15</Nozzles> - <MinNozzles>15</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <headConfiguration type="black"> - <Nozzles>48</Nozzles> - <MinNozzles>48</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>48</Nozzles> - <MinNozzles>48</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> +<escp2Model id="38" base="escp2/model/base/c4x.xml"> <maxBlackResolution>360</maxBlackResolution> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <initialVerticalOffset>-99</initialVerticalOffset> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> - <maximumMediaSize>684 86400</maximumMediaSize> - <maximumImageableArea>612 86400</maximumImageableArea> - <margins interleave="soft" media="sheet">9 9 0 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="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"> - <physicalResolution>360 120</physicalResolution> - <parameter type="float" name="escp2_density">2.800000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</physicalResolution> - <parameter type="float" name="escp2_density">2.800000</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.325000</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">1.400000</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.325000</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">0.700000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.710000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.710000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.355000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.355000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_39.xml b/src/xml/escp2/model/model_39.xml index a3c4890..f7152d0 100644 --- a/src/xml/escp2/model/model_39.xml +++ b/src/xml/escp2/model/model_39.xml @@ -17,109 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="39"> - <media src="escp2/media/standard_gen0.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/standard_gen0.xml"/> - <commandSet>1998</commandSet> - <borderless>No</borderless> - <sendZeroAdvance/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>16</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>4</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>720 720</maximumResolution> - <separationRows>1</separationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="39" base="escp2/model/base/cpro.xml"> <maximumMediaSize>936 86400</maximumMediaSize> <maximumImageableArea>936 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>1 7 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 90</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="180dpi" text="180 DPI Economy"> - <physicalResolution>180 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360mw" text="360 DPI High Quality"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.300000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.568000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_4.xml b/src/xml/escp2/model/model_4.xml index a64973e..f44a213 100644 --- a/src/xml/escp2/model/model_4.xml +++ b/src/xml/escp2/model/model_4.xml @@ -17,126 +17,15 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="4"> - <media src="escp2/media/standard_gen0.xml"/> +<escp2Model id="4" base="escp2/model/base/sc800.xml"> <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/standard_gen0.xml"/> - <commandSet>1998</commandSet> - <borderless>No</borderless> - <sendZeroAdvance/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>64</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <minimumResolution>180 180</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <pseudoSeparationRows>4</pseudoSeparationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>684 3168</maximumMediaSize> <maximumImageableArea>612 3168</maximumImageableArea> <margins interleave="soft" media="sheet">8 9 9 40</margins> <margins interleave="printer" media="sheet">8 9 9 40</margins> <margins interleave="soft" media="roll">8 9 0 0</margins> <margins interleave="printer" media="roll">8 9 0 0</margins> - <AlignmentChoices>1 7 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>180 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360mw" text="360 DPI High Quality"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360sw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <parameter type="float" name="escp2_density">0.650000</parameter> - <parameter type="integer" name="escp2_ink_type">2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720sw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.388000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">360</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">360</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_40.xml b/src/xml/escp2/model/model_40.xml index 6efa562..3a51ee5 100644 --- a/src/xml/escp2/model/model_40.xml +++ b/src/xml/escp2/model/model_40.xml @@ -17,114 +17,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="40"> - <media src="escp2/media/pro_pigment.xml"/> +<escp2Model id="40" base="escp2/model/base/pro_x500.xml"> <inputSlots src="escp2/inputslots/spro5000.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/pro_pigment.xml"/> - <printerWeaves src="escp2/weaves/pro7500.xml"/> - <commandSet>Pro</commandSet> - <borderless>No</borderless> - <sendZeroAdvance/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>936 86400</maximumMediaSize> <maximumImageableArea>936 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="roll">9 9 0 0</margins> <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>1 7 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 90</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">3.000000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="180dpi" text="180 DPI Economy"> - <physicalResolution>180 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">3.000000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">3.000000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.500000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.780000</parameter> - <parameter type="integer" name="escp2_ink_type">2</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_41.xml b/src/xml/escp2/model/model_41.xml index e79f7d6..14a2d34 100644 --- a/src/xml/escp2/model/model_41.xml +++ b/src/xml/escp2/model/model_41.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="41"> +<escp2Model id="41" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/pro_gen2.xml"/> <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -37,7 +36,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>1</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>90 90</minimumResolution> <maximumResolution>1440 720</maximumResolution> diff --git a/src/xml/escp2/model/model_42.xml b/src/xml/escp2/model/model_42.xml index 018e8fd..8808790 100644 --- a/src/xml/escp2/model/model_42.xml +++ b/src/xml/escp2/model/model_42.xml @@ -17,140 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="42"> - <media src="escp2/media/x80.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/x80.xml"/> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> - <borderless>No</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsInkChange/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>15</Nozzles> - <MinNozzles>15</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <headConfiguration type="black"> - <Nozzles>48</Nozzles> - <MinNozzles>48</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>48</Nozzles> - <MinNozzles>48</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>720 720</maximumResolution> - <separationRows>1</separationRows> - <initialVerticalOffset>-99</initialVerticalOffset> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> - <maximumMediaSize>684 86400</maximumMediaSize> - <maximumImageableArea>612 86400</maximumImageableArea> - <margins interleave="soft" media="sheet">9 9 0 9</margins> +<escp2Model id="42" base="escp2/model/base/c2x.xml"> <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="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"> - <physicalResolution>360 120</physicalResolution> - <parameter type="float" name="escp2_density">2.800000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</physicalResolution> - <parameter type="float" name="escp2_density">2.800000</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.325000</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">1.400000</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.325000</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">0.700000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.710000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.710000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720hq2" text="720 DPI Highest Quality"> - <physicalResolution>720 720</physicalResolution> - <verticalPasses>4</verticalPasses> - <parameter type="float" name="escp2_density">0.710000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_43.xml b/src/xml/escp2/model/model_43.xml index e495fe4..6dbec17 100644 --- a/src/xml/escp2/model/model_43.xml +++ b/src/xml/escp2/model/model_43.xml @@ -17,150 +17,8 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="43"> - <media src="escp2/media/x80.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/x80.xml"/> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> - <borderless>No</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsInkChange/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>15</Nozzles> - <MinNozzles>15</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <headConfiguration type="black"> - <Nozzles>48</Nozzles> - <MinNozzles>48</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>48</Nozzles> - <MinNozzles>48</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <initialVerticalOffset>-99</initialVerticalOffset> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> - <maximumMediaSize>684 86400</maximumMediaSize> - <maximumImageableArea>612 86400</maximumImageableArea> - <margins interleave="soft" media="sheet">9 9 0 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="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"> - <physicalResolution>360 120</physicalResolution> - <parameter type="float" name="escp2_density">2.800000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</physicalResolution> - <parameter type="float" name="escp2_density">2.800000</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.325000</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">1.400000</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.325000</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">0.700000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.710000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.710000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.355000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.355000</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.325000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> +<escp2Model id="43" base="escp2/model/base/c4x.xml"> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_44.xml b/src/xml/escp2/model/model_44.xml index 0f8b4a5..4b20e5a 100644 --- a/src/xml/escp2/model/model_44.xml +++ b/src/xml/escp2/model/model_44.xml @@ -17,147 +17,21 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="44"> +<escp2Model id="44" base="escp2/model/base/c8x_base.xml"> <media src="escp2/media/c80.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> <inkGroup src="escp2/inks/c80.xml"/> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> <borderless>No</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Portrait</preferredEnvelopeOrientation> <headConfiguration type="default"> <Nozzles>60</Nozzles> <MinNozzles>60</MinNozzles> <FirstNozzle>0</FirstNozzle> <NozzleSeparation>2</NozzleSeparation> </headConfiguration> - <headConfiguration type="black"> - <Nozzles>180</Nozzles> - <MinNozzles>180</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>180</Nozzles> - <MinNozzles>180</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> <maximumResolution>2880 1440</maximumResolution> - <separationRows>1</separationRows> - <initialVerticalOffset>-240</initialVerticalOffset> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> - <maximumMediaSize>612 86400</maximumMediaSize> - <maximumImageableArea>612 86400</maximumImageableArea> <margins interleave="soft" media="sheet">9 9 0 0</margins> <margins interleave="printer" media="sheet">9 9 0 0</margins> - <margins interleave="soft" media="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>4 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 180</physicalResolution> - <parameter type="float" name="escp2_density">2.400000</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.000000</parameter> - <parameter type="float" name="DropSize2">0.000000</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">1.200000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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">0.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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.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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720sw" text="2880 x 720 DPI"> - <physicalResolution>2880 720</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">0.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440sw" text="1440 x 1440 DPI"> - <physicalResolution>1440 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">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.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">0.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_45.xml b/src/xml/escp2/model/model_45.xml index 12aec03..dc5f901 100644 --- a/src/xml/escp2/model/model_45.xml +++ b/src/xml/escp2/model/model_45.xml @@ -17,109 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="45"> - <media src="escp2/media/standard_gen0.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/standard_gen0.xml"/> - <commandSet>1998</commandSet> - <borderless>No</borderless> - <sendZeroAdvance/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>16</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>4</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>720 720</maximumResolution> - <separationRows>1</separationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="45" base="escp2/model/base/cpro.xml"> <maximumMediaSize>684 3168</maximumMediaSize> <maximumImageableArea>612 3168</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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>1 7 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 90</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="180dpi" text="180 DPI Economy"> - <physicalResolution>180 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360mw" text="360 DPI High Quality"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.300000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.568000</parameter> - <parameter type="integer" name="escp2_ink_type">-2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_46.xml b/src/xml/escp2/model/model_46.xml index b1ebfec..2fffe80 100644 --- a/src/xml/escp2/model/model_46.xml +++ b/src/xml/escp2/model/model_46.xml @@ -17,59 +17,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="46"> +<escp2Model id="46" base="escp2/model/base/sp950.xml"> <media src="escp2/media/f360_photo.xml"/> - <inputSlots src="escp2/inputslots/cd_cutter_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> <inkGroup src="escp2/inks/f360_photo.xml"/> - <verticalBorderlessSequence>SN4\000\000\002\027\000\000\000\000\000\000\001\003\000\204\003\252\000\204\006\270\004\364\006v\005\230\011\226\000\304\004\226\000\206\002\270\012\031\030\031\031\031\031\004444\004\001\000\000\040\011</verticalBorderlessSequence> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> - <borderless>Yes</borderless> - <supportsVariableDropsizes/> <hasFastGraymode/> - <hasFast360DPI/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>96</Nozzles> - <MinNozzles>96</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>24</Nozzles> - <MinNozzles>24</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 1440</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> - <maximumMediaSize>684 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> - <CDOffset>204 191</CDOffset> - <extraBottom>24</extraBottom> - <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> <ChannelName translate="text" name="Black" text="Black"/> <ChannelName translate="text" name="Cyan" text="Cyan"/> @@ -79,65 +32,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <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"> - <physicalResolution>360 180</physicalResolution> - <parameter type="float" name="escp2_density">2.000000</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.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">1.000000</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.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">0.500000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.650000</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="1440x720sw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <parameter type="float" name="escp2_density">0.325000</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.650000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_47.xml b/src/xml/escp2/model/model_47.xml index 8073e8e..1634d76 100644 --- a/src/xml/escp2/model/model_47.xml +++ b/src/xml/escp2/model/model_47.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="47"> +<escp2Model id="47" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/f360_ultrachrome.xml"/> <inputSlots src="escp2/inputslots/cd_cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -50,7 +49,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>1</NozzleSeparation> </headConfiguration> <physicalChannels>7</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 180</minimumResolution> <maximumResolution>2880 1440</maximumResolution> diff --git a/src/xml/escp2/model/model_48.xml b/src/xml/escp2/model/model_48.xml index 7d5abc8..d16047f 100644 --- a/src/xml/escp2/model/model_48.xml +++ b/src/xml/escp2/model/model_48.xml @@ -17,123 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="48"> - <media src="escp2/media/pro_ultrachrome.xml"/> - <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/pro_ultrachrome.xml"/> - <printerWeaves src="escp2/weaves/pro7600.xml"/> - <verticalBorderlessSequence>SN\003\000\000\011\001</verticalBorderlessSequence> - <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> - <commandSet>Pro</commandSet> - <borderless>Yes</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>7</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 1440</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="48" base="escp2/model/base/pro_x800.xml"> <maximumMediaSize>1728 86400</maximumMediaSize> <maximumImageableArea>1728 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="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="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"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.300000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.160000</parameter> - <parameter type="float" name="DropSize2">0.400000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.150000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.160000</parameter> - <parameter type="float" name="DropSize2">0.400000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.580000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.160000</parameter> - <parameter type="float" name="DropSize2">0.400000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.766000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.200000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.200000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.479000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_49.xml b/src/xml/escp2/model/model_49.xml index 376c78f..7339684 100644 --- a/src/xml/escp2/model/model_49.xml +++ b/src/xml/escp2/model/model_49.xml @@ -17,123 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="49"> - <media src="escp2/media/pro_ultrachrome.xml"/> - <inputSlots src="escp2/inputslots/pro_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/pro_ultrachrome.xml"/> - <printerWeaves src="escp2/weaves/pro7600.xml"/> - <verticalBorderlessSequence>SN\003\000\000\011\001</verticalBorderlessSequence> - <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> - <commandSet>Pro</commandSet> - <borderless>Yes</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>7</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 1440</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="49" base="escp2/model/base/pro_x800.xml"> <maximumMediaSize>3168 86400</maximumMediaSize> <maximumImageableArea>3168 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="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="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"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.300000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.160000</parameter> - <parameter type="float" name="DropSize2">0.400000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.150000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.160000</parameter> - <parameter type="float" name="DropSize2">0.400000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.580000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.160000</parameter> - <parameter type="float" name="DropSize2">0.400000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.766000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.200000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.200000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.479000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_5.xml b/src/xml/escp2/model/model_5.xml index 412118e..7edfd57 100644 --- a/src/xml/escp2/model/model_5.xml +++ b/src/xml/escp2/model/model_5.xml @@ -17,126 +17,15 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="5"> - <media src="escp2/media/standard_gen0.xml"/> +<escp2Model id="5" base="escp2/model/base/sc800.xml"> <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/standard_gen0.xml"/> - <commandSet>1998</commandSet> - <borderless>No</borderless> - <sendZeroAdvance/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>64</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <minimumResolution>180 180</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <pseudoSeparationRows>4</pseudoSeparationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>684 3168</maximumMediaSize> <maximumImageableArea>612 3168</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="roll">9 9 0 0</margins> <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>1 7 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>180 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360mw" text="360 DPI High Quality"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360sw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <parameter type="float" name="escp2_density">0.650000</parameter> - <parameter type="integer" name="escp2_ink_type">2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720sw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.388000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">360</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">360</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_50.xml b/src/xml/escp2/model/model_50.xml index dace79a..bb4a2a2 100644 --- a/src/xml/escp2/model/model_50.xml +++ b/src/xml/escp2/model/model_50.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="50"> +<escp2Model id="50" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/photo_gen2.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -43,7 +42,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>90 90</minimumResolution> <maximumResolution>2880 1440</maximumResolution> diff --git a/src/xml/escp2/model/model_51.xml b/src/xml/escp2/model/model_51.xml index 5dfa7ba..463b26b 100644 --- a/src/xml/escp2/model/model_51.xml +++ b/src/xml/escp2/model/model_51.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="51"> +<escp2Model id="51" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/photo_gen2.xml"/> <inputSlots src="escp2/inputslots/cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -43,7 +42,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>90 90</minimumResolution> <maximumResolution>2880 1440</maximumResolution> diff --git a/src/xml/escp2/model/model_52.xml b/src/xml/escp2/model/model_52.xml index 2059577..d73bba9 100644 --- a/src/xml/escp2/model/model_52.xml +++ b/src/xml/escp2/model/model_52.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="52"> +<escp2Model id="52" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/standard.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -54,7 +53,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>1</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>90 90</minimumResolution> <maximumResolution>2880 1440</maximumResolution> diff --git a/src/xml/escp2/model/model_53.xml b/src/xml/escp2/model/model_53.xml index e598329..e16107b 100644 --- a/src/xml/escp2/model/model_53.xml +++ b/src/xml/escp2/model/model_53.xml @@ -17,58 +17,11 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="53"> +<escp2Model id="53" base="escp2/model/base/sp950.xml"> <media src="escp2/media/f360_photo7_japan.xml"/> - <inputSlots src="escp2/inputslots/cd_cutter_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> <inkGroup src="escp2/inks/f360_photo7_japan.xml"/> - <verticalBorderlessSequence>SN4\000\000\002\027\000\000\000\000\000\000\001\003\000\204\003\252\000\204\006\270\004\364\006v\005\230\011\226\000\304\004\226\000\206\002\270\012\031\030\031\031\031\031\004444\004\001\000\000\040\011</verticalBorderlessSequence> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> - <borderless>Yes</borderless> - <supportsVariableDropsizes/> - <hasFast360DPI/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>96</Nozzles> - <MinNozzles>96</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>24</Nozzles> - <MinNozzles>24</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 1440</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> - <maximumMediaSize>684 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> - <CDOffset>204 191</CDOffset> - <extraBottom>24</extraBottom> - <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> <ChannelName translate="text" name="Black" text="Black"/> <ChannelName translate="text" name="Cyan" text="Cyan"/> @@ -78,65 +31,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <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"> - <physicalResolution>360 180</physicalResolution> - <parameter type="float" name="escp2_density">2.000000</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.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">1.000000</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.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">0.500000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.650000</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="1440x720sw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <parameter type="float" name="escp2_density">0.325000</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.650000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_54.xml b/src/xml/escp2/model/model_54.xml index 68f3427..5a114fa 100644 --- a/src/xml/escp2/model/model_54.xml +++ b/src/xml/escp2/model/model_54.xml @@ -17,14 +17,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="54"> +<escp2Model id="54" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/photo_gen1.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> <inkGroup src="escp2/inks/photo_gen1.xml"/> + <resolutions src="escp2/resolutions/sp720.xml"/> <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> @@ -41,7 +41,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>4</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>90 90</minimumResolution> <maximumResolution>1440 720</maximumResolution> @@ -65,99 +64,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <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"> - <physicalResolution>360 90</physicalResolution> - <parameter type="float" name="escp2_density">4.000000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="180sw" text="180 DPI Economy"> - <physicalResolution>180 180</physicalResolution> - <parameter type="float" name="escp2_density">4.000000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <parameter type="float" name="escp2_density">4.000000</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.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">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.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.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="720sw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <parameter type="float" name="escp2_density">0.568000</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="720hq" text="720 DPI High Quality"> - <physicalResolution>720 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.568000</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="1440x720sw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <parameter type="float" name="escp2_density">0.284000</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="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.284000</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> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_55.xml b/src/xml/escp2/model/model_55.xml index 6aa8268..b1c9864 100644 --- a/src/xml/escp2/model/model_55.xml +++ b/src/xml/escp2/model/model_55.xml @@ -17,147 +17,19 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="55"> - <media src="escp2/media/c82.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/c82.xml"/> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> +<escp2Model id="55" base="escp2/model/base/c8x.xml"> <borderless>No</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Portrait</preferredEnvelopeOrientation> <headConfiguration type="default"> <Nozzles>59</Nozzles> <MinNozzles>60</MinNozzles> <FirstNozzle>0</FirstNozzle> <NozzleSeparation>2</NozzleSeparation> </headConfiguration> - <headConfiguration type="black"> - <Nozzles>180</Nozzles> - <MinNozzles>180</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>180</Nozzles> - <MinNozzles>180</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> <maximumResolution>2880 1440</maximumResolution> - <separationRows>1</separationRows> - <initialVerticalOffset>-240</initialVerticalOffset> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> - <maximumMediaSize>612 86400</maximumMediaSize> - <maximumImageableArea>612 86400</maximumImageableArea> <margins interleave="soft" media="sheet">9 9 0 0</margins> <margins interleave="printer" media="sheet">9 9 0 0</margins> - <margins interleave="soft" media="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>4 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 180</physicalResolution> - <parameter type="float" name="escp2_density">2.400000</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.000000</parameter> - <parameter type="float" name="DropSize2">0.000000</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">1.200000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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">0.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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.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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720sw" text="2880 x 720 DPI"> - <physicalResolution>2880 720</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">0.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440sw" text="1440 x 1440 DPI"> - <physicalResolution>1440 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">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.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">0.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_56.xml b/src/xml/escp2/model/model_56.xml index 774c270..eab921c 100644 --- a/src/xml/escp2/model/model_56.xml +++ b/src/xml/escp2/model/model_56.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="56"> +<escp2Model id="56" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/x80.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -54,7 +53,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>90 90</minimumResolution> <maximumResolution>1440 720</maximumResolution> diff --git a/src/xml/escp2/model/model_57.xml b/src/xml/escp2/model/model_57.xml index e22530a..1ee4200 100644 --- a/src/xml/escp2/model/model_57.xml +++ b/src/xml/escp2/model/model_57.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="57"> +<escp2Model id="57" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/f360_photo7_japan.xml"/> <inputSlots src="escp2/inputslots/cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -55,7 +54,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>1</NozzleSeparation> </headConfiguration> <physicalChannels>7</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>720 360</minimumResolution> <maximumResolution>2880 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_58.xml b/src/xml/escp2/model/model_58.xml index 3ddcd9c..3e16341 100644 --- a/src/xml/escp2/model/model_58.xml +++ b/src/xml/escp2/model/model_58.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="58"> +<escp2Model id="58" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/photo_gen2.xml"/> <inputSlots src="escp2/inputslots/cutter_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -42,7 +41,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>2</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>720 360</minimumResolution> <maximumResolution>2880 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_6.xml b/src/xml/escp2/model/model_6.xml index e483625..478ef11 100644 --- a/src/xml/escp2/model/model_6.xml +++ b/src/xml/escp2/model/model_6.xml @@ -17,126 +17,15 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="6"> - <media src="escp2/media/standard_gen0.xml"/> +<escp2Model id="6" base="escp2/model/base/sc800.xml"> <inputSlots src="escp2/inputslots/standard_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/standard_gen0.xml"/> - <commandSet>1998</commandSet> - <borderless>No</borderless> - <sendZeroAdvance/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>64</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <minimumResolution>180 180</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <pseudoSeparationRows>4</pseudoSeparationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>1224 3168</maximumMediaSize> <maximumImageableArea>979 3168</maximumImageableArea> <margins interleave="soft" media="sheet">8 9 9 40</margins> <margins interleave="printer" media="sheet">8 9 9 40</margins> <margins interleave="soft" media="roll">8 9 0 0</margins> <margins interleave="printer" media="roll">8 9 0 0</margins> - <AlignmentChoices>1 7 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>180 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360mw" text="360 DPI High Quality"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360sw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <parameter type="float" name="escp2_density">0.650000</parameter> - <parameter type="integer" name="escp2_ink_type">2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720sw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.388000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">360</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">360</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_60.xml b/src/xml/escp2/model/model_60.xml index 45a60c5..a35b5af 100644 --- a/src/xml/escp2/model/model_60.xml +++ b/src/xml/escp2/model/model_60.xml @@ -17,151 +17,23 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="60"> - <media src="escp2/media/c82.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/c82.xml"/> +<escp2Model id="60" base="escp2/model/base/c8x.xml"> <verticalBorderlessSequence>SNL\000\000\011\027\000\000\000\000\000\000\000\003\000\000\001\260\004\336\0044\001\000\002\000\000\000\0004\010h\020\030\025\310\031\340=\314\020\214\012\024\005\214\000\012\001,\001\000\000\017\017\017\017\017\017\017\017\004\012\004\017\017\017\017\017\006\004\000\001\001\001\000\000\370\007</verticalBorderlessSequence> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\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>59</Nozzles> <MinNozzles>60</MinNozzles> <FirstNozzle>0</FirstNozzle> <NozzleSeparation>2</NozzleSeparation> </headConfiguration> - <headConfiguration type="black"> - <Nozzles>180</Nozzles> - <MinNozzles>180</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>180</Nozzles> - <MinNozzles>180</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> <maximumResolution>2880 1440</maximumResolution> - <separationRows>1</separationRows> <zeroMarginOffset>80</zeroMarginOffset> <microLeftMargin>42</microLeftMargin> - <initialVerticalOffset>-240</initialVerticalOffset> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> <bidirectionalAutoUpperLimit>518400</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> - <AlignmentChoices>4 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 180</physicalResolution> - <parameter type="float" name="escp2_density">2.400000</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.000000</parameter> - <parameter type="float" name="DropSize2">0.000000</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">1.200000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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">0.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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.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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720sw" text="2880 x 720 DPI"> - <physicalResolution>2880 720</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">0.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440sw" text="1440 x 1440 DPI"> - <physicalResolution>1440 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">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.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">0.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_61.xml b/src/xml/escp2/model/model_61.xml index 5d7c1c7..bcc251b 100644 --- a/src/xml/escp2/model/model_61.xml +++ b/src/xml/escp2/model/model_61.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="61"> +<escp2Model id="61" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/c64.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -55,7 +54,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 120</minimumResolution> <maximumResolution>2880 1440</maximumResolution> diff --git a/src/xml/escp2/model/model_62.xml b/src/xml/escp2/model/model_62.xml index 553bc19..2d6839b 100644 --- a/src/xml/escp2/model/model_62.xml +++ b/src/xml/escp2/model/model_62.xml @@ -17,14 +17,14 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="62"> +<escp2Model id="62" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/photo_gen2.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> <inkGroup src="escp2/inks/photo_gen2.xml"/> + <resolutions src="escp2/resolutions/sc680.xml"/> <verticalBorderlessSequence>SN4\000\000\003\026\000\000\000\000\000\000\001\003\000\007d(\002j\215\0003\344\000\040P\000\207h\020\212\0038\002\360\001\324@\000\001\010\001baa`a\024\002\025\0271Z\011</verticalBorderlessSequence> <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> @@ -43,7 +43,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>90 90</minimumResolution> <maximumResolution>2880 720</maximumResolution> @@ -72,99 +71,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <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"> - <physicalResolution>360 120</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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">1.300000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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">0.650000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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.650000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.650000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.650000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720sw" text="2880 x 720 DPI"> - <physicalResolution>2880 720</physicalResolution> - <parameter type="float" name="escp2_density">0.325000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720hq2" text="2880 x 720 DPI Highest Quality"> - <physicalResolution>2880 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.325000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_63.xml b/src/xml/escp2/model/model_63.xml index bf4d705..0e61050 100644 --- a/src/xml/escp2/model/model_63.xml +++ b/src/xml/escp2/model/model_63.xml @@ -17,143 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="63"> - <media src="escp2/media/photo_gen3.xml"/> - <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/photo_gen3.xml"/> +<escp2Model id="63" base="escp2/model/base/r200.xml"> <verticalBorderlessSequence>SNP\000\000\014\027\000\000\000\000\000\000\000\003\000\001\001X\002\320\004G\001G\002\000\000\000\000P\010\204\020\030\025\310\031\340=\240\017\214\0120\005\214\000\012\001,\001\000\000\000\000\017\017\017\017\017\017\017\017\004\012\004\017\017\017\017\017\006\004\017\017\000\000\001\001\000\0010\010</verticalBorderlessSequence> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\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>90</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 120</minimumResolution> - <maximumResolution>2880 1440</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</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> - <CDOffset>204 191</CDOffset> - <CDMediaSize>595 842</CDMediaSize> - <extraBottom>24</extraBottom> - <AlignmentChoices>4 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.679000</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.150000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.657000</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.290000</parameter> - <parameter type="float" name="DropSize2">0.480000</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.328500</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.290000</parameter> - <parameter type="float" name="DropSize2">0.480000</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.164250</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.290000</parameter> - <parameter type="float" name="DropSize2">0.480000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_64.xml b/src/xml/escp2/model/model_64.xml index 225d682..7d46bfc 100644 --- a/src/xml/escp2/model/model_64.xml +++ b/src/xml/escp2/model/model_64.xml @@ -17,162 +17,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="64"> +<escp2Model id="64" base="escp2/model/base/r800.xml"> <media src="escp2/media/r800.xml"/> - <inputSlots src="escp2/inputslots/r1800.xml"/> - <qualityPresets src="escp2/qualitypresets/v2880.xml"/> - <inkGroup src="escp2/inks/cmykrb.xml"/> - <mediaSizes src="escp2/mediasizes/standard.xml"/> - <verticalBorderlessSequence>SNT\000\000\012\033\000\000\000\000\000\000\001\003\000\001\001\235\007T\001P\012\252\000\363\006?\002P\012\277\007(\002%\013,\001\253\000\037\001!\000\040\001\322\000\241\000\000\000\017\000\036\000\030\031\031\031\031\031\031\031\003\033\033ccccccccccc\002\000\001\000\001\001\362\014</verticalBorderlessSequence> - <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> - <commandSet>2000</commandSet> - <borderless>Yes</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Portrait</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>180</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>28800</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>5760 2880</maximumResolution> - <extraVerticalFeed>10</extraVerticalFeed> - <separationRows>1</separationRows> <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>180</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>16588800</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>612 86400</maximumMediaSize> <maximumImageableArea>612 86400</maximumImageableArea> - <margins interleave="soft" media="sheet">9 9 0 11</margins> - <margins interleave="printer" media="sheet">9 9 0 11</margins> - <margins interleave="soft" media="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <CDOffset>204 191</CDOffset> - <CDMediaSize>595 842</CDMediaSize> - <extraBottom>24</extraBottom> - <AlignmentChoices>4 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 180</physicalResolution> - <parameter type="float" name="escp2_density">2.800000</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">1.000000</parameter> - </resolution> - <resolution translate="text" name="360sw" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <parameter type="float" name="escp2_density">1.400000</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">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.000000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.350000</parameter> - <parameter type="float" name="DropSize2">0.700000</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">1.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.350000</parameter> - <parameter type="float" name="DropSize2">0.700000</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.869000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.200000</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.942000</parameter> - <parameter type="integer" name="escp2_ink_type">19</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.250000</parameter> - <parameter type="float" name="DropSize2">0.470000</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.471000</parameter> - <parameter type="integer" name="escp2_ink_type">19</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.250000</parameter> - <parameter type="float" name="DropSize2">0.470000</parameter> - <parameter type="float" name="DropSize3">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.235000</parameter> - <parameter type="integer" name="escp2_ink_type">19</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.249100</parameter> - <parameter type="float" name="DropSize2">0.470000</parameter> - <parameter type="float" name="DropSize3">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.235000</parameter> - <parameter type="integer" name="escp2_ink_type">19</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.249100</parameter> - <parameter type="float" name="DropSize2">0.470000</parameter> - <parameter type="float" name="DropSize3">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.132023</parameter> - <parameter type="integer" name="escp2_ink_type">19</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.249100</parameter> - <parameter type="float" name="DropSize2">0.470000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_65.xml b/src/xml/escp2/model/model_65.xml index 5d3b829..ef3c51d 100644 --- a/src/xml/escp2/model/model_65.xml +++ b/src/xml/escp2/model/model_65.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="65"> +<escp2Model id="65" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/cx3650.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -42,7 +41,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 120</minimumResolution> <maximumResolution>5760 1440</maximumResolution> diff --git a/src/xml/escp2/model/model_66.xml b/src/xml/escp2/model/model_66.xml index deca79e..b83f429 100644 --- a/src/xml/escp2/model/model_66.xml +++ b/src/xml/escp2/model/model_66.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="66"> +<escp2Model id="66" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/c64.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -55,7 +54,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 120</minimumResolution> <maximumResolution>2880 1440</maximumResolution> diff --git a/src/xml/escp2/model/model_67.xml b/src/xml/escp2/model/model_67.xml index afa05a0..f5b4d73 100644 --- a/src/xml/escp2/model/model_67.xml +++ b/src/xml/escp2/model/model_67.xml @@ -17,163 +17,13 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="67"> +<escp2Model id="67" base="escp2/model/base/r800.xml"> <media src="escp2/media/cmykrb.xml"/> - <inputSlots src="escp2/inputslots/r1800.xml"/> - <qualityPresets src="escp2/qualitypresets/v2880.xml"/> - <inkGroup src="escp2/inks/cmykrb.xml"/> - <mediaSizes src="escp2/mediasizes/standard.xml"/> - <verticalBorderlessSequence>SNT\000\000\012\033\000\000\000\000\000\000\001\003\000\001\001\235\007T\001P\012\252\000\363\006?\002P\012\277\007(\002%\013,\001\253\000\037\001!\000\040\001\322\000\241\000\000\000\017\000\036\000\030\031\031\031\031\031\031\031\003\033\033ccccccccccc\002\000\001\000\001\001\362\014</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>180</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>28800</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>5760 2880</maximumResolution> - <extraVerticalFeed>10</extraVerticalFeed> - <separationRows>1</separationRows> <zeroMarginOffset>96</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>180</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>16588800</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>936 86400</maximumMediaSize> <maximumImageableArea>936 86400</maximumImageableArea> - <margins interleave="soft" media="sheet">9 9 0 11</margins> - <margins interleave="printer" media="sheet">9 9 0 11</margins> - <margins interleave="soft" media="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <CDOffset>204 191</CDOffset> - <CDMediaSize>595 842</CDMediaSize> - <extraBottom>24</extraBottom> - <AlignmentChoices>4 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 180</physicalResolution> - <parameter type="float" name="escp2_density">2.800000</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">1.000000</parameter> - </resolution> - <resolution translate="text" name="360sw" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <parameter type="float" name="escp2_density">1.400000</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">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.000000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.350000</parameter> - <parameter type="float" name="DropSize2">0.700000</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">1.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.350000</parameter> - <parameter type="float" name="DropSize2">0.700000</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.869000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.200000</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.942000</parameter> - <parameter type="integer" name="escp2_ink_type">19</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.250000</parameter> - <parameter type="float" name="DropSize2">0.470000</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.471000</parameter> - <parameter type="integer" name="escp2_ink_type">19</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.250000</parameter> - <parameter type="float" name="DropSize2">0.470000</parameter> - <parameter type="float" name="DropSize3">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.235000</parameter> - <parameter type="integer" name="escp2_ink_type">19</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.249100</parameter> - <parameter type="float" name="DropSize2">0.470000</parameter> - <parameter type="float" name="DropSize3">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.235000</parameter> - <parameter type="integer" name="escp2_ink_type">19</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.249100</parameter> - <parameter type="float" name="DropSize2">0.470000</parameter> - <parameter type="float" name="DropSize3">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.132023</parameter> - <parameter type="integer" name="escp2_ink_type">19</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.249100</parameter> - <parameter type="float" name="DropSize2">0.470000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_68.xml b/src/xml/escp2/model/model_68.xml index 3fdd908..3e32e19 100644 --- a/src/xml/escp2/model/model_68.xml +++ b/src/xml/escp2/model/model_68.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="68"> +<escp2Model id="68" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/cmykrb.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -43,7 +42,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>2</NozzleSeparation> </headConfiguration> <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 180</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_69.xml b/src/xml/escp2/model/model_69.xml index 9028eed..68a0c0c 100644 --- a/src/xml/escp2/model/model_69.xml +++ b/src/xml/escp2/model/model_69.xml @@ -17,162 +17,23 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="69"> - <media src="escp2/media/c82.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/c82.xml"/> +<escp2Model id="69" base="escp2/model/base/c8x.xml"> <verticalBorderlessSequence>SNL\000\000\011\027\000\000\000\000\000\000\000\003\000\000\001\260\004\336\0044\001\000\002\000\000\000\0004\010h\020\030\025\310\031\340=\314\020\214\012\024\005\214\000\012\001,\001\000\000\017\017\017\017\017\017\017\017\004\012\004\017\017\017\017\017\006\004\000\001\001\001\000\000\370\007</verticalBorderlessSequence> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\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>59</Nozzles> <MinNozzles>60</MinNozzles> <FirstNozzle>0</FirstNozzle> <NozzleSeparation>2</NozzleSeparation> </headConfiguration> - <headConfiguration type="black"> - <Nozzles>180</Nozzles> - <MinNozzles>180</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>180</Nozzles> - <MinNozzles>180</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> <zeroMarginOffset>80</zeroMarginOffset> <microLeftMargin>42</microLeftMargin> - <initialVerticalOffset>-240</initialVerticalOffset> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> <bidirectionalAutoUpperLimit>1036800</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> - <AlignmentChoices>4 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 180</physicalResolution> - <parameter type="float" name="escp2_density">2.400000</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.000000</parameter> - <parameter type="float" name="DropSize2">0.000000</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">1.200000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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">0.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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.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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720sw" text="2880 x 720 DPI"> - <physicalResolution>2880 720</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">0.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440sw" text="1440 x 1440 DPI"> - <physicalResolution>1440 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">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.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">0.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">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.000000</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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_7.xml b/src/xml/escp2/model/model_7.xml index 3392389..c961393 100644 --- a/src/xml/escp2/model/model_7.xml +++ b/src/xml/escp2/model/model_7.xml @@ -17,137 +17,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="7"> - <media src="escp2/media/photo_gen0.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/photo_gen0.xml"/> - <commandSet>1998</commandSet> - <borderless>No</borderless> +<escp2Model id="7" base="escp2/model/base/sp700.xml"> <sendZeroAdvance/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>32</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>4</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <extra720DPISeparation>8</extra720DPISeparation> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>684 3168</maximumMediaSize> <maximumImageableArea>612 3168</maximumImageableArea> - <margins interleave="soft" media="sheet">9 9 0 30</margins> - <margins interleave="printer" media="sheet">9 9 0 30</margins> - <margins interleave="soft" media="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>1 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 90</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="180dpi" text="180 DPI Economy"> - <physicalResolution>180 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360mw" text="360 DPI High Quality"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.300000</parameter> - <parameter type="integer" name="escp2_ink_type">2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720sw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.550000</parameter> - <parameter type="integer" name="escp2_ink_type">4</parameter> - <parameter type="integer" name="escp2_base_res">360</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.550000</parameter> - <parameter type="integer" name="escp2_ink_type">4</parameter> - <parameter type="integer" name="escp2_base_res">360</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_70.xml b/src/xml/escp2/model/model_70.xml index 5b42818..169bc79 100644 --- a/src/xml/escp2/model/model_70.xml +++ b/src/xml/escp2/model/model_70.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="70"> +<escp2Model id="70" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/photo_gen4.xml"/> <inputSlots src="escp2/inputslots/rx700.xml"/> <qualityPresets src="escp2/qualitypresets/p1_5.xml"/> @@ -44,7 +43,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>2</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>28800</resolutionScale> <minimumResolution>360 180</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_71.xml b/src/xml/escp2/model/model_71.xml index a975247..4e5e1ce 100644 --- a/src/xml/escp2/model/model_71.xml +++ b/src/xml/escp2/model/model_71.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="71"> +<escp2Model id="71" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/f360_ultrachrome_k3.xml"/> <inputSlots src="escp2/inputslots/r2400.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -45,7 +44,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>2</NozzleSeparation> </headConfiguration> <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 180</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_72.xml b/src/xml/escp2/model/model_72.xml index 03f27f3..511ea13 100644 --- a/src/xml/escp2/model/model_72.xml +++ b/src/xml/escp2/model/model_72.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="72"> +<escp2Model id="72" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/c64.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -54,7 +53,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 120</minimumResolution> <maximumResolution>2880 1440</maximumResolution> diff --git a/src/xml/escp2/model/model_73.xml b/src/xml/escp2/model/model_73.xml index 07dece7..204f96b 100644 --- a/src/xml/escp2/model/model_73.xml +++ b/src/xml/escp2/model/model_73.xml @@ -17,50 +17,12 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="73"> +<escp2Model id="73" base="escp2/model/base/picmate.xml"> <media src="escp2/media/picturemate_6.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/picturemate.xml"/> <inkGroup src="escp2/inks/picturemate_6.xml"/> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> - <borderless>Full</borderless> - <supportsVariableDropsizes/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Portrait</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>90</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>28800</resolutionScale> - <minimumResolution>1440 720</minimumResolution> - <maximumResolution>5760 1440</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> - <maximumMediaSize>288 86400</maximumMediaSize> - <maximumImageableArea>288 86400</maximumImageableArea> - <margins interleave="soft" media="sheet">9 9 0 0</margins> - <margins interleave="printer" media="sheet">9 9 0 0</margins> - <margins interleave="soft" media="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <CDOffset>204 191</CDOffset> - <CDMediaSize>595 842</CDMediaSize> - <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> <ChannelName translate="text" name="Yellow" text="Yellow"/> <ChannelName translate="text" name="Magenta" text="Magenta"/> @@ -69,59 +31,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <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"> - <physicalResolution>2880 720</physicalResolution> - <printedResolution>1440 720</printedResolution> - <parameter type="float" name="escp2_density">1.596000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.400000</parameter> - <parameter type="float" name="DropSize2">0.650000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x1440ov" text="1440 x 720 DPI Transposed"> - <physicalResolution>1440 1440</physicalResolution> - <printedResolution>720 1440</printedResolution> - <parameter type="float" name="escp2_density">1.596000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.400000</parameter> - <parameter type="float" name="DropSize2">0.650000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440sw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <parameter type="float" name="escp2_density">0.798000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.400000</parameter> - <parameter type="float" name="DropSize2">0.650000</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.422500</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.399750</parameter> - <parameter type="float" name="DropSize2">0.650000</parameter> - <parameter type="float" name="DropSize3">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.211870</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.399750</parameter> - <parameter type="float" name="DropSize2">0.650000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_74.xml b/src/xml/escp2/model/model_74.xml index 3cdd1d7..eb573e2 100644 --- a/src/xml/escp2/model/model_74.xml +++ b/src/xml/escp2/model/model_74.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="74"> +<escp2Model id="74" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/c64.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -43,7 +42,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 120</minimumResolution> <maximumResolution>5760 1440</maximumResolution> diff --git a/src/xml/escp2/model/model_75.xml b/src/xml/escp2/model/model_75.xml index 9f61470..2f659e2 100644 --- a/src/xml/escp2/model/model_75.xml +++ b/src/xml/escp2/model/model_75.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="75"> +<escp2Model id="75" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/c64.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -42,7 +41,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 120</minimumResolution> <maximumResolution>5760 1440</maximumResolution> diff --git a/src/xml/escp2/model/model_76.xml b/src/xml/escp2/model/model_76.xml index fda8c1e..6e1748b 100644 --- a/src/xml/escp2/model/model_76.xml +++ b/src/xml/escp2/model/model_76.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="76"> +<escp2Model id="76" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/photo_gen4.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -44,7 +43,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 120</minimumResolution> <maximumResolution>5760 1440</maximumResolution> diff --git a/src/xml/escp2/model/model_77.xml b/src/xml/escp2/model/model_77.xml index 4ea2d02..ca9b8a9 100644 --- a/src/xml/escp2/model/model_77.xml +++ b/src/xml/escp2/model/model_77.xml @@ -17,151 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<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"/> - <inkGroup src="escp2/inks/photo_gen3_4.xml"/> +<escp2Model id="77" base="escp2/model/base/r240.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>PM\002\000\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>90</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 120</minimumResolution> - <maximumResolution>5760 1440</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</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> - <CDOffset>204 191</CDOffset> - <CDMediaSize>595 842</CDMediaSize> - <extraBottom>24</extraBottom> - <AlignmentChoices>4 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.679000</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.150000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.657000</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.290000</parameter> - <parameter type="float" name="DropSize2">0.480000</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.328500</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.290000</parameter> - <parameter type="float" name="DropSize2">0.480000</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.164140</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.290000</parameter> - <parameter type="float" name="DropSize2">0.480000</parameter> - <parameter type="float" name="DropSize3">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.082070</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.290000</parameter> - <parameter type="float" name="DropSize2">0.480000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_78.xml b/src/xml/escp2/model/model_78.xml index 8007f1b..f728f32 100644 --- a/src/xml/escp2/model/model_78.xml +++ b/src/xml/escp2/model/model_78.xml @@ -17,152 +17,16 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="78"> - <media src="escp2/media/photo_gen2.xml"/> +<escp2Model id="78" base="escp2/model/base/photo2.xml"> <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/photo_gen2.xml"/> + <resolutions src="escp2/resolutions/sc680.xml"/> <verticalBorderlessSequence>SN\003\000\000\011\001</verticalBorderlessSequence> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> - <borderless>Yes</borderless> - <supportsVariableDropsizes/> <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>48</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> <maximumResolution>2880 720</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> <maximumMediaSize>684 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> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 120</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</physicalResolution> - <parameter type="float" name="escp2_density">2.600000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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">1.300000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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">0.650000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.750000</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.650000</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.375000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.650000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.650000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720sw" text="2880 x 720 DPI"> - <physicalResolution>2880 720</physicalResolution> - <parameter type="float" name="escp2_density">0.325000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720hq2" text="2880 x 720 DPI Highest Quality"> - <physicalResolution>2880 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.325000</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.500000</parameter> - <parameter type="float" name="DropSize2">0.750000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_79.xml b/src/xml/escp2/model/model_79.xml index 0d007a8..d3b5342 100644 --- a/src/xml/escp2/model/model_79.xml +++ b/src/xml/escp2/model/model_79.xml @@ -17,151 +17,23 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="79"> - <media src="escp2/media/c82.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/c82.xml"/> +<escp2Model id="79" base="escp2/model/base/c8x.xml"> <verticalBorderlessSequence>SN2\000\000\006\026\000\000\000\000\000\000\001\000\000\027\003\276\000?\007\000\000\334\005\366\011\366\011\226\000\000\000\226\000?\007\031\030\031\031\004\031\004\031\031\031\004\004\000\000]\006</verticalBorderlessSequence> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\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>59</Nozzles> <MinNozzles>60</MinNozzles> <FirstNozzle>0</FirstNozzle> <NozzleSeparation>2</NozzleSeparation> </headConfiguration> - <headConfiguration type="black"> - <Nozzles>180</Nozzles> - <MinNozzles>180</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>180</Nozzles> - <MinNozzles>180</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> <maximumResolution>2880 1440</maximumResolution> - <separationRows>1</separationRows> <zeroMarginOffset>80</zeroMarginOffset> <microLeftMargin>42</microLeftMargin> - <initialVerticalOffset>-240</initialVerticalOffset> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> <bidirectionalAutoUpperLimit>518400</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> - <AlignmentChoices>4 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 180</physicalResolution> - <parameter type="float" name="escp2_density">2.400000</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.000000</parameter> - <parameter type="float" name="DropSize2">0.000000</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">1.200000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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">0.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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.600000</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.280000</parameter> - <parameter type="float" name="DropSize2">0.000000</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.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.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x720sw" text="2880 x 720 DPI"> - <physicalResolution>2880 720</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">0.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440sw" text="1440 x 1440 DPI"> - <physicalResolution>1440 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">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.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">0.250000</parameter> - <parameter type="float" name="DropSize2">0.500000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_8.xml b/src/xml/escp2/model/model_8.xml index 3c25414..648e435 100644 --- a/src/xml/escp2/model/model_8.xml +++ b/src/xml/escp2/model/model_8.xml @@ -17,136 +17,11 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="8"> - <media src="escp2/media/photo_gen0.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/photo_gen0.xml"/> - <commandSet>1998</commandSet> - <borderless>No</borderless> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>32</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>4</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <extra720DPISeparation>8</extra720DPISeparation> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="8" base="escp2/model/base/sp700.xml"> <maximumMediaSize>849 3168</maximumMediaSize> <maximumImageableArea>849 3168</maximumImageableArea> - <margins interleave="soft" media="sheet">9 9 0 30</margins> - <margins interleave="printer" media="sheet">9 9 0 30</margins> - <margins interleave="soft" media="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> <AlignmentChoices>1 7 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 90</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="180dpi" text="180 DPI Economy"> - <physicalResolution>180 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">2.600000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360mw" text="360 DPI High Quality"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="360" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">1.300000</parameter> - <parameter type="integer" name="escp2_ink_type">3</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.300000</parameter> - <parameter type="integer" name="escp2_ink_type">2</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="720sw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.775000</parameter> - <parameter type="integer" name="escp2_ink_type">1</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">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.550000</parameter> - <parameter type="integer" name="escp2_ink_type">4</parameter> - <parameter type="integer" name="escp2_base_res">360</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> - <physicalResolution>1440 720</physicalResolution> - <verticalPasses>2</verticalPasses> - <parameter type="float" name="escp2_density">0.550000</parameter> - <parameter type="integer" name="escp2_ink_type">4</parameter> - <parameter type="integer" name="escp2_base_res">360</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_80.xml b/src/xml/escp2/model/model_80.xml index feee980..16f0076 100644 --- a/src/xml/escp2/model/model_80.xml +++ b/src/xml/escp2/model/model_80.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="80"> +<escp2Model id="80" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/c82.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -55,7 +54,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>2</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 180</minimumResolution> <maximumResolution>2880 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_81.xml b/src/xml/escp2/model/model_81.xml index e696724..108ee41 100644 --- a/src/xml/escp2/model/model_81.xml +++ b/src/xml/escp2/model/model_81.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="81"> +<escp2Model id="81" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/claria.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -44,7 +43,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>4</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 90</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_82.xml b/src/xml/escp2/model/model_82.xml index 623f111..78deb84 100644 --- a/src/xml/escp2/model/model_82.xml +++ b/src/xml/escp2/model/model_82.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="82"> +<escp2Model id="82" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/claria1400.xml"/> <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -44,7 +43,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>4</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 90</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_83.xml b/src/xml/escp2/model/model_83.xml index e31d5b3..7c8857b 100644 --- a/src/xml/escp2/model/model_83.xml +++ b/src/xml/escp2/model/model_83.xml @@ -17,151 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<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"/> - <inkGroup src="escp2/inks/photo_gen3_4.xml"/> +<escp2Model id="83" base="escp2/model/base/r240.xml"> <verticalBorderlessSequence>SNP\000\000\014\027\000\000\000\000\000\000\000\003\000\001\001X\002\320\004G\001G\002\000\000\000\000P\010\204\020\030\025\310\031\340=\240\017\214\0120\005\214\000\012\001,\001\000\000\000\000\017\017\017\017\017\017\017\017\004\012\004\017\017\017\017\017\006\004\017\017\000\000\001\001\000\0010\010</verticalBorderlessSequence> <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\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>90</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 120</minimumResolution> - <maximumResolution>5760 1440</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</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> - <CDOffset>204 191</CDOffset> - <CDMediaSize>595 842</CDMediaSize> - <extraBottom>24</extraBottom> - <AlignmentChoices>4 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.679000</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.150000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.657000</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.290000</parameter> - <parameter type="float" name="DropSize2">0.480000</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.328500</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.290000</parameter> - <parameter type="float" name="DropSize2">0.480000</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.16414</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.290000</parameter> - <parameter type="float" name="DropSize2">0.480000</parameter> - <parameter type="float" name="DropSize3">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.08207</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.290000</parameter> - <parameter type="float" name="DropSize2">0.480000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_84.xml b/src/xml/escp2/model/model_84.xml index 091c4b8..c7f0a3c 100644 --- a/src/xml/escp2/model/model_84.xml +++ b/src/xml/escp2/model/model_84.xml @@ -17,143 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="84"> - <media src="escp2/media/photo_gen3.xml"/> - <inputSlots src="escp2/inputslots/cd_roll_feed.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/photo_gen3.xml"/> +<escp2Model id="84" base="escp2/model/base/r200.xml"> <verticalBorderlessSequence>SNL\000\000\011\026\000\000\000\000\000\000\000\003\000\000\001\260\004\336\0044\001\000\002\000\000\000\0004\010h\020\030\025\310\031\340=\314\020\214\012\024\005\214\000\012\001,\001\000\000\017\017\017\017\017\017\017\017\004\012\004\017\017\017\017\017\006\004\000\001\001\001\000\000\367\007</verticalBorderlessSequence> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\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>90</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 120</minimumResolution> - <maximumResolution>2880 1440</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</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> - <CDOffset>204 191</CDOffset> - <CDMediaSize>595 842</CDMediaSize> - <extraBottom>24</extraBottom> - <AlignmentChoices>4 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> - <physicalResolution>360 240</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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.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.150000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.679000</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.150000</parameter> - <parameter type="float" name="DropSize2">0.500000</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.657000</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.290000</parameter> - <parameter type="float" name="DropSize2">0.480000</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.328500</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.290000</parameter> - <parameter type="float" name="DropSize2">0.480000</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.164140</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.290000</parameter> - <parameter type="float" name="DropSize2">0.480000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_85.xml b/src/xml/escp2/model/model_85.xml index fef156f..2da9cc3 100644 --- a/src/xml/escp2/model/model_85.xml +++ b/src/xml/escp2/model/model_85.xml @@ -17,204 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="85"> - <media src="escp2/media/c120.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/c120.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>59</Nozzles> - <MinNozzles>60</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <headConfiguration type="black"> - <Nozzles>358</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>1</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>358</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>1</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>5760 2880</maximumResolution> - <extraVerticalFeed>10</extraVerticalFeed> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <initialVerticalOffset>-240</initialVerticalOffset> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>16588800</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="85" base="escp2/model/base/c1xx.xml"> <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> - <AlignmentChoices>4 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 180</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.120000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.120000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.120000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.120000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.512000</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.256000</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.128000</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="5760x1440sw" text="5760 x 1440 DPI"> - <physicalResolution>5760 1440</physicalResolution> - <parameter type="float" name="escp2_density">0.128000</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="2880x2880sw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <parameter type="float" name="escp2_density">0.128000</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="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">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_86.xml b/src/xml/escp2/model/model_86.xml index 8e532e5..6ef1b28 100644 --- a/src/xml/escp2/model/model_86.xml +++ b/src/xml/escp2/model/model_86.xml @@ -17,109 +17,17 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="86"> +<escp2Model id="86" base="escp2/model/base/picmate.xml"> <media src="escp2/media/picturemate_4.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/picturemate.xml"/> <inkGroup src="escp2/inks/picturemate_4.xml"/> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> - <borderless>Full</borderless> - <supportsVariableDropsizes/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Portrait</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>90</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>28800</resolutionScale> - <minimumResolution>1440 720</minimumResolution> - <maximumResolution>5760 1440</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> - <maximumMediaSize>288 86400</maximumMediaSize> - <maximumImageableArea>288 86400</maximumImageableArea> - <margins interleave="soft" media="sheet">9 9 0 0</margins> - <margins interleave="printer" media="sheet">9 9 0 0</margins> - <margins interleave="soft" media="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <CDOffset>204 191</CDOffset> - <CDMediaSize>595 842</CDMediaSize> - <AlignmentChoices>4 15 0 0</AlignmentChoices> <ChannelNames> <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"> - <physicalResolution>2880 720</physicalResolution> - <printedResolution>1440 720</printedResolution> - <parameter type="float" name="escp2_density">1.596000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.400000</parameter> - <parameter type="float" name="DropSize2">0.650000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x1440ov" text="1440 x 720 DPI Transposed"> - <physicalResolution>1440 1440</physicalResolution> - <printedResolution>720 1440</printedResolution> - <parameter type="float" name="escp2_density">1.596000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.400000</parameter> - <parameter type="float" name="DropSize2">0.650000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440sw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <parameter type="float" name="escp2_density">0.798000</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.400000</parameter> - <parameter type="float" name="DropSize2">0.650000</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.422500</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.399750</parameter> - <parameter type="float" name="DropSize2">0.650000</parameter> - <parameter type="float" name="DropSize3">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.211870</parameter> - <parameter type="integer" name="escp2_ink_type">18</parameter> - <parameter type="integer" name="escp2_base_res">720</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.399750</parameter> - <parameter type="float" name="DropSize2">0.650000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_87.xml b/src/xml/escp2/model/model_87.xml index 0c54d1b..a001ffc 100644 --- a/src/xml/escp2/model/model_87.xml +++ b/src/xml/escp2/model/model_87.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="87"> +<escp2Model id="87" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/b500.xml"/> <inputSlots src="escp2/inputslots/b500.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -43,7 +42,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>1</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <minimumResolution>360 360</minimumResolution> <maximumResolution>5760 2880</maximumResolution> <extraVerticalFeed>360</extraVerticalFeed> diff --git a/src/xml/escp2/model/model_88.xml b/src/xml/escp2/model/model_88.xml index 092a770..64411fe 100644 --- a/src/xml/escp2/model/model_88.xml +++ b/src/xml/escp2/model/model_88.xml @@ -17,134 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<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"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3v.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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="88" base="escp2/model/base/pro_x880.xml"> <maximumMediaSize>4608 86400</maximumMediaSize> <maximumImageableArea>4608 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">10.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_89.xml b/src/xml/escp2/model/model_89.xml index 3bbe9f2..1af89d4 100644 --- a/src/xml/escp2/model/model_89.xml +++ b/src/xml/escp2/model/model_89.xml @@ -17,134 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<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"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3v.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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="89" base="escp2/model/base/pro_x880.xml"> <maximumMediaSize>1728 86400</maximumMediaSize> <maximumImageableArea>1728 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">10.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_9.xml b/src/xml/escp2/model/model_9.xml index 77cb14a..372c896 100644 --- a/src/xml/escp2/model/model_9.xml +++ b/src/xml/escp2/model/model_9.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="9"> +<escp2Model id="9" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/photo_gen0.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -36,7 +35,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>4</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <minimumResolution>90 90</minimumResolution> <maximumResolution>720 720</maximumResolution> <separationRows>1</separationRows> diff --git a/src/xml/escp2/model/model_90.xml b/src/xml/escp2/model/model_90.xml index 4af4ce5..c2a0f59 100644 --- a/src/xml/escp2/model/model_90.xml +++ b/src/xml/escp2/model/model_90.xml @@ -17,134 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<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"/> - <inkGroup src="escp2/inks/pro_ultrachrome_k3v.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> - <commandSet>Pro</commandSet> - <borderless>HorizontalOnly</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>1</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>2880 2880</maximumResolution> - <separationRows>1</separationRows> - <zeroMarginOffset>43</zeroMarginOffset> - <microLeftMargin>5</microLeftMargin> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>2073600</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="90" base="escp2/model/base/pro_x880.xml"> <maximumMediaSize>3168 86400</maximumMediaSize> <maximumImageableArea>3168 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="roll">9 9 0 0</margins> - <margins interleave="printer" media="roll">9 9 0 0</margins> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <resolutions> - <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> - <physicalResolution>360 180</physicalResolution> - <printerWeave command="\033(i\001\000\000"/> - <parameter type="float" name="escp2_density">10.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="360pro" text="360 DPI"> - <physicalResolution>360 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">5.000000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> - <physicalResolution>720 360</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">2.520000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="720mw" text="720 DPI"> - <physicalResolution>720 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">1.260000</parameter> - <parameter type="integer" name="escp2_ink_type">17</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.290000</parameter> - <parameter type="float" name="DropSize2">0.630000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> - <physicalResolution>1440 720</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.891000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> - <physicalResolution>1440 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.446000</parameter> - <parameter type="integer" name="escp2_ink_type">16</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">2</parameter> - <parameter type="float" name="DropSize1">0.275000</parameter> - <parameter type="float" name="DropSize2">0.450000</parameter> - <parameter type="float" name="DropSize3">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> - <physicalResolution>2880 1440</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.775000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <printerWeave command="\033(i\001\000\001"/> - <parameter type="float" name="escp2_density">0.388000</parameter> - <parameter type="integer" name="escp2_ink_type">5</parameter> - <parameter type="integer" name="escp2_base_res">2880</parameter> - <parameter type="integer" name="escp2_bits">1</parameter> - <parameter type="float" name="DropSize1">1.000000</parameter> - </resolution> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_91.xml b/src/xml/escp2/model/model_91.xml index cad8964..f93afb7 100644 --- a/src/xml/escp2/model/model_91.xml +++ b/src/xml/escp2/model/model_91.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="91"> +<escp2Model id="91" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/cmykro.xml"/> <inputSlots src="escp2/inputslots/r1800.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -44,7 +43,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>2</NozzleSeparation> </headConfiguration> <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>28800</resolutionScale> <minimumResolution>360 180</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_92.xml b/src/xml/escp2/model/model_92.xml index 02e838f..6aa268b 100644 --- a/src/xml/escp2/model/model_92.xml +++ b/src/xml/escp2/model/model_92.xml @@ -17,206 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="92"> - <media src="escp2/media/c120.xml"/> +<escp2Model id="92" base="escp2/model/base/bx.xml"> <inputSlots src="escp2/inputslots/default.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> <extraBottom>24</extraBottom> - <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.192</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="5760x1440sw" text="5760 x 1440 DPI"> - <physicalResolution>5760 1440</physicalResolution> - <parameter type="float" name="escp2_density">0.096</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="2880x2880sw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <parameter type="float" name="escp2_density">0.096</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="5760x2880sw" text="5760 x 2880 DPI"> - <physicalResolution>5760 2880</physicalResolution> - <parameter type="float" name="escp2_density">0.096</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> - </resolutions> </escp2Model> </gutenprint> diff --git a/src/xml/escp2/model/model_93.xml b/src/xml/escp2/model/model_93.xml index 42a62d9..33dcfc5 100644 --- a/src/xml/escp2/model/model_93.xml +++ b/src/xml/escp2/model/model_93.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="93"> +<escp2Model id="93" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/wf500.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/wf40.xml"/> @@ -44,7 +43,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 120</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_94.xml b/src/xml/escp2/model/model_94.xml index 92b0fc7..9ee25ad 100644 --- a/src/xml/escp2/model/model_94.xml +++ b/src/xml/escp2/model/model_94.xml @@ -18,10 +18,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="94"> +<escp2Model id="94" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/wf500.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/wf40.xml"/> @@ -57,7 +56,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 120</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_95.xml b/src/xml/escp2/model/model_95.xml index 352386d..f5769ae 100644 --- a/src/xml/escp2/model/model_95.xml +++ b/src/xml/escp2/model/model_95.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="95"> +<escp2Model id="95" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/cx3650.xml"/> <inputSlots src="escp2/inputslots/default.xml"/> <qualityPresets src="escp2/qualitypresets/standard.xml"/> @@ -42,7 +41,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>3</NozzleSeparation> </headConfiguration> <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 120</minimumResolution> <maximumResolution>5760 1440</maximumResolution> diff --git a/src/xml/escp2/model/model_96.xml b/src/xml/escp2/model/model_96.xml index 9071aab..96c705b 100644 --- a/src/xml/escp2/model/model_96.xml +++ b/src/xml/escp2/model/model_96.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="96"> +<escp2Model id="96" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/artisan.xml"/> <inputSlots src="escp2/inputslots/artisan.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -44,7 +43,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>2</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 180</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_97.xml b/src/xml/escp2/model/model_97.xml index 7d103c4..6a498ce 100644 --- a/src/xml/escp2/model/model_97.xml +++ b/src/xml/escp2/model/model_97.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="97"> +<escp2Model id="97" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/claria.xml"/> <inputSlots src="escp2/inputslots/rx680.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -44,7 +43,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>4</NozzleSeparation> </headConfiguration> <physicalChannels>6</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 90</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_98.xml b/src/xml/escp2/model/model_98.xml index d8411b6..3a4d26f 100644 --- a/src/xml/escp2/model/model_98.xml +++ b/src/xml/escp2/model/model_98.xml @@ -17,10 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="98"> +<escp2Model id="98" base="escp2/model/base/baseline_360.xml"> <media src="escp2/media/f360_ultrachrome_k3v.xml"/> <inputSlots src="escp2/inputslots/r2880.xml"/> <qualityPresets src="escp2/qualitypresets/v2880.xml"/> @@ -45,7 +44,6 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <NozzleSeparation>2</NozzleSeparation> </headConfiguration> <physicalChannels>8</physicalChannels> - <baseSeparation>360</baseSeparation> <resolutionScale>14400</resolutionScale> <minimumResolution>360 180</minimumResolution> <maximumResolution>5760 2880</maximumResolution> diff --git a/src/xml/escp2/model/model_99.xml b/src/xml/escp2/model/model_99.xml index fc3e01b..df6f798 100644 --- a/src/xml/escp2/model/model_99.xml +++ b/src/xml/escp2/model/model_99.xml @@ -17,204 +17,10 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="99"> - <media src="escp2/media/c120.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/c120.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>59</Nozzles> - <MinNozzles>60</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>2</NozzleSeparation> - </headConfiguration> - <headConfiguration type="black"> - <Nozzles>358</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>1</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>358</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>1</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>360 180</minimumResolution> - <maximumResolution>5760 2880</maximumResolution> - <extraVerticalFeed>10</extraVerticalFeed> - <separationRows>1</separationRows> - <zeroMarginOffset>80</zeroMarginOffset> - <microLeftMargin>42</microLeftMargin> - <initialVerticalOffset>-240</initialVerticalOffset> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>16588800</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> +<escp2Model id="99" base="escp2/model/base/c1xx.xml"> <maximumMediaSize>936 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> - <extraBottom>24</extraBottom> - <AlignmentChoices>4 15 0 0</AlignmentChoices> - <ChannelNames> - <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"> - <physicalResolution>360 180</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.120000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.120000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.120000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.120000</parameter> - <parameter type="float" name="DropSize2">0.300000</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.512000</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.256000</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.128000</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="5760x1440sw" text="5760 x 1440 DPI"> - <physicalResolution>5760 1440</physicalResolution> - <parameter type="float" name="escp2_density">0.128000</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="2880x2880sw" text="2880 x 2880 DPI"> - <physicalResolution>2880 2880</physicalResolution> - <parameter type="float" name="escp2_density">0.128000</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="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">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/qualitypresets/Makefile.am b/src/xml/escp2/qualitypresets/Makefile.am index cf7e9e7..afa5bb7 100644 --- a/src/xml/escp2/qualitypresets/Makefile.am +++ b/src/xml/escp2/qualitypresets/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. diff --git a/src/xml/escp2/qualitypresets/Makefile.in b/src/xml/escp2/qualitypresets/Makefile.in index 0a1e94b..2091ad2 100644 --- a/src/xml/escp2/qualitypresets/Makefile.in +++ b/src/xml/escp2/qualitypresets/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,17 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -83,22 +93,21 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am subdir = src/xml/escp2/qualitypresets ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -152,6 +161,8 @@ am__uninstall_files_from_dir = { \ am__installdirs = "$(DESTDIR)$(pkgxmldatadir)" DATA = $(pkgxmldata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/scripts/global.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -162,6 +173,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -182,7 +195,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -199,6 +211,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -261,10 +274,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -288,7 +303,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -306,9 +320,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -376,7 +392,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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 pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/escp2/qualitypresets pkgxmldata_DATA = \ p1_5.xml \ @@ -403,16 +418,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/xml/escp2/qualitypresets/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/xml/escp2/qualitypresets/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -456,7 +470,10 @@ ctags CTAGS: cscope cscopelist: -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -608,6 +625,8 @@ uninstall-am: uninstall-pkgxmldataDATA mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-pkgxmldataDATA +.PRECIOUS: Makefile + @SET_MAKE@ @@ -617,10 +636,6 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) diff --git a/src/xml/escp2/qualitypresets/p1_5.xml b/src/xml/escp2/qualitypresets/p1_5.xml index f232653..a5abc7b 100644 --- a/src/xml/escp2/qualitypresets/p1_5.xml +++ b/src/xml/escp2/qualitypresets/p1_5.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2QualityPresets name="p1_5"> <quality translate="text" name="FastEconomy" text="Fast Economy"> diff --git a/src/xml/escp2/qualitypresets/picturemate.xml b/src/xml/escp2/qualitypresets/picturemate.xml index 8fde2f7..6375985 100644 --- a/src/xml/escp2/qualitypresets/picturemate.xml +++ b/src/xml/escp2/qualitypresets/picturemate.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2QualityPresets name="picturemate"> <quality translate="text" name="Draft" text="Draft"> diff --git a/src/xml/escp2/qualitypresets/prox900.xml b/src/xml/escp2/qualitypresets/prox900.xml index 37758df..be72d34 100644 --- a/src/xml/escp2/qualitypresets/prox900.xml +++ b/src/xml/escp2/qualitypresets/prox900.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2QualityPresets name="standard"> <quality translate="text" name="FastEconomy" text="Fast Economy"> diff --git a/src/xml/escp2/qualitypresets/standard.xml b/src/xml/escp2/qualitypresets/standard.xml index 8875fb8..1e9239c 100644 --- a/src/xml/escp2/qualitypresets/standard.xml +++ b/src/xml/escp2/qualitypresets/standard.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2QualityPresets name="standard"> <quality translate="text" name="FastEconomy" text="Fast Economy"> diff --git a/src/xml/escp2/qualitypresets/v2880.xml b/src/xml/escp2/qualitypresets/v2880.xml index 022cb42..2010f48 100644 --- a/src/xml/escp2/qualitypresets/v2880.xml +++ b/src/xml/escp2/qualitypresets/v2880.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2QualityPresets name="v2880"> <quality translate="text" name="FastEconomy" text="Fast Economy"> diff --git a/src/xml/escp2/qualitypresets/wf40.xml b/src/xml/escp2/qualitypresets/wf40.xml index 272190f..1936230 100644 --- a/src/xml/escp2/qualitypresets/wf40.xml +++ b/src/xml/escp2/qualitypresets/wf40.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2QualityPresets name="standard"> <quality translate="text" name="Economy" text="Economy"> diff --git a/src/xml/escp2/resolutions/Makefile.am b/src/xml/escp2/resolutions/Makefile.am new file mode 100644 index 0000000..5094559 --- /dev/null +++ b/src/xml/escp2/resolutions/Makefile.am @@ -0,0 +1,52 @@ +## Copyright (C) 2017 Krawitz +## +## 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, 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, see <https://www.gnu.org/licenses/>. + +## Process this file with automake to produce Makefile.in. + +@SET_MAKE@ + +include $(top_srcdir)/scripts/global.mk + +## Variables + +pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/escp2/resolutions + +pkgxmldata_DATA = \ + c8x.xml \ + escp2-i.xml \ + prox600.xml \ + sc480.xml \ + sc680.xml \ + sc740.xml \ + sc860.xml \ + sp700.xml \ + sp720.xml \ + wf6xx.xml + +xml-stamp: $(pkgxmldata_DATA) $(STAMPS) Makefile.am + -rm -f $@ $@.tmp + touch $@.tmp + for dir in $(SUBDIRS) ; do \ + sed "s;^;$$dir/;" $${dir}/xml-stamp >> $@.tmp ; \ + done + for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done + mv $@.tmp $@ + +all-local: xml-stamp + +dist-hook: xml-stamp +CLEANFILES = xmli18n-tmp.h xml-stamp xml-stamp.tmp + +EXTRA_DIST = $(pkgxmldata_DATA) diff --git a/src/xml/escp2/resolutions/Makefile.in b/src/xml/escp2/resolutions/Makefile.in new file mode 100644 index 0000000..41b6a4c --- /dev/null +++ b/src/xml/escp2/resolutions/Makefile.in @@ -0,0 +1,662 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Variables + +#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 = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/xml/escp2/resolutions +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +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/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +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) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/scripts/global.mk +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@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ +BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ +BZIP2 = @BZIP2@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMPRESS = @COMPRESS@ +CONVERT = @CONVERT@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSUF = @CSUF@ +CUPS_CFLAGS = @CUPS_CFLAGS@ +CUPS_CONFIG = @CUPS_CONFIG@ +CUPS_LIBS = @CUPS_LIBS@ +CUPS_PPD_PS_LEVEL = @CUPS_PPD_PS_LEVEL@ +CYGPATH_W = @CYGPATH_W@ +DB2HTML = @DB2HTML@ +DB2PDF = @DB2PDF@ +DB2PS = @DB2PS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOXYGEN = @DOXYGEN@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +DVIPDF = @DVIPDF@ +DVIPS = @DVIPS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FIND = @FIND@ +GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GIMP2_CFLAGS = @GIMP2_CFLAGS@ +GIMP2_LIBS = @GIMP2_LIBS@ +GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNUCFLAGS = @GNUCFLAGS@ +GREP = @GREP@ +GTK2_CFLAGS = @GTK2_CFLAGS@ +GTK2_LIBS = @GTK2_LIBS@ +GUTENPRINTUI2_BINARY_AGE = @GUTENPRINTUI2_BINARY_AGE@ +GUTENPRINTUI2_CFLAGS = @GUTENPRINTUI2_CFLAGS@ +GUTENPRINTUI2_CURRENT_INTERFACE = @GUTENPRINTUI2_CURRENT_INTERFACE@ +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@ +GUTENPRINT_INTERFACE_AGE = @GUTENPRINT_INTERFACE_AGE@ +GUTENPRINT_LIBDEPS = @GUTENPRINT_LIBDEPS@ + +# Libraries +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@ +GZIP = @GZIP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ +LIBS = $(INTLLIBS) @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_BACKEND_LIBDEPS = @LIBUSB_BACKEND_LIBDEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LRZIP = @LRZIP@ +LTALLOCA = @LTALLOCA@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKGROOT = @PKGROOT@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +RELEASE_DATE = @RELEASE_DATE@ +RM = @RM@ +RZIP = @RZIP@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TEST = @TEST@ +TEXI2HTML = @TEXI2HTML@ +TRUE = @TRUE@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WHICH_PPDS = @WHICH_PPDS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XZ = @XZ@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +cups_bindir = @cups_bindir@ +cups_conf_datadir = @cups_conf_datadir@ +cups_conf_serverbin = @cups_conf_serverbin@ +cups_conf_serverroot = @cups_conf_serverroot@ +cups_exec_prefix = @cups_exec_prefix@ +cups_prefix = @cups_prefix@ +cups_sbindir = @cups_sbindir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gimp2_plug_indir = @gimp2_plug_indir@ +gutenprint_cflags = @gutenprint_cflags@ +gutenprint_libdeps = @gutenprint_libdeps@ +gutenprint_libs = @gutenprint_libs@ +gutenprintui2_cflags = @gutenprintui2_cflags@ +gutenprintui2_libdeps = @gutenprintui2_libdeps@ +gutenprintui2_libs = @gutenprintui2_libs@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(LOCAL_CPPFLAGS) $(GNUCFLAGS) +pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/escp2/resolutions +pkgxmldata_DATA = \ + c8x.xml \ + escp2-i.xml \ + prox600.xml \ + sc480.xml \ + sc680.xml \ + sc740.xml \ + sc860.xml \ + sp700.xml \ + sp720.xml \ + wf6xx.xml + +CLEANFILES = xmli18n-tmp.h xml-stamp xml-stamp.tmp +EXTRA_DIST = $(pkgxmldata_DATA) +all: all-am + +.SUFFIXES: +$(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 \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/xml/escp2/resolutions/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/xml/escp2/resolutions/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; +$(top_srcdir)/scripts/global.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgxmldataDATA: $(pkgxmldata_DATA) + @$(NORMAL_INSTALL) + @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"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgxmldatadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgxmldatadir)" || exit $$?; \ + done + +uninstall-pkgxmldataDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgxmldatadir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: check-am +all-am: Makefile $(DATA) all-local +installdirs: + for dir in "$(DESTDIR)$(pkgxmldatadir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + 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: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgxmldataDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgxmldataDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am all-local check check-am clean clean-generic \ + 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 + +.PRECIOUS: Makefile + + +@SET_MAKE@ + +# Rules + +$(top_builddir)/src/main/libgutenprint.la: + cd $(top_builddir)/src/main; \ + $(MAKE) + +$(top_builddir)/src/gutenprintui2/libgutenprintui2.la: + cd $(top_builddir)/src/gutenprintui2; \ + $(MAKE) + +xml-stamp: $(pkgxmldata_DATA) $(STAMPS) Makefile.am + -rm -f $@ $@.tmp + touch $@.tmp + for dir in $(SUBDIRS) ; do \ + sed "s;^;$$dir/;" $${dir}/xml-stamp >> $@.tmp ; \ + done + for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done + mv $@.tmp $@ + +all-local: xml-stamp + +dist-hook: xml-stamp + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/xml/escp2/resolutions/c8x.xml b/src/xml/escp2/resolutions/c8x.xml new file mode 100644 index 0000000..f8f116b --- /dev/null +++ b/src/xml/escp2/resolutions/c8x.xml @@ -0,0 +1,114 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Resolutions name="c8x"> + <resolutions> + <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> + <physicalResolution>360 180</physicalResolution> + <parameter type="float" name="escp2_density">2.400000</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.000000</parameter> + <parameter type="float" name="DropSize2">0.000000</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">1.200000</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.280000</parameter> + <parameter type="float" name="DropSize2">0.000000</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">0.600000</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.280000</parameter> + <parameter type="float" name="DropSize2">0.000000</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.600000</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.280000</parameter> + <parameter type="float" name="DropSize2">0.000000</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.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.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="2880x720sw" text="2880 x 720 DPI"> + <physicalResolution>2880 720</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">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x1440sw" text="1440 x 1440 DPI"> + <physicalResolution>1440 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">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.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">0.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">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.000000</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> +</escp2Resolutions> +</gutenprint> diff --git a/src/xml/escp2/resolutions/escp2-i.xml b/src/xml/escp2/resolutions/escp2-i.xml new file mode 100644 index 0000000..4576b4e --- /dev/null +++ b/src/xml/escp2/resolutions/escp2-i.xml @@ -0,0 +1,88 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Resolutions name="escp2-i"> + <resolutions> + <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> + <physicalResolution>360 90</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">2.600000</parameter> + <parameter type="integer" name="escp2_ink_type">-2</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="180dpi" text="180 DPI Economy"> + <physicalResolution>180 180</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">2.600000</parameter> + <parameter type="integer" name="escp2_ink_type">-2</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> + <physicalResolution>360 180</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">2.600000</parameter> + <parameter type="integer" name="escp2_ink_type">-2</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="360mw" text="360 DPI High Quality"> + <physicalResolution>360 360</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">1.300000</parameter> + <parameter type="integer" name="escp2_ink_type">-2</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="360" text="360 DPI"> + <physicalResolution>360 360</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">1.300000</parameter> + <parameter type="integer" name="escp2_ink_type">-2</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">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.300000</parameter> + <parameter type="integer" name="escp2_ink_type">-2</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="720mw" text="720 DPI"> + <physicalResolution>720 720</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.568000</parameter> + <parameter type="integer" name="escp2_ink_type">-2</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + </resolutions> +</escp2Resolutions> +</gutenprint> diff --git a/src/xml/escp2/resolutions/prox600.xml b/src/xml/escp2/resolutions/prox600.xml new file mode 100644 index 0000000..7d2c0d4 --- /dev/null +++ b/src/xml/escp2/resolutions/prox600.xml @@ -0,0 +1,110 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Resolutions name="prox600"> + <resolutions> + <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> + <physicalResolution>360 180</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">10.000000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.290000</parameter> + <parameter type="float" name="DropSize2">0.630000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="360pro" text="360 DPI"> + <physicalResolution>360 360</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">5.000000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.290000</parameter> + <parameter type="float" name="DropSize2">0.630000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720x360mw" text="720 x 360 DPI"> + <physicalResolution>720 360</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">2.520000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.290000</parameter> + <parameter type="float" name="DropSize2">0.630000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720mw" text="720 DPI"> + <physicalResolution>720 720</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">1.260000</parameter> + <parameter type="integer" name="escp2_ink_type">17</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.290000</parameter> + <parameter type="float" name="DropSize2">0.630000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x720mw" text="1440 x 720 DPI"> + <physicalResolution>1440 720</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.891000</parameter> + <parameter type="integer" name="escp2_ink_type">16</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.275000</parameter> + <parameter type="float" name="DropSize2">0.450000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x1440mw" text="1440 x 1440 DPI"> + <physicalResolution>1440 1440</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.446000</parameter> + <parameter type="integer" name="escp2_ink_type">16</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">2</parameter> + <parameter type="float" name="DropSize1">0.275000</parameter> + <parameter type="float" name="DropSize2">0.450000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="2880x1440mw" text="2880 x 1440 DPI"> + <physicalResolution>2880 1440</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.775000</parameter> + <parameter type="integer" name="escp2_ink_type">5</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="2880x2880mw" text="2880 x 2880 DPI"> + <physicalResolution>2880 2880</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">0.388000</parameter> + <parameter type="integer" name="escp2_ink_type">5</parameter> + <parameter type="integer" name="escp2_base_res">2880</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + </resolutions> +</escp2Resolutions> +</gutenprint> diff --git a/src/xml/escp2/resolutions/sc480.xml b/src/xml/escp2/resolutions/sc480.xml new file mode 100644 index 0000000..adb881b --- /dev/null +++ b/src/xml/escp2/resolutions/sc480.xml @@ -0,0 +1,98 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Resolutions name="sc480"> + <resolutions> + <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> + <physicalResolution>360 120</physicalResolution> + <parameter type="float" name="escp2_density">2.800000</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.325000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> + <physicalResolution>360 240</physicalResolution> + <parameter type="float" name="escp2_density">2.800000</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.325000</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">1.400000</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.325000</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">0.700000</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.325000</parameter> + <parameter type="float" name="DropSize2">0.500000</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.710000</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.325000</parameter> + <parameter type="float" name="DropSize2">0.500000</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.710000</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.325000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="720hq2" text="720 DPI Highest Quality"> + <physicalResolution>720 720</physicalResolution> + <verticalPasses>4</verticalPasses> + <parameter type="float" name="escp2_density">0.710000</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.325000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + </resolutions> +</escp2Resolutions> +</gutenprint> diff --git a/src/xml/escp2/model/model_33.xml b/src/xml/escp2/resolutions/sc680.xml index c1af4f5..878ce7e 100644 --- a/src/xml/escp2/model/model_33.xml +++ b/src/xml/escp2/resolutions/sc680.xml @@ -17,65 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="33"> - <media src="escp2/media/standard.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/standard.xml"/> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>2000</commandSet> - <borderless>No</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>48</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <headConfiguration type="black"> - <Nozzles>144</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>144</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>2880 720</maximumResolution> - <separationRows>1</separationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> - <maximumMediaSize>684 86400</maximumMediaSize> - <maximumImageableArea>612 86400</maximumImageableArea> - <margins interleave="soft" media="sheet">9 9 0 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="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> +<escp2Resolutions name="sc680"> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> <physicalResolution>360 120</physicalResolution> @@ -170,5 +114,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize3">1.000000</parameter> </resolution> </resolutions> -</escp2Model> +</escp2Resolutions> </gutenprint> diff --git a/src/xml/escp2/resolutions/sc740.xml b/src/xml/escp2/resolutions/sc740.xml new file mode 100644 index 0000000..9f230b7 --- /dev/null +++ b/src/xml/escp2/resolutions/sc740.xml @@ -0,0 +1,108 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Resolutions name="sc740"> + <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.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="360x240sw" text="360 x 240 DPI Draft"> + <physicalResolution>360 240</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.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">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.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.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.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</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.568000</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.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</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.568000</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.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</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.284000</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.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> + <physicalResolution>1440 720</physicalResolution> + <verticalPasses>2</verticalPasses> + <parameter type="float" name="escp2_density">0.284000</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.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + </resolutions> +</escp2Resolutions> +</gutenprint> diff --git a/src/xml/escp2/model/model_19.xml b/src/xml/escp2/resolutions/sc860.xml index b268e98..293cf17 100644 --- a/src/xml/escp2/model/model_19.xml +++ b/src/xml/escp2/resolutions/sc860.xml @@ -17,65 +17,9 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> -<escp2Model id="19"> - <media src="escp2/media/standard.xml"/> - <inputSlots src="escp2/inputslots/default.xml"/> - <qualityPresets src="escp2/qualitypresets/standard.xml"/> - <inkGroup src="escp2/inks/standard.xml"/> - <preinitSequence>\000\000\000\033\001@EJL\0401284.4\012@EJL\040\040\040\040\040\012\033@</preinitSequence> - <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> - <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> - <commandSet>1999</commandSet> - <borderless>No</borderless> - <supportsVariableDropsizes/> - <hasFastGraymode/> - <sendZeroAdvance/> - <supportsD4Mode/> - <preferredEnvelopeOrientation>Landscape</preferredEnvelopeOrientation> - <headConfiguration type="default"> - <Nozzles>48</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>3</NozzleSeparation> - </headConfiguration> - <headConfiguration type="black"> - <Nozzles>144</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <headConfiguration type="fast"> - <Nozzles>144</Nozzles> - <MinNozzles>1</MinNozzles> - <FirstNozzle>0</FirstNozzle> - <NozzleSeparation>1</NozzleSeparation> - </headConfiguration> - <physicalChannels>4</physicalChannels> - <baseSeparation>360</baseSeparation> - <resolutionScale>14400</resolutionScale> - <minimumResolution>90 90</minimumResolution> - <maximumResolution>1440 720</maximumResolution> - <separationRows>1</separationRows> - <minHorizontalAlignment>1</minHorizontalAlignment> - <baseHorizontalAlignment>28800</baseHorizontalAlignment> - <bidirectionalAutoUpperLimit>518400</bidirectionalAutoUpperLimit> - <minimumMediaSize>144 144</minimumMediaSize> - <maximumMediaSize>684 3168</maximumMediaSize> - <maximumImageableArea>612 3168</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> - <AlignmentChoices>3 15 0 0</AlignmentChoices> - <ChannelNames> - <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> +<escp2Resolutions name="sc860"> <resolutions> <resolution translate="text" name="360x120sw" text="360 x 120 DPI Economy"> <physicalResolution>360 120</physicalResolution> @@ -160,5 +104,5 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <parameter type="float" name="DropSize3">1.000000</parameter> </resolution> </resolutions> -</escp2Model> +</escp2Resolutions> </gutenprint> diff --git a/src/xml/escp2/resolutions/sp700.xml b/src/xml/escp2/resolutions/sp700.xml new file mode 100644 index 0000000..c3df31f --- /dev/null +++ b/src/xml/escp2/resolutions/sp700.xml @@ -0,0 +1,113 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Resolutions name="sp700"> + <resolutions> + <resolution translate="text" name="360x90dpi" text="360 x 90 DPI Fast Economy"> + <physicalResolution>360 90</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">2.600000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="180dpi" text="180 DPI Economy"> + <physicalResolution>180 180</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">2.600000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="360x180dpi" text="360 x 180 DPI Draft"> + <physicalResolution>360 180</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">2.600000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="360mw" text="360 DPI High Quality"> + <physicalResolution>360 360</physicalResolution> + <printerWeave command="\033(i\001\000\001"/> + <parameter type="float" name="escp2_density">1.300000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="360" text="360 DPI"> + <physicalResolution>360 360</physicalResolution> + <printerWeave command="\033(i\001\000\000"/> + <parameter type="float" name="escp2_density">1.300000</parameter> + <parameter type="integer" name="escp2_ink_type">3</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">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.300000</parameter> + <parameter type="integer" name="escp2_ink_type">2</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="720sw" text="720 DPI"> + <physicalResolution>720 720</physicalResolution> + <parameter type="float" name="escp2_density">0.775000</parameter> + <parameter type="integer" name="escp2_ink_type">1</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">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.775000</parameter> + <parameter type="integer" name="escp2_ink_type">1</parameter> + <parameter type="integer" name="escp2_base_res">720</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">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.550000</parameter> + <parameter type="integer" name="escp2_ink_type">4</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + <resolution translate="text" name="1440x720hq2" text="1440 x 720 DPI Highest Quality"> + <physicalResolution>1440 720</physicalResolution> + <verticalPasses>2</verticalPasses> + <parameter type="float" name="escp2_density">0.550000</parameter> + <parameter type="integer" name="escp2_ink_type">4</parameter> + <parameter type="integer" name="escp2_base_res">360</parameter> + <parameter type="integer" name="escp2_bits">1</parameter> + <parameter type="float" name="DropSize1">1.000000</parameter> + </resolution> + </resolutions> +</escp2Resolutions> +</gutenprint> diff --git a/src/xml/escp2/resolutions/sp720.xml b/src/xml/escp2/resolutions/sp720.xml new file mode 100644 index 0000000..f6ab5a4 --- /dev/null +++ b/src/xml/escp2/resolutions/sp720.xml @@ -0,0 +1,118 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Resolutions name="sp720"> + <resolutions> + <resolution translate="text" name="360x90sw" text="360 x 90 DPI Fast Economy"> + <physicalResolution>360 90</physicalResolution> + <parameter type="float" name="escp2_density">4.000000</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.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="180sw" text="180 DPI Economy"> + <physicalResolution>180 180</physicalResolution> + <parameter type="float" name="escp2_density">4.000000</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.250000</parameter> + <parameter type="float" name="DropSize2">0.500000</parameter> + <parameter type="float" name="DropSize3">1.000000</parameter> + </resolution> + <resolution translate="text" name="360x180sw" text="360 x 180 DPI Draft"> + <physicalResolution>360 180</physicalResolution> + <parameter type="float" name="escp2_density">4.000000</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.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">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.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.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="720sw" text="720 DPI"> + <physicalResolution>720 720</physicalResolution> + <parameter type="float" name="escp2_density">0.568000</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="720hq" text="720 DPI High Quality"> + <physicalResolution>720 720</physicalResolution> + <verticalPasses>2</verticalPasses> + <parameter type="float" name="escp2_density">0.568000</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="1440x720sw" text="1440 x 720 DPI"> + <physicalResolution>1440 720</physicalResolution> + <parameter type="float" name="escp2_density">0.284000</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="1440x720hq2" text="1440 x 720 DPI Highest Quality"> + <physicalResolution>1440 720</physicalResolution> + <verticalPasses>2</verticalPasses> + <parameter type="float" name="escp2_density">0.284000</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> + </resolutions> +</escp2Resolutions> +</gutenprint> diff --git a/src/xml/escp2/resolutions/wf6xx.xml b/src/xml/escp2/resolutions/wf6xx.xml new file mode 100644 index 0000000..309985c --- /dev/null +++ b/src/xml/escp2/resolutions/wf6xx.xml @@ -0,0 +1,159 @@ +<?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, see https://www.gnu.org/licenses/. +</copyright> +<escp2Resolutions name="wf6xx"> + <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.192</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="5760x1440sw" text="5760 x 1440 DPI"> + <physicalResolution>5760 1440</physicalResolution> + <parameter type="float" name="escp2_density">0.096</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="2880x2880sw" text="2880 x 2880 DPI"> + <physicalResolution>2880 2880</physicalResolution> + <parameter type="float" name="escp2_density">0.096</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="5760x2880sw" text="5760 x 2880 DPI"> + <physicalResolution>5760 2880</physicalResolution> + <parameter type="float" name="escp2_density">0.096</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> + </resolutions> +</escp2Resolutions> +</gutenprint> diff --git a/src/xml/escp2/weaves/Makefile.am b/src/xml/escp2/weaves/Makefile.am index 47c1215..fe0f52b 100644 --- a/src/xml/escp2/weaves/Makefile.am +++ b/src/xml/escp2/weaves/Makefile.am @@ -11,8 +11,7 @@ ## 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. +## along with this program. If not, see <https://www.gnu.org/licenses/>. ## Process this file with automake to produce Makefile.in. diff --git a/src/xml/escp2/weaves/Makefile.in b/src/xml/escp2/weaves/Makefile.in index 85b3b97..fb2841b 100644 --- a/src/xml/escp2/weaves/Makefile.in +++ b/src/xml/escp2/weaves/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,17 @@ #export STP_DATA_PATH = $(top_srcdir)/src/xml VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -83,22 +93,21 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am subdir = src/xml/escp2/weaves ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/stp.m4 $(top_srcdir)/m4/stp_cups.m4 \ - $(top_srcdir)/m4/stp_gimp.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -152,6 +161,8 @@ am__uninstall_files_from_dir = { \ am__installdirs = "$(DESTDIR)$(pkgxmldatadir)" DATA = $(pkgxmldata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/scripts/global.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -162,6 +173,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ BZIP2 = @BZIP2@ CC = @CC@ @@ -182,7 +195,6 @@ DB2PDF = @DB2PDF@ DB2PS = @DB2PS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DIALOG = @DIALOG@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ @@ -199,6 +211,7 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GIMP2_CFLAGS = @GIMP2_CFLAGS@ GIMP2_LIBS = @GIMP2_LIBS@ GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ @@ -261,10 +274,12 @@ LTALLOCA = @LTALLOCA@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ @@ -288,7 +303,6 @@ PKGROOT = @PKGROOT@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PLUG_IN_PATH = @PLUG_IN_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ RELEASE_DATE = @RELEASE_DATE@ @@ -306,9 +320,11 @@ VERSION = @VERSION@ WHICH_PPDS = @WHICH_PPDS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XZ = @XZ@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -376,7 +392,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ 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 pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/escp2/weaves pkgxmldata_DATA = \ pro7000.xml \ @@ -401,16 +416,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/xml/escp2/weaves/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/xml/escp2/weaves/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; -$(top_srcdir)/scripts/global.mk: +$(top_srcdir)/scripts/global.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -454,7 +468,10 @@ ctags CTAGS: cscope cscopelist: -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -606,6 +623,8 @@ uninstall-am: uninstall-pkgxmldataDATA mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-pkgxmldataDATA +.PRECIOUS: Makefile + @SET_MAKE@ @@ -615,10 +634,6 @@ $(top_builddir)/src/main/libgutenprint.la: cd $(top_builddir)/src/main; \ $(MAKE) -$(top_builddir)/src/gutenprintui/libgutenprintui.la: - cd $(top_builddir)/src/gutenprintui; \ - $(MAKE) - $(top_builddir)/src/gutenprintui2/libgutenprintui2.la: cd $(top_builddir)/src/gutenprintui2; \ $(MAKE) diff --git a/src/xml/escp2/weaves/pro7000.xml b/src/xml/escp2/weaves/pro7000.xml index 35cacb1..62b9173 100644 --- a/src/xml/escp2/weaves/pro7000.xml +++ b/src/xml/escp2/weaves/pro7000.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2PrinterWeaves name="pro7000"> <weave translate="text" name="Off" text="Off" command="\033(i\001\000\000"/> diff --git a/src/xml/escp2/weaves/pro7500.xml b/src/xml/escp2/weaves/pro7500.xml index b8f1664..793fd82 100644 --- a/src/xml/escp2/weaves/pro7500.xml +++ b/src/xml/escp2/weaves/pro7500.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2PrinterWeaves name="pro7500"> <weave translate="text" name="Off" text="Off" command="\033(i\001\000\000"/> diff --git a/src/xml/escp2/weaves/pro7600.xml b/src/xml/escp2/weaves/pro7600.xml index 32c2727..1d880a5 100644 --- a/src/xml/escp2/weaves/pro7600.xml +++ b/src/xml/escp2/weaves/pro7600.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2PrinterWeaves name="pro7600"> <weave translate="text" name="Off" text="Off" command="\033(i\001\000\000"/> diff --git a/src/xml/escp2/weaves/standard.xml b/src/xml/escp2/weaves/standard.xml index 6c82fea..d9176db 100644 --- a/src/xml/escp2/weaves/standard.xml +++ b/src/xml/escp2/weaves/standard.xml @@ -17,8 +17,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> <escp2PrinterWeaves name="standard"> <weave translate="text" name="Off" text="Off" command="\033(i\001\000\000"/> diff --git a/src/xml/extract-strings.c b/src/xml/extract-strings.c index 0c3d56b..bbdfe2a 100644 --- a/src/xml/extract-strings.c +++ b/src/xml/extract-strings.c @@ -14,8 +14,7 @@ * 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. + * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* diff --git a/src/xml/papers/Makefile.am b/src/xml/papers/Makefile.am new file mode 100644 index 0000000..fb3c562 --- /dev/null +++ b/src/xml/papers/Makefile.am @@ -0,0 +1,42 @@ +## Copyright (C) 2017 Robert Krawitz +## +## 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, 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, see <https://www.gnu.org/licenses/>. + +## Process this file with automake to produce Makefile.in. + +@SET_MAKE@ + +include $(top_srcdir)/scripts/global.mk + +## Variables + +pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/papers + +pkgxmldata_DATA = \ + standard.xml \ + labels.xml + + +xml-stamp: $(pkgxmldata_DATA) Makefile.am + -rm -f $@ $@.tmp + touch $@.tmp + for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done + mv $@.tmp $@ + +all-local: xml-stamp + +dist-hook: xml-stamp +CLEANFILES = xmli18n-tmp.h xml-stamp xml-stamp.tmp + +EXTRA_DIST = $(pkgxmldata_DATA) diff --git a/src/xml/papers/Makefile.in b/src/xml/papers/Makefile.in new file mode 100644 index 0000000..f39b7ba --- /dev/null +++ b/src/xml/papers/Makefile.in @@ -0,0 +1,651 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Variables + +#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 = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/xml/papers +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +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/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +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) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/scripts/global.mk +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@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ +BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ +BZIP2 = @BZIP2@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMPRESS = @COMPRESS@ +CONVERT = @CONVERT@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSUF = @CSUF@ +CUPS_CFLAGS = @CUPS_CFLAGS@ +CUPS_CONFIG = @CUPS_CONFIG@ +CUPS_LIBS = @CUPS_LIBS@ +CUPS_PPD_PS_LEVEL = @CUPS_PPD_PS_LEVEL@ +CYGPATH_W = @CYGPATH_W@ +DB2HTML = @DB2HTML@ +DB2PDF = @DB2PDF@ +DB2PS = @DB2PS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOXYGEN = @DOXYGEN@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +DVIPDF = @DVIPDF@ +DVIPS = @DVIPS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FIND = @FIND@ +GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GIMP2_CFLAGS = @GIMP2_CFLAGS@ +GIMP2_LIBS = @GIMP2_LIBS@ +GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNUCFLAGS = @GNUCFLAGS@ +GREP = @GREP@ +GTK2_CFLAGS = @GTK2_CFLAGS@ +GTK2_LIBS = @GTK2_LIBS@ +GUTENPRINTUI2_BINARY_AGE = @GUTENPRINTUI2_BINARY_AGE@ +GUTENPRINTUI2_CFLAGS = @GUTENPRINTUI2_CFLAGS@ +GUTENPRINTUI2_CURRENT_INTERFACE = @GUTENPRINTUI2_CURRENT_INTERFACE@ +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@ +GUTENPRINT_INTERFACE_AGE = @GUTENPRINT_INTERFACE_AGE@ +GUTENPRINT_LIBDEPS = @GUTENPRINT_LIBDEPS@ + +# Libraries +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@ +GZIP = @GZIP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ +LIBS = $(INTLLIBS) @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_BACKEND_LIBDEPS = @LIBUSB_BACKEND_LIBDEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LRZIP = @LRZIP@ +LTALLOCA = @LTALLOCA@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKGROOT = @PKGROOT@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +RELEASE_DATE = @RELEASE_DATE@ +RM = @RM@ +RZIP = @RZIP@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TEST = @TEST@ +TEXI2HTML = @TEXI2HTML@ +TRUE = @TRUE@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WHICH_PPDS = @WHICH_PPDS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XZ = @XZ@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +cups_bindir = @cups_bindir@ +cups_conf_datadir = @cups_conf_datadir@ +cups_conf_serverbin = @cups_conf_serverbin@ +cups_conf_serverroot = @cups_conf_serverroot@ +cups_exec_prefix = @cups_exec_prefix@ +cups_prefix = @cups_prefix@ +cups_sbindir = @cups_sbindir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gimp2_plug_indir = @gimp2_plug_indir@ +gutenprint_cflags = @gutenprint_cflags@ +gutenprint_libdeps = @gutenprint_libdeps@ +gutenprint_libs = @gutenprint_libs@ +gutenprintui2_cflags = @gutenprintui2_cflags@ +gutenprintui2_libdeps = @gutenprintui2_libdeps@ +gutenprintui2_libs = @gutenprintui2_libs@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(LOCAL_CPPFLAGS) $(GNUCFLAGS) +pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/papers +pkgxmldata_DATA = \ + standard.xml \ + labels.xml + +CLEANFILES = xmli18n-tmp.h xml-stamp xml-stamp.tmp +EXTRA_DIST = $(pkgxmldata_DATA) +all: all-am + +.SUFFIXES: +$(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 \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/xml/papers/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/xml/papers/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; +$(top_srcdir)/scripts/global.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgxmldataDATA: $(pkgxmldata_DATA) + @$(NORMAL_INSTALL) + @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"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgxmldatadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgxmldatadir)" || exit $$?; \ + done + +uninstall-pkgxmldataDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgxmldatadir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: check-am +all-am: Makefile $(DATA) all-local +installdirs: + for dir in "$(DESTDIR)$(pkgxmldatadir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + 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: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgxmldataDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgxmldataDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am all-local check check-am clean clean-generic \ + 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 + +.PRECIOUS: Makefile + + +@SET_MAKE@ + +# Rules + +$(top_builddir)/src/main/libgutenprint.la: + cd $(top_builddir)/src/main; \ + $(MAKE) + +$(top_builddir)/src/gutenprintui2/libgutenprintui2.la: + cd $(top_builddir)/src/gutenprintui2; \ + $(MAKE) + +xml-stamp: $(pkgxmldata_DATA) Makefile.am + -rm -f $@ $@.tmp + touch $@.tmp + for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done + mv $@.tmp $@ + +all-local: xml-stamp + +dist-hook: xml-stamp + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/xml/papers/labels.xml b/src/xml/papers/labels.xml new file mode 100644 index 0000000..396f394 --- /dev/null +++ b/src/xml/papers/labels.xml @@ -0,0 +1,317 @@ +<?xml version="1.0"?> + +<!-- + + XML description of papers known to libgutenprint. + You can add additional paper sizes here. + + NOTE: Margins should ONLY be specified for papers where the margin + is a property of the paper itself, for example a tear-off border. + Do NOT specify margins here to work around issues such as margins + being cut off (not printed) by the driver or by the printer itself. + These should either be handled with the Shrink Page If Necessary to + Fit Borders option (in CUPS) or if that doesn't work, by filing a + bug. + + Changing borders here will change borders for ALL printers, even + even printers without whatever limitation it is that induced you + to consider setting margins in this file. It is not under ANY + circumstances (other than the paper itself having margins) the right + thing to do. + + Sizes are converted to 1/72in. +--> + + +<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, see https://www.gnu.org/licenses/. +</copyright> + <paperdef name="labels"> + <paper name="d-o400x600"> + <description translate="value" value="4.00x6.00 in label"/> + <width value="288"/> + <height value="432"/> + <unit value="english"/> + </paper> + <paper name="d-o100x400"> + <description translate="value" value="1.00x4.00 in label"/> + <width value="72"/> + <height value="288"/> + <unit value="english"/> + </paper> + <paper name="d-o131x400"> + <description translate="value" value="1.31x4.00 in label"/> + <width value="94"/> + <height value="288"/> + <unit value="english"/> + </paper> + <paper name="d-o056x344"> + <description translate="value" value="0.56x3.44 in label"/> + <width value="40"/> + <height value="248"/> + <unit value="english"/> + </paper> + <paper name="d-o319x350"> + <description translate="value" value="3.19x3.50 in label"/> + <width value="230"/> + <height value="252"/> + <unit value="english"/> + </paper> + <paper name="d-o100x263"> + <description translate="value" value="1.00x2.63 in label"/> + <width value="72"/> + <height value="189"/> + <unit value="english"/> + </paper> + <paper name="d-o200x100"> + <description translate="value" value="2.00x1.00 in label"/> + <width value="144"/> + <height value="72"/> + <unit value="english"/> + </paper> + <paper name="d-o200x150"> + <description translate="value" value="2.00x1.50 in label"/> + <width value="144"/> + <height value="108"/> + <unit value="english"/> + </paper> + <paper name="d-o200x400"> + <description translate="value" value="2.00x4.00 in label"/> + <width value="144"/> + <height value="288"/> + <unit value="english"/> + </paper> + <paper name="d-o225x550"> + <description translate="value" value="2.25x5.50 in label"/> + <width value="162"/> + <height value="396"/> + <unit value="english"/> + </paper> + <paper name="d-o300x200"> + <description translate="value" value="3.00x2.00 in label"/> + <width value="216"/> + <height value="144"/> + <unit value="english"/> + </paper> + <paper name="d-o300x300"> + <description translate="value" value="3.00x3.00 in label"/> + <width value="216"/> + <height value="216"/> + <unit value="english"/> + </paper> + <paper name="d-o319x175"> + <description translate="value" value="3.19x1.75 in label"/> + <width value="230"/> + <height value="126"/> + <unit value="english"/> + </paper> + <paper name="d-o350x200"> + <description translate="value" value="3.50x2.00 in label"/> + <width value="252"/> + <height value="144"/> + <unit value="english"/> + </paper> + <paper name="d-o400x200"> + <description translate="value" value="4.00x2.00 in label"/> + <width value="288"/> + <height value="144"/> + <unit value="english"/> + </paper> + <paper name="d-o400x300"> + <description translate="value" value="4.00x3.00 in label"/> + <width value="288"/> + <height value="216"/> + <unit value="english"/> + </paper> + <paper name="d-o400x400"> + <description translate="value" value="4.00x4.00 in label"/> + <width value="288"/> + <height value="288"/> + <unit value="english"/> + </paper> + <paper name="d-o400x500"> + <description translate="value" value="4.00x5.00 in label"/> + <width value="288"/> + <height value="360"/> + <unit value="english"/> + </paper> + <paper name="d-o400x650"> + <description translate="value" value="4.00x6.50 in label"/> + <width value="288"/> + <height value="468"/> + <unit value="english"/> + </paper> + <paper name="d-o400x800"> + <description translate="value" value="4.00x8.00 in label"/> + <width value="288"/> + <height value="576"/> + <unit value="english"/> + </paper> + <paper name="d-o400x1300"> + <description translate="value" value="4.00x13.00 in label"/> + <width value="288"/> + <height value="936"/> + <unit value="english"/> + </paper> + <paper name="d-o600x200"> + <description translate="value" value="6.00x2.00 in label"/> + <width value="432"/> + <height value="144"/> + <unit value="english"/> + </paper> + <paper name="d-o600x300"> + <description translate="value" value="6.00x3.00 in label"/> + <width value="432"/> + <height value="216"/> + <unit value="english"/> + </paper> + <paper name="d-o600x400"> + <description translate="value" value="6.00x4.00 in label"/> + <width value="432"/> + <height value="288"/> + <unit value="english"/> + </paper> + <paper name="d-o600x500"> + <description translate="value" value="6.00x5.00 in label"/> + <width value="432"/> + <height value="360"/> + <unit value="english"/> + </paper> + <paper name="d-o600x600"> + <description translate="value" value="6.00x6.00 in label"/> + <width value="432"/> + <height value="432"/> + <unit value="english"/> + </paper> + <paper name="d-o800x1200"> + <description translate="value" value="8.00x12.00 in label"/> + <width value="576"/> + <height value="864"/> + <unit value="english"/> + </paper> + <paper name="d-o850x600"> + <description translate="value" value="8.50x6.00 in label"/> + <width value="612"/> + <height value="432"/> + <unit value="english"/> + </paper> + <paper name="d-o850x1100"> + <description translate="value" value="8.50x11.00 in label"/> + <width value="612"/> + <height value="792"/> + <unit value="english"/> + </paper> + <paper name="d-o250x313"> + <description translate="value" value="2.50x3.13 in label"/> + <width value="180"/> + <height value="225"/> + <unit value="english"/> + </paper> + <paper name="d-o050x175"> + <description translate="value" value="0.50x1.75 in label"/> + <width value="36"/> + <height value="126"/> + <unit value="english"/> + </paper> + <paper name="d-o175x300"> + <description translate="value" value="1.75x3.00 in label"/> + <width value="126"/> + <height value="216"/> + <unit value="english"/> + </paper> + <paper name="d-o075x575"> + <description translate="value" value="0.75x5.75 label"/> + <width value="54"/> + <height value="414"/> + <unit value="english"/> + </paper> + <paper name="d-o44x31"> + <description translate="value" value="44x31 mm label"/> + <width value="125"/> + <height value="88"/> + <unit value="metric"/> + </paper> + <paper name="d-o62x44"> + <description translate="value" value="62x44 mm label"/> + <width value="176"/> + <height value="125"/> + <unit value="metric"/> + </paper> + <paper name="d-o74x52"> + <description translate="value" value="74x52 mm label"/> + <width value="210"/> + <height value="147"/> + <unit value="metric"/> + </paper> + <paper name="d-o88x62"> + <description translate="value" value="88x62 mm label"/> + <width value="249"/> + <height value="176"/> + <unit value="metric"/> + </paper> + <paper name="d-o105x74"> + <description translate="value" value="105x74 mm label"/> + <width value="298"/> + <height value="210"/> + <unit value="metric"/> + </paper> + <paper name="d-o125x88"> + <description translate="value" value="125x88 mm label"/> + <width value="354"/> + <height value="249"/> + <unit value="metric"/> + </paper> + <paper name="d-o148x105"> + <description translate="value" value="148x105 mm label"/> + <width value="420"/> + <height value="298"/> + <unit value="metric"/> + </paper> + <paper name="d-o176x125"> + <description translate="value" value="176x125 mm label"/> + <width value="499"/> + <height value="354"/> + <unit value="metric"/> + </paper> + <paper name="d-o210x148"> + <description translate="value" value="210x148 mm label"/> + <width value="595"/> + <height value="420"/> + <unit value="metric"/> + </paper> + <paper name="d-o250x176"> + <description translate="value" value="250x176 mm label"/> + <width value="709"/> + <height value="499"/> + <unit value="metric"/> + </paper> + <paper name="d-o297x210"> + <description translate="value" value="297x210 mm label"/> + <width value="842"/> + <height value="595"/> + <unit value="metric"/> + </paper> + <paper name="Custom"> + <description translate="value" value="Custom"/> + <comment value="User-Defined Size"/> + <width value="0"/> + <height value="0"/> + <unit value="english"/> + </paper> + </paperdef> +</gutenprint> diff --git a/src/xml/papers.xml b/src/xml/papers/standard.xml index a816df0..d3fcbf0 100644 --- a/src/xml/papers.xml +++ b/src/xml/papers/standard.xml @@ -40,10 +40,9 @@ * 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. + * along with this program. If not, see https://www.gnu.org/licenses/. </copyright> - <paperdef> + <paperdef name="standard"> <!-- GROUP: Imperial --> <paper name="Letter"> <description translate="value" value="Letter"/> @@ -115,13 +114,6 @@ <height value="360"/> <unit value="english-extended"/> </paper> - <paper name="w252h338"> - <description translate="value" value="3.5x4.7"/> - <comment value="Only used by CW-01/OP900 dyesub printers"/> - <width value="252"/> - <height value="338"/> - <unit value="english-extended"/> - </paper> <paper name="w252h360"> <description translate="value" value="3 1/2 x5"/> <width value="252"/> @@ -152,13 +144,6 @@ <height value="432"/> <unit value="english"/> </paper> - <paper name="w324h432"> - <description translate="value" value="4.5x6"/> - <comment value="Only used by DS620 dyesub printer"/> - <width value="324"/> - <height value="432"/> - <unit value="english-extended"/> - </paper> <paper name="w324h495"> <description translate="value" value="Epson 4x6 Photo Paper (tear-off borders)"/> <width value="324"/> @@ -185,13 +170,6 @@ <height value="576"/> <unit value="english-extended"/> </paper> - <paper name="w338h504"> - <description translate="value" value="4.7x7"/> - <comment value="Only used by CW-01/OP900 dyesub printers"/> - <width value="338"/> - <height value="504"/> - <unit value="english-extended"/> - </paper> <paper name="w360h504"> <description translate="value" value="5x7"/> <width value="360"/> @@ -210,26 +188,12 @@ <height value="576"/> <unit value="english-extended"/> </paper> - <paper name="w432h432"> - <description translate="value" value="6x6"/> - <comment value="Only used by certain dyesub models"/> - <width value="432"/> - <height value="432"/> - <unit value="english-extended"/> - </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"/> - <comment value="Only used by certain Mitsubishi dyesub models"/> - <width value="432"/> - <height value="612"/> - <unit value="english-extended"/> - </paper> <paper name="w432h648"> <description translate="value" value="6x9"/> <width value="432"/> @@ -278,75 +242,12 @@ <!-- Other common photographic paper sizes --> - <paper name="w213h284"> - <description translate="value" value="1280x960"/> - <comment value="Only used by Mitsubishi P95DW"/> - <width value="213"/> - <height value="284"/> - <unit value="english-extended"/> - </paper> - <paper name="w227h284"> - <description translate="value" value="1280x1024"/> - <comment value="Only used by Mitsubishi P95DW"/> - <width value="227"/> - <height value="284"/> - <unit value="english-extended"/> - </paper> - <paper name="w284h284"> - <description translate="value" value="1280x1280"/> - <comment value="Only used by Mitsubishi P95DW"/> - <width value="284"/> - <height value="284"/> - <unit value="english-extended"/> - </paper> - <paper name="w284h426"> - <description translate="value" value="1280x1920"/> - <comment value="Only used by Mitsubishi P95DW"/> - <width value="284"/> - <height value="426"/> - <unit value="english-extended"/> - </paper> - <paper name="w284h1277"> - <description translate="value" value="1280x5760"/> - <comment value="Only used by Mitsubishi P95DW"/> - <width value="284"/> - <height value="1277"/> - <unit value="english-extended"/> - </paper> <paper name="w360h360"> <description translate="value" value="5x5"/> <width value="360"/> <height value="360"/> <unit value="english-extended"/> </paper> - <paper name="w504h576"> - <description translate="value" value="8x7"/> - <comment value="Only used by DS820 dyesub printer"/> - <width value="576"/> - <height value="504"/> - <unit value="english-extended"/> - </paper> - <paper name="w576h576"> - <description translate="value" value="8x8"/> - <comment value="Only used by certain dyesub models"/> - <width value="576"/> - <height value="576"/> - <unit value="english-extended"/> - </paper> - <paper name="w576h648"> - <description translate="value" value="8x9"/> - <comment value="Only used by DS820 dyesub printer"/> - <width value="576"/> - <height value="648"/> - <unit value="english-extended"/> - </paper> - <paper name="w576h774"> - <description translate="value" value="8x10.75"/> - <comment value="Only used by DS80DX dyesub printer"/> - <width value="576"/> - <height value="774"/> - <unit value="english-extended"/> - </paper> <paper name="w576h864"> <description translate="value" value="8x12"/> <comment value="Sometimes used for 35mm"/> @@ -354,20 +255,6 @@ <height value="864"/> <unit value="english-extended"/> </paper> - <paper name="w576h842"> - <description translate="value" value="8x11.7"/> - <comment value="Only used by DS80, DS80DX, DS820 dyesub printers"/> - <width value="576"/> - <height value="842"/> - <unit value="english-extended"/> - </paper> - <paper name="w612h864"> - <description translate="value" value="8.5x12"/> - <comment value="Only used by Kodak 1400 and 805 dyesub printers"/> - <width value="612"/> - <height value="864"/> - <unit value="english"/> - </paper> <paper name="w720h864J"> <description translate="value" value="YonKire"/> <comment value="10in x 12in"/> @@ -1473,441 +1360,6 @@ <unit value="metric-extended"/> </paper> -<!-- Group Labels --> - <paper name="d-o400x600"> - <description translate="value" value="4.00x6.00 in label"/> - <width value="288"/> - <height value="432"/> - <unit value="english"/> - </paper> - <paper name="d-o100x400"> - <description translate="value" value="1.00x4.00 in label"/> - <width value="72"/> - <height value="288"/> - <unit value="english"/> - </paper> - <paper name="d-o131x400"> - <description translate="value" value="1.31x4.00 in label"/> - <width value="94"/> - <height value="288"/> - <unit value="english"/> - </paper> - <paper name="d-o056x344"> - <description translate="value" value="0.56x3.44 in label"/> - <width value="40"/> - <height value="248"/> - <unit value="english"/> - </paper> - <paper name="d-o319x350"> - <description translate="value" value="3.19x3.50 in label"/> - <width value="230"/> - <height value="252"/> - <unit value="english"/> - </paper> - <paper name="d-o100x263"> - <description translate="value" value="1.00x2.63 in label"/> - <width value="72"/> - <height value="189"/> - <unit value="english"/> - </paper> - <paper name="d-o200x100"> - <description translate="value" value="2.00x1.00 in label"/> - <width value="144"/> - <height value="72"/> - <unit value="english"/> - </paper> - <paper name="d-o200x150"> - <description translate="value" value="2.00x1.50 in label"/> - <width value="144"/> - <height value="108"/> - <unit value="english"/> - </paper> - <paper name="d-o200x400"> - <description translate="value" value="2.00x4.00 in label"/> - <width value="144"/> - <height value="288"/> - <unit value="english"/> - </paper> - <paper name="d-o225x550"> - <description translate="value" value="2.25x5.50 in label"/> - <width value="162"/> - <height value="396"/> - <unit value="english"/> - </paper> - <paper name="d-o300x200"> - <description translate="value" value="3.00x2.00 in label"/> - <width value="216"/> - <height value="144"/> - <unit value="english"/> - </paper> - <paper name="d-o300x300"> - <description translate="value" value="3.00x3.00 in label"/> - <width value="216"/> - <height value="216"/> - <unit value="english"/> - </paper> - <paper name="d-o319x175"> - <description translate="value" value="3.19x1.75 in label"/> - <width value="230"/> - <height value="126"/> - <unit value="english"/> - </paper> - <paper name="d-o350x200"> - <description translate="value" value="3.50x2.00 in label"/> - <width value="252"/> - <height value="144"/> - <unit value="english"/> - </paper> - <paper name="d-o400x200"> - <description translate="value" value="4.00x2.00 in label"/> - <width value="288"/> - <height value="144"/> - <unit value="english"/> - </paper> - <paper name="d-o400x300"> - <description translate="value" value="4.00x3.00 in label"/> - <width value="288"/> - <height value="216"/> - <unit value="english"/> - </paper> - <paper name="d-o400x400"> - <description translate="value" value="4.00x4.00 in label"/> - <width value="288"/> - <height value="288"/> - <unit value="english"/> - </paper> - <paper name="d-o400x500"> - <description translate="value" value="4.00x5.00 in label"/> - <width value="288"/> - <height value="360"/> - <unit value="english"/> - </paper> - <paper name="d-o400x650"> - <description translate="value" value="4.00x6.50 in label"/> - <width value="288"/> - <height value="468"/> - <unit value="english"/> - </paper> - <paper name="d-o400x800"> - <description translate="value" value="4.00x8.00 in label"/> - <width value="288"/> - <height value="576"/> - <unit value="english"/> - </paper> - <paper name="d-o400x1300"> - <description translate="value" value="4.00x13.00 in label"/> - <width value="288"/> - <height value="936"/> - <unit value="english"/> - </paper> - <paper name="d-o600x200"> - <description translate="value" value="6.00x2.00 in label"/> - <width value="432"/> - <height value="144"/> - <unit value="english"/> - </paper> - <paper name="d-o600x300"> - <description translate="value" value="6.00x3.00 in label"/> - <width value="432"/> - <height value="216"/> - <unit value="english"/> - </paper> - <paper name="d-o600x400"> - <description translate="value" value="6.00x4.00 in label"/> - <width value="432"/> - <height value="288"/> - <unit value="english"/> - </paper> - <paper name="d-o600x500"> - <description translate="value" value="6.00x5.00 in label"/> - <width value="432"/> - <height value="360"/> - <unit value="english"/> - </paper> - <paper name="d-o600x600"> - <description translate="value" value="6.00x6.00 in label"/> - <width value="432"/> - <height value="432"/> - <unit value="english"/> - </paper> - <paper name="d-o800x1200"> - <description translate="value" value="8.00x12.00 in label"/> - <width value="576"/> - <height value="864"/> - <unit value="english"/> - </paper> - <paper name="d-o850x600"> - <description translate="value" value="8.50x6.00 in label"/> - <width value="612"/> - <height value="432"/> - <unit value="english"/> - </paper> - <paper name="d-o850x1100"> - <description translate="value" value="8.50x11.00 in label"/> - <width value="612"/> - <height value="792"/> - <unit value="english"/> - </paper> - <paper name="d-o250x313"> - <description translate="value" value="2.50x3.13 in label"/> - <width value="180"/> - <height value="225"/> - <unit value="english"/> - </paper> - <paper name="d-o050x175"> - <description translate="value" value="0.50x1.75 in label"/> - <width value="36"/> - <height value="126"/> - <unit value="english"/> - </paper> - <paper name="d-o175x300"> - <description translate="value" value="1.75x3.00 in label"/> - <width value="126"/> - <height value="216"/> - <unit value="english"/> - </paper> - <paper name="d-o075x575"> - <description translate="value" value="0.75x5.75 label"/> - <width value="54"/> - <height value="414"/> - <unit value="english"/> - </paper> - <paper name="d-o44x31"> - <description translate="value" value="44x31 mm label"/> - <width value="125"/> - <height value="88"/> - <unit value="metric"/> - </paper> - <paper name="d-o62x44"> - <description translate="value" value="62x44 mm label"/> - <width value="176"/> - <height value="125"/> - <unit value="metric"/> - </paper> - <paper name="d-o74x52"> - <description translate="value" value="74x52 mm label"/> - <width value="210"/> - <height value="147"/> - <unit value="metric"/> - </paper> - <paper name="d-o88x62"> - <description translate="value" value="88x62 mm label"/> - <width value="249"/> - <height value="176"/> - <unit value="metric"/> - </paper> - <paper name="d-o105x74"> - <description translate="value" value="105x74 mm label"/> - <width value="298"/> - <height value="210"/> - <unit value="metric"/> - </paper> - <paper name="d-o125x88"> - <description translate="value" value="125x88 mm label"/> - <width value="354"/> - <height value="249"/> - <unit value="metric"/> - </paper> - <paper name="d-o148x105"> - <description translate="value" value="148x105 mm label"/> - <width value="420"/> - <height value="298"/> - <unit value="metric"/> - </paper> - <paper name="d-o176x125"> - <description translate="value" value="176x125 mm label"/> - <width value="499"/> - <height value="354"/> - <unit value="metric"/> - </paper> - <paper name="d-o210x148"> - <description translate="value" value="210x148 mm label"/> - <width value="595"/> - <height value="420"/> - <unit value="metric"/> - </paper> - <paper name="d-o250x176"> - <description translate="value" value="250x176 mm label"/> - <width value="709"/> - <height value="499"/> - <unit value="metric"/> - </paper> - <paper name="d-o297x210"> - <description translate="value" value="297x210 mm label"/> - <width value="842"/> - <height value="595"/> - <unit value="metric"/> - </paper> - - <!-- - Special dyesub-specific sizes - - These are all used solely to expose multicut parameters - - They can be removed once we figure out a better paper API - --> - <paper name="A4-div2"> - <description translate="value" value="A5*2"/> - <comment value="Only used by DNP DS820"/> - <width value="595"/> - <height value="842"/> - <unit value="metric"/> - </paper> - <paper name="A4x4inch"> - <description translate="value" value="A4 width * 4inch"/> - <comment value="Only used by DNP DS820"/> - <width value="595"/> - <height value="288"/> - <unit value="metric"/> - </paper> - <paper name="A4x5inch"> - <description translate="value" value="A4 width * 5inch"/> - <comment value="Only used by DNP DS820"/> - <width value="595"/> - <height value="360"/> - <unit value="metric"/> - </paper> - <paper name="A4x6inch"> - <description translate="value" value="A4 width * 6inch"/> - <comment value="Only used by DNP DS820"/> - <width value="595"/> - <height value="432"/> - <unit value="metric"/> - </paper> - <paper name="A4x8inch"> - <description translate="value" value="A4 width * 8inch"/> - <comment value="Only used by DNP DS820"/> - <width value="595"/> - <height value="576"/> - <unit value="metric"/> - </paper> - <paper name="A4x10inch"> - <description translate="value" value="A4 width * 10inch"/> - <comment value="Only used by DNP DS820"/> - <width value="595"/> - <height value="720"/> - <unit value="metric"/> - </paper> - <paper name="A4x10inch-div2"> - <description translate="value" value="A4 width * 5 inch x2"/> - <comment value="Only used by DNP DS820"/> - <width value="595"/> - <height value="720"/> - <unit value="metric"/> - </paper> - <paper name="w288h432-div2"> - <description translate="value" value="2x6*2"/> - <width value="288"/> - <height value="432"/> - <unit value="english"/> - <type value="special"/> - </paper> - <paper name="w360h504-div2"> - <description translate="value" value="3.5x5*2"/> - <width value="360"/> - <height value="504"/> - <unit value="english-extended"/> - <type value="special"/> - </paper> - <paper name="w432h576-div2"> - <description translate="value" value="4x6*2"/> - <width value="432"/> - <height value="576"/> - <unit value="english-extended"/> - <type value="special"/> - </paper> - <paper name="w432h576-div4"> - <description translate="value" value="2x6*4"/> - <width value="432"/> - <height value="576"/> - <unit value="english-extended"/> - <type value="special"/> - </paper> - <paper name="w432h576-w432h432_w432h144"> - <description translate="value" value="6x6+2x6"/> - <width value="432"/> - <height value="576"/> - <unit value="english-extended"/> - <type value="special"/> - </paper> - <paper name="w432h648-div2"> - <description translate="value" value="4.5x6*2"/> - <width value="432"/> - <height value="648"/> - <unit value="english-extended"/> - <type value="special"/> - </paper> - <paper name="w576h576-div2"> - <description translate="value" value="4x8*2"/> - <width value="576"/> - <height value="576"/> - <unit value="english-extended"/> - <type value="special"/> - </paper> - <paper name="w576h648-w576h360_w576h288"> - <description translate="value" value="8x5+8x4"/> - <width value="576"/> - <height value="648"/> - <unit value="english-extended"/> - </paper> - <paper name="c8x10-div2"> - <description translate="value" value="8x5*2"/> - <width value="576"/> - <height value="720"/> - <unit value="english-extended"/> - <type value="special"/> - </paper> - <paper name="c8x10-w576h432_w576h288"> - <description translate="value" value="8x6+8x4"/> - <width value="576"/> - <height value="720"/> - <unit value="english-extended"/> - <type value="special"/> - </paper> - <paper name="w576h774-w576h756"> - <description translate="value" value="8x10.5"/> - <comment value="Only used by DS80DX dyesub printer"/> - <width value="576"/> - <height value="774"/> - <unit value="english-extended"/> - <type value="special"/> - </paper> - <paper name="w576h792-w576h432_w576h360"> - <description translate="value" value="8x6+8x5"/> - <width value="576"/> - <height value="792"/> - <unit value="english-extended"/> - <type value="special"/> - </paper> - <paper name="w576h864-div2"> - <description translate="value" value="8x6*2"/> - <width value="576"/> - <height value="864"/> - <unit value="english-extended"/> - <type value="special"/> - </paper> - <paper name="w576h864-div3"> - <description translate="value" value="8x4*3"/> - <width value="576"/> - <height value="864"/> - <unit value="english-extended"/> - <type value="special"/> - </paper> - <paper name="w576h864-div3sheet"> - <description translate="value" value="8x4*3"/> - <width value="576"/> - <height value="864"/> - <unit value="english-extended"/> - <type value="special"/> - </paper> - <paper name="w576h864-w576h576_w576h288"> - <description translate="value" value="8x8+8x4"/> - <width value="576"/> - <height value="864"/> - <unit value="english-extended"/> - <type value="special"/> - </paper> - <!-- Custom --> diff --git a/src/xml/printers.xml b/src/xml/printers.xml deleted file mode 100644 index 3c8822a..0000000 --- a/src/xml/printers.xml +++ /dev/null @@ -1,3225 +0,0 @@ -<?xml version="1.0"?> - -<!-- - - XML description of printers known to libgutenprint - You can add additional printers here, but the underlying driver has - to know about the model number. You can have different printers - with the same model number but different parameters; this means - printers that are functionally identical but have different ink - characteristics. - - Each printer must have a unique driver name (even if the underlying - driver is identical) to allow a unique mapping between driver - name and printer name (the mapping is done both ways). - - NOTE TO TRANSLATORS: Printer names should not be translated into - their equivalents (the same printer sold under a different name) - in other countries. The correct way to handle this is to add - another printer to this list. Translations should be done for - e. g. character sets. - - For example, a Japanese printer will have the same model name wherever - it is used and with whatever language the user speaks. ---> - -<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> - <printdef> - <family name="ps"> - <printer translate="name" name="PostScript Level 1" driver="ps" manufacturer="Adobe" model="0" /> - <printer translate="name" name="PostScript Level 2" driver="ps2" manufacturer="Adobe" model="1" /> - </family> - <family name="canon"> - <parameters name="density_800_params"> - <parameter type="float" name="Density">0.8</parameter> - </parameters> - <parameters name="gamma_5_density_800_params"> - <parameter type="float" name="Density">0.8</parameter> - <parameter type="float" name="Gamma">0.5</parameter> - </parameters> - <parameters name="gamma_6_density_800_params"> - <parameter type="float" name="Density">0.8</parameter> - <parameter type="float" name="Gamma">0.6</parameter> - </parameters> - <parameters name="gamma_8_density_900_params"> - <parameter type="float" name="Density">0.9</parameter> - <parameter type="float" name="Gamma">0.8</parameter> - </parameters> - <parameters name="gamma_2_density_800_params"> - <parameter type="float" name="Density">0.8</parameter> - <parameter type="float" name="Gamma">2.0</parameter> - </parameters> - <parameters name="gamma_750_params"> - <parameter type="float" name="Gamma">0.75</parameter> - </parameters> - <parameters name="PIXMA_iP4000_params"> - <parameter type="float" name="Gamma">0.60</parameter> - </parameters> - <parameters name="PIXMA_iP4200_params"> - <parameter type="float" name="Brightness">1.30</parameter> - <parameter type="float" name="Gamma">0.70</parameter> - <parameter type="float" name="Density">0.80</parameter> - </parameters> - <parameters name="PIXMA_iP4300_params"> - <parameter type="float" name="Brightness">0.7</parameter> - <parameter type="float" name="Density">0.6</parameter> - <parameter type="float" name="Contrast">1.7</parameter> - <parameter type="float" name="Gamma">0.9</parameter> - <parameter type="float" name="BlackGamma">0.6</parameter> - </parameters> - <parameters name="PIXMA_iX5000_params"> - <parameter type="float" name="BlackGamma">2.0</parameter> - <parameter type="float" name="YellowGamma">1.4</parameter> - <parameter type="float" name="MagentaGamma">1.3</parameter> - <parameter type="float" name="CyanGamma">1.3</parameter> - </parameters> - <printer translate="name" name="Canon BJ-30" driver="bjc-30" manufacturer="Canon" model="30" parameters="gamma_2_density_800_params" /> - <printer translate="name" name="Canon BJC-50" deviceid="MFG:Canon;MDL:BJC-50;" driver="bjc-50" manufacturer="Canon" model="4400" parameters="gamma_5_density_800_params" /> - <printer translate="name" name="Canon BJC-55" deviceid="MFG:Canon;MDL:BJC-55;" driver="bjc-55" manufacturer="Canon" model="4400" parameters="gamma_5_density_800_params" /> - <printer translate="name" name="Canon BJC-80" deviceid="MFG:Canon;MDL:BJC-80;" driver="bjc-80" manufacturer="Canon" model="4400" parameters="gamma_5_density_800_params" /> - <printer translate="name" name="Canon BJC-85" deviceid="MFG:Canon;MDL:BJC-85;" driver="bjc-85" manufacturer="Canon" model="85" parameters="gamma_5_density_800_params" /> - <printer translate="name" name="Canon BJC-210" deviceid="MFG:Canon;MDL:BJC-210;DES:Canon BJC-210;CMD:BJ,LQ,BJL,BJRaster;" driver="bjc-210" manufacturer="Canon" model="210" parameters="density_800_params" /> - <printer translate="name" name="Canon BJC-240" driver="bjc-240" manufacturer="Canon" model="240" parameters="density_800_params" /> - <printer translate="name" name="Canon BJC-250" deviceid="MFG:Canon;MDL:BJC-250;DES:Canon BJC-250;CMD:BJ,LQ,BJL,BJRaster,BSCC;" driver="bjc-250" manufacturer="Canon" model="250" parameters="density_800_params" /> - <printer translate="name" name="Canon BJC-1000" deviceid="MFG:Canon;MDL:BJC-1000;DES:Canon BJC-1000;CMD:BJL,BJRaster,BSCC,TXT01;" driver="bjc-1000" manufacturer="Canon" model="1000" parameters="density_800_params" /> - <printer translate="name" name="Canon BJC-2000" driver="bjc-2000" manufacturer="Canon" model="2000" parameters="density_800_params" /> - <printer translate="name" name="Canon BJC-2010" driver="bjc-2010" manufacturer="Canon" model="2000" parameters="density_800_params" /> - <printer translate="name" name="Canon BJC-2100" deviceid="MFG:Canon;MDL:BJC-2100;DES:Canon BJC-2100;" driver="bjc-2100" manufacturer="Canon" model="2100" parameters="gamma_750_params" /> - <printer translate="name" name="Canon BJC-2110" driver="bjc-2110" manufacturer="Canon" model="2100" parameters="density_800_params" /> - <printer translate="name" name="Canon BJC-3000" deviceid="MFG:Canon;MDL:BJC-3000;DES:Canon BJC-3000;CMD:BJL,BJRaster3,BSCC,TXT01,BJScan2;" driver="bjc-3000" manufacturer="Canon" model="3000" parameters="density_800_params" /> - <printer translate="name" name="Canon BJC-4000" driver="bjc-4000" manufacturer="Canon" model="4300" parameters="gamma_750_params" /> - <printer translate="name" name="Canon BJC-4300" deviceid="MFG:Canon;MDL:BJC-4300;DES:Canon BJC-4300;CMD:BJ,LQ,BJL,BJRaster,BSCC;" driver="bjc-4300" manufacturer="Canon" model="4300" parameters="gamma_750_params" /> - <printer translate="name" name="Canon BJC-4400" deviceid="MFG:Canon;MDL:BJC-4400;DES:Canon BJC-4400;CMD:BJ,LQ,BJL,BJRaster,BSCC;" driver="bjc-4400" manufacturer="Canon" model="4400" parameters="density_800_params" /> - <printer translate="name" name="Canon BJC-4550" driver="bjc-4550" manufacturer="Canon" model="4550" parameters="density_800_params" /> - <printer translate="name" name="Canon BJC-5100" driver="bjc-5100" manufacturer="Canon" model="5100" parameters="density_800_params" /> - <printer translate="name" name="Canon BJC-5500" driver="bjc-5500" manufacturer="Canon" model="5500" parameters="density_800_params" /> - <printer translate="name" name="Canon BJC-5500J" driver="bjc-5500j" manufacturer="Canon" model="5500" parameters="density_800_params" /> - <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" /> - <printer translate="name" name="Canon BJC-6100" driver="bjc-6100" manufacturer="Canon" model="6100" parameters="density_800_params" /> - <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" /> - <printer translate="name" name="Canon BJC-6500" driver="bjc-6500" manufacturer="Canon" model="6500" parameters="gamma_750_params" /> - <printer translate="name" name="Canon BJC-7000" driver="bjc-7000" manufacturer="Canon" model="7000" parameters="gamma_6_density_800_params" /> - <printer translate="name" name="Canon BJC-7100" driver="bjc-7100" manufacturer="Canon" model="7100" parameters="density_800_params" /> - <printer translate="name" name="Canon BJC-8200" deviceid="MFG:Canon;MDL:BJC-8200;DES:Canon;CMD:BJL,BJRaster3,BSCC,TXT01;" driver="bjc-8200" manufacturer="Canon" model="8200" parameters="density_800_params" /> - <printer translate="name" name="Canon BJC-8500" driver="bjc-8500" manufacturer="Canon" model="8500" parameters="density_800_params" /> - <printer translate="name" name="Canon S100" deviceid="MFG:Canon;MDL:S100SP;DES:Canon S100SP;CMD:BJL,BJRaster,BSCC,TXT01;" driver="bjc-s100" manufacturer="Canon" model="4300" parameters="gamma_750_params" /> - <printer translate="name" name="Canon S200" driver="bjc-s200" manufacturer="Canon" model="1000200" parameters="gamma_8_density_900_params" /> - <printer translate="name" name="Canon S300" driver="bjc-s300" manufacturer="Canon" model="1000300" parameters="density_800_params" /> - <printer translate="name" name="Canon S330" driver="bjc-s330" manufacturer="Canon" model="1000330" parameters="density_800_params" /> - <printer translate="name" name="Canon S400" driver="bjc-s400" manufacturer="Canon" model="3000" parameters="density_800_params" /> - <printer translate="name" name="Canon S450" driver="bjc-s450" manufacturer="Canon" model="6200" parameters="gamma_750_params" /> - <printer translate="name" name="Canon S500" driver="bjc-s500" manufacturer="Canon" model="1000500" parameters="density_800_params" /> - <printer translate="name" name="Canon S520" driver="bjc-s520" manufacturer="Canon" model="1000520" parameters="density_800_params" /> - <printer translate="name" name="Canon S530D" driver="bjc-s530D" manufacturer="Canon" model="1000520" parameters="density_800_params" /> - <printer translate="name" name="Canon S600" deviceid="MFG:Canon;MDL:S600;DES:Canon S600;CMD:BJL,BJRaster3,BSCC,TXT01;" driver="bjc-s600" manufacturer="Canon" model="1000600" parameters="density_800_params" /> - <printer translate="name" name="Canon S630" driver="bjc-s630" manufacturer="Canon" model="1000600" parameters="density_800_params" /> - <printer translate="name" name="Canon S750" driver="bjc-s750" manufacturer="Canon" model="1000750" parameters="density_800_params" /> - <printer translate="name" name="Canon S800" driver="bjc-s800" manufacturer="Canon" model="1000800" parameters="density_800_params" /> - <printer translate="name" name="Canon S820" driver="bjc-s820" manufacturer="Canon" model="1000820" parameters="density_800_params" /> - <printer translate="name" name="Canon S830D" driver="bjc-s830" manufacturer="Canon" model="1000830" parameters="density_800_params" /> - <printer translate="name" name="Canon S900" driver="bjc-s900" manufacturer="Canon" model="1000900" parameters="density_800_params" /> - <printer translate="name" name="Canon S9000" driver="bjc-s9000" manufacturer="Canon" model="1000900" parameters="density_800_params" /> - <printer translate="name" name="Canon S4500" driver="bjc-s4500" manufacturer="Canon" model="6500" parameters="gamma_750_params" /> - <printer translate="name" name="Canon SELPHY DS700" driver="bjc-SELPHY-DS700" manufacturer="Canon" model="10000700" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon SELPHY DS810" driver="bjc-SELPHY-DS810" manufacturer="Canon" model="10000810" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXMA mini220" driver="bjc-PIXMA-mini220" manufacturer="Canon" model="11000220" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXUS mini220" driver="bjc-PIXUS-mini220" manufacturer="Canon" model="11000220" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXMA mini320" driver="bjc-PIXMA-mini320" manufacturer="Canon" model="11000320" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXMA mini360" driver="bjc-PIXMA-mini360" manufacturer="Canon" model="11000320" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXUS mini360" driver="bjc-PIXUS-mini360" manufacturer="Canon" model="11000320" parameters="PIXMA_iP4000_params" /> - <!-- Canon iP90 family --> - <printer translate="name" name="Canon iP90 series" driver="bjc-iP90-series" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params"/> - <printer translate="name" name="Canon PIXMA iP90" driver="bjc-PIXMA-iP90" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXUS iP90" driver="bjc-PIXUS-iP90" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXMA iP90v" driver="bjc-PIXMA-iP90v" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXUS iP90v" driver="bjc-PIXUS-iP90v" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params" /> - <!-- Canon iP100 family --> -<!-- - <printer translate="name" name="Canon iP100 series" driver="bjc-iP100-series" manufacturer="Canon" model="3000100" parameters="PIXMA_iP4000_params"/> - <printer translate="name" name="Canon PIXMA iP100" driver="bjc-PIXMA-iP100" manufacturer="Canon" model="3000100" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXUS iP100" driver="bjc-PIXUS-iP100" manufacturer="Canon" model="3000100" parameters="PIXMA_iP4000_params" /> ---> - <!-- Canon iP110 family --> - <printer translate="name" name="Canon iP110 series" driver="bjc-iP110-series" manufacturer="Canon" model="3000110" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP110" driver="bjc-PIXMA-iP110" manufacturer="Canon" model="3000110" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP110" driver="bjc-PIXUS-iP110" manufacturer="Canon" model="3000110" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP2000 family --> - <printer translate="name" name="Canon iP2000 series" driver="bjc-iP2000-series" manufacturer="Canon" model="3002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2000" driver="bjc-PIXMA-iP2000" manufacturer="Canon" model="3002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP2000" driver="bjc-PIXUS-iP2000" manufacturer="Canon" model="3002000" parameters="PIXMA_iP4000_params">>EXPERIMENTAL</printer> - <!-- Canon iP2700 family --> - <printer translate="name" name="Canon iP2700 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe,IVEC,IVECPLI;SOJ:TXT01;MDL:iP2700 series;CLS:PRINTER;DES:Canon iP2700 series;VER:1.030;STA:30;FSI:00;HRI:EU;MSI:AOFF,BOFF,DAT,E3;PDR:4;" driver="bjc-iP2700-series" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2700" driver="bjc-PIXMA-iP2700" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP2700" driver="bjc-PIXUS-iP2700" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2701" driver="bjc-PIXMA-iP2701" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2702" driver="bjc-PIXMA-iP2702" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2740" driver="bjc-PIXMA-iP2740" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2760" driver="bjc-PIXMA-iP2760" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2770" driver="bjc-PIXMA-iP2770" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2772" driver="bjc-PIXMA-iP2772" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2780" driver="bjc-PIXMA-iP2780" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2788" driver="bjc-PIXMA-iP2788" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP2800 family --> - <printer translate="name" name="Canon iP2800 series" driver="bjc-iP2800-series" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2810" driver="bjc-PIXMA-iP2810" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2820" driver="bjc-PIXMA-iP2820" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2840" driver="bjc-PIXMA-iP2840" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2850" driver="bjc-PIXMA-iP2850" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2870" driver="bjc-PIXMA-iP2870" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2872" driver="bjc-PIXMA-iP2872" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2880" driver="bjc-PIXMA-iP2880" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP2890" driver="bjc-PIXMA-iP2890" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP3000 --> - <printer translate="name" name="Canon PIXMA iP3000" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe;SOJ:TXT01;MDL:iP3000;CLS:PRINTER;DES:Canon iP3000;VER:1.06;STA:10;FSI:03;" driver="bjc-PIXMA-iP3000" manufacturer="Canon" model="3003000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP3100 (PIXUS only, PIXMA iP3100 does not exist) --> - <printer translate="name" name="Canon PIXMA iP3100" driver="bjc-PIXMA-iP3100" manufacturer="Canon" model="3003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP3100" driver="bjc-PIXUS-iP3100" manufacturer="Canon" model="3003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP3300 family --> - <printer translate="name" name="Canon iP3300 series" driver="bjc-iP3300-series" manufacturer="Canon" model="3003300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP3300" driver="bjc-PIXMA-iP3300" manufacturer="Canon" model="3003300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP3300" driver="bjc-PIXUS-iP3300" manufacturer="Canon" model="3003300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP3500 family --> - <printer translate="name" name="Canon iP3500 series" driver="bjc-iP3500-series" manufacturer="Canon" model="3003500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP3500" driver="bjc-PIXMA-iP3500" manufacturer="Canon" model="3003500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP3500" driver="bjc-PIXUS-iP3500" manufacturer="Canon" model="3003500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP3600 family --> - <printer translate="name" name="Canon iP3600 series" driver="bjc-iP3600-series" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP3600" driver="bjc-PIXMA-iP3600" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP3600" driver="bjc-PIXUS-iP3600" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP3680" driver="bjc-PIXMA-iP3680" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP4000 --> - <printer translate="name" name="Canon PIXMA iP4000" deviceid="MFG:Canon;MDL:iP4000;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-iP4000" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params" /><!-- driver 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" /><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP4100" driver="bjc-PIXUS-iP4100" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP4100R (PIXUS only, PIXMA iP4100R does not exist) --> - <printer translate="name" name="Canon PIXUS iP4100R" driver="bjc-PIXUS-iP4100R" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4100R" driver="bjc-PIXMA-iP4100R" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP4200 family --> - <printer translate="name" name="Canon iP4200 series" deviceid="MFG:Canon;MDL:iP4200;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-iP4200-series" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4200" driver="bjc-PIXMA-iP4200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP4200" driver="bjc-PIXUS-iP4200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params">EXPERIMENTAL</printer> - <!-- Canon iP4300 family --> - <printer translate="name" name="Canon iP4300 series" driver="bjc-iP4300-series" manufacturer="Canon" model="3004300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4300" driver="bjc-PIXMA-iP4300" manufacturer="Canon" model="3004300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP4300" driver="bjc-PIXUS-iP4300" manufacturer="Canon" model="3004300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon iP4500 family --> - <printer translate="name" name="Canon iP4500 series" driver="bjc-iP4500-series" manufacturer="Canon" model="3004500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4500" driver="bjc-PIXMA-iP4500" manufacturer="Canon" model="3004500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP4500" driver="bjc-PIXUS-iP4500" manufacturer="Canon" model="3004500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon iP4600 family --> - <printer translate="name" name="Canon iP4600 series" driver="bjc-iP4600-series" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4600" driver="bjc-PIXMA-iP4600" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP4600" driver="bjc-PIXUS-iP4600" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4680" driver="bjc-PIXMA-iP4680" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon iP4700 family --> - <printer translate="name" name="Canon iP4700 series" driver="bjc-iP4700-series" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4700" driver="bjc-PIXMA-iP4700" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP4700" driver="bjc-PIXUS-iP4700" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4760" driver="bjc-PIXMA-iP4760" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon iP4800 family --> - <printer translate="name" name="Canon iP4800 series" driver="bjc-iP4800-series" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4800" driver="bjc-PIXMA-iP4800" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4810" driver="bjc-PIXMA-iP4810" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4820" driver="bjc-PIXMA-iP4820" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP4830" driver="bjc-PIXUS-iP4830" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4840" driver="bjc-PIXMA-iP4840" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4850" driver="bjc-PIXMA-iP4850" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4870" driver="bjc-PIXMA-iP4870" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4880" driver="bjc-PIXMA-iP4880" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon iP4900 family --> - <printer translate="name" name="Canon iP4900 series" driver="bjc-iP4900-series" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4900" driver="bjc-PIXMA-iP4900" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4910" driver="bjc-PIXMA-iP4910" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4920" driver="bjc-PIXMA-iP4920" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP4930" driver="bjc-PIXUS-iP4930" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4940" driver="bjc-PIXMA-iP4940" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4950" driver="bjc-PIXMA-iP4950" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4970" driver="bjc-PIXMA-iP4970" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP4980" driver="bjc-PIXMA-iP4980" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon iP5000 --> - <printer translate="name" name="Canon PIXMA iP5000" driver="bjc-PIXMA-iP5000" manufacturer="Canon" model="3005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP5200 --> - <printer translate="name" name="Canon PIXMA iP5200" driver="bjc-PIXMA-iP5200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP5200R family --> - <printer translate="name" name="Canon iP5200R series" driver="bjc-iP5200R-series" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP5200R" driver="bjc-PIXMA-iP5200R" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP5200R" driver="bjc-PIXUS-iP5200R" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP5300 --> - <printer translate="name" name="Canon PIXMA iP5300" driver="bjc-PIXMA-iP5300" manufacturer="Canon" model="3005300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP6000D --> - <printer translate="name" name="Canon PIXMA iP6000D" driver="bjc-PIXMA-iP6000D" manufacturer="Canon" model="3006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP6100D (PIXUS only, PIXMA iP6100D does not exist) --> - <printer translate="name" name="Canon PIXMA iP6100D" driver="bjc-PIXMA-iP6100D" manufacturer="Canon" model="3006100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP6100D" driver="bjc-PIXUS-iP6100D" manufacturer="Canon" model="3006100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP6210 --> - <printer translate="name" name="Canon PIXMA iP6210D" driver="bjc-PIXMA-iP6210D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP6220 --> - <printer translate="name" name="Canon PIXMA iP6220D" driver="bjc-PIXMA-iP6220D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP6310 --> - <printer translate="name" name="Canon PIXMA iP6310D" driver="bjc-PIXMA-iP6310D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP6320D --> - <printer translate="name" name="Canon PIXMA iP6320D" driver="bjc-PIXMA-iP6320D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP6600D family --> - <printer translate="name" name="Canon iP6600D series" driver="bjc-iP6600D-series" manufacturer="Canon" model="3006600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP6600D" driver="bjc-PIXMA-iP6600D" manufacturer="Canon" model="3006600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP6600D" driver="bjc-PIXUS-iP6600D" manufacturer="Canon" model="3006600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP6700D family --> - <printer translate="name" name="Canon iP6700D series" driver="bjc-iP6700-series" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP6700D" driver="bjc-PIXMA-iP6700" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP6700D" driver="bjc-PIXUS-iP6700" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP7100 (PIXUS only, PIXMA iP7100 does not exist) --> - <printer translate="name" name="Canon PIXMA iP7100" driver="bjc-PIXMA-iP7100" manufacturer="Canon" model="3007100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP7100" driver="bjc-PIXUS-iP7100" manufacturer="Canon" model="3007100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP7200 family --> - <printer translate="name" name="Canon iP7200 series" driver="bjc-iP7200-series" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP7210" driver="bjc-PIXMA-iP7210" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP7220" driver="bjc-PIXMA-iP7220" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP7230" driver="bjc-PIXUS-iP7230" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP7240" driver="bjc-PIXMA-iP7240" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP7250" driver="bjc-PIXMA-iP7250" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP7260" driver="bjc-PIXMA-iP7260" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP7270" driver="bjc-PIXMA-iP7270" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP7280" driver="bjc-PIXMA-iP7280" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP7500 (PIXUS only, PIXMA iP7500 does not exist) --> - <printer translate="name" name="Canon PIXMA iP7500" driver="bjc-PIXMA-iP7500" manufacturer="Canon" model="3007500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP7500" driver="bjc-PIXUS-iP7500" manufacturer="Canon" model="3007500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP8100 (PIXUS only, PIXMA iP8100 does not exist) --> - <printer translate="name" name="Canon PIXMA iP8100" driver="bjc-PIXMA-iP8100" manufacturer="Canon" model="3008100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP8100" driver="bjc-PIXUS-iP8100" manufacturer="Canon" model="3008100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP8500 --> - <printer translate="name" name="Canon PIXMA iP8500" deviceid="MFG:Canon;MDL:iP8500;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-PIXMA-iP8500" manufacturer="Canon" model="3008500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP8600 (PIXUS only, PIXMA iP8600 does not exist) --> - <printer translate="name" name="Canon PIXMA iP8600" driver="bjc-PIXMA-iP8600" manufacturer="Canon" model="3008600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP8600" driver="bjc-PIXUS-iP8600" manufacturer="Canon" model="3008600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP8700 family --> - <printer translate="name" name="Canon iP8700 series" driver="bjc-iP8700-series" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP7810" driver="bjc-PIXMA-iP8710" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP8720" driver="bjc-PIXMA-iP8720" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP8730" driver="bjc-PIXUS-iP8730" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP8740" driver="bjc-PIXMA-iP8740" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP8750" driver="bjc-PIXMA-iP8750" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP8760" driver="bjc-PIXMA-iP8760" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP8770" driver="bjc-PIXMA-iP8770" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iP8780" driver="bjc-PIXMA-iP8780" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iP9910 (PIXUS only, PIXMA iP9910 does not exist) --> - <printer translate="name" name="Canon PIXMA iP9910" driver="bjc-PIXMA-iP9910" manufacturer="Canon" model="3009910" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iP9910" driver="bjc-PIXUS-iP9910" manufacturer="Canon" model="3009910" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon iX4000 --> - <printer translate="name" name="Canon PIXMA iX4000" driver="bjc-PIXMA-iX4000" manufacturer="Canon" model="4004000" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <!-- Canon iX5000 family --> - <printer translate="name" name="Canon iX5000 series" driver="bjc-iX5000-series" manufacturer="Canon" model="4005000" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX5000" driver="bjc-PIXMA-iX5000" manufacturer="Canon" model="4005000" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iX5000" driver="bjc-PIXUS-iX5000" manufacturer="Canon" model="4005000" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <!-- Canon iX6500 family --> - <printer translate="name" name="Canon iX6500 series" driver="bjc-iX6500-series" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6500" driver="bjc-PIXMA-iX6500" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6510" driver="bjc-PIXMA-iX6510" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6520" driver="bjc-PIXMA-iX6520" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iX6530" driver="bjc-PIXUS-iX6530" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6540" driver="bjc-PIXMA-iX6540" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6550" driver="bjc-PIXMA-iX6550" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6560" driver="bjc-PIXMA-iX6560" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6580" driver="bjc-PIXMA-iX6580" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <!-- Canon iX6700 family --> - <printer translate="name" name="Canon iX6700 series" driver="bjc-iX6700-series" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6770" driver="bjc-PIXMA-iX6770" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6780" driver="bjc-PIXMA-iX6780" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <!-- Canon iX6800 family --> - <printer translate="name" name="Canon iX6800 series" driver="bjc-iX6800-series" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6810" driver="bjc-PIXMA-iX6810" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6820" driver="bjc-PIXMA-iX6820" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iX6830" driver="bjc-PIXUS-iX6830" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6840" driver="bjc-PIXMA-iX6840" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6850" driver="bjc-PIXMA-iX6850" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6860" driver="bjc-PIXMA-iX6860" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6870" driver="bjc-PIXMA-iX6870" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX6880" driver="bjc-PIXMA-iX6880" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <!-- Canon iX7000 family --> - <printer translate="name" name="Canon iX7000 series" driver="bjc-iX7000-series" manufacturer="Canon" model="4007000" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA iX7000" driver="bjc-PIXMA-iX7000" manufacturer="Canon" model="4007000" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS iX7000" driver="bjc-PIXUS-iX7000" manufacturer="Canon" model="4007000" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> - <!-- Canon Pro9000 family --> - <printer translate="name" name="Canon Pro9000 series" driver="bjc-Pro9000-series" manufacturer="Canon" model="7009000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA Pro9000" driver="bjc-PIXMA-Pro9000" manufacturer="Canon" model="7009000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS Pro9000" driver="bjc-PIXUS-Pro9000" manufacturer="Canon" model="7009000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon Pro9000 Mk.II family --> - <printer translate="name" name="Canon Pro9000 Mk.II series" deviceid="MFG:Canon;MDL:Pro9000II series;CMD:BJL,BJRaster3,BSCCe,PLI;" driver="bjc-Pro9000mk2-series" manufacturer="Canon" model="7009002" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA Pro9000mk2" driver="bjc-PIXMA-Pro9000mk2" manufacturer="Canon" model="7009002" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS Pro9000mk2" driver="bjc-PIXUS-Pro9000mk2" manufacturer="Canon" model="7009002" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon Pro9500 family --> - <printer translate="name" name="Canon Pro9500 series" driver="bjc-Pro9500-series" manufacturer="Canon" model="7009500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA Pro9500" driver="bjc-PIXMA-Pro9500" manufacturer="Canon" model="7009500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS Pro9500" driver="bjc-PIXUS-Pro9500" manufacturer="Canon" model="7009500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon Pro9500 Mk.II family --> - <printer translate="name" name="Canon Pro9500 Mk.II series" driver="bjc-Pro9500mk2-series" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA Pro9500mk2" driver="bjc-PIXMA-Pro9500mk2" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS Pro9500mk2" driver="bjc-PIXUS-Pro9500mk2" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MPC400 family --> - <printer translate="name" name="Canon SmartBase MPC400" driver="bjc-SmartBase-MPC400" manufacturer="Canon" model="16000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon SmartBase MPC600F" driver="bjc-SmartBase-MPC600F" manufacturer="Canon" model="16000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP55 family --> - <printer translate="name" name="Canon PIXUS MP55" driver="bjc-PIXUS-MP55" manufacturer="Canon" model="5000055" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP140 family --> - <printer translate="name" name="Canon MP140 series" driver="bjc-MP140-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP140" driver="bjc-MULTIPASS-MP140" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MP145" driver="bjc-PIXMA-MP145" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP150 family --> - <printer translate="name" name="Canon MP150 series" driver="bjc-MP150-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP150" driver="bjc-MULTIPASS-MP150" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP160" driver="bjc-MULTIPASS-MP160" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP170" driver="bjc-MULTIPASS-MP170" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP170" driver="bjc-PIXUS-MP170" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP180 family --> - <printer translate="name" name="Canon MP180 series" driver="bjc-MP180-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP180" driver="bjc-MULTIPASS-MP180" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP190" driver="bjc-MULTIPASS-MP190" manufacturer="Canon" model="5000190" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MP198" driver="bjc-PIXMA-MP198" manufacturer="Canon" model="5000190" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP210 family --> - <printer translate="name" name="Canon MP210 series" driver="bjc-MP210-series" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP210" driver="bjc-MULTIPASS-MP210" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MP218" driver="bjc-PIXMA-MP218" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP220 family --> - <printer translate="name" name="Canon MP220 series" driver="bjc-MP220-series" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP220" driver="bjc-MULTIPASS-MP220" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MP228" driver="bjc-PIXMA-MP228" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP230 family --> - <printer translate="name" name="Canon MP230 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe,IVEC,IVECPLI;MDL:MP230 series;CLS:PRINTER;DES:Canon MP230 series;VER:1.050;STA:10;FSI:00;HRI:C;MSI:AOFF,B240,DAT,E3,HASF,JOFF,K21000700;PDR:4;PSE:LNHB41360;CID:CA_IVEC1TYPE0_IJP;" driver="bjc-MP230-series" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params"></printer> - <printer translate="name" name="Canon PIXMA MP230" driver="bjc-MULTIPASS-MP230" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params"></printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MP236" driver="bjc-PIXMA-MP236" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params"></printer> - <printer translate="name" name="Canon PIXMA MP237" driver="bjc-PIXMA-MP237" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params"></printer> - <!-- Canon MP240 family --> - <printer translate="name" name="Canon MP240 series" driver="bjc-MP240-series" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP240" driver="bjc-MULTIPASS-MP240" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MP245" driver="bjc-PIXMA-MP245" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP250 family --> - <printer translate="name" name="Canon MP250 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe,IVEC,IVECPLI;MDL:MP250 series;DES:Canon MP250 series;" driver="bjc-MP250-series" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP250" driver="bjc-MULTIPASS-MP250" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MP252" driver="bjc-PIXMA-MP252" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP258" driver="bjc-PIXMA-MP258" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP259" driver="bjc-PIXMA-MP259" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP260 family --> - <printer translate="name" name="Canon MP260 series" driver="bjc-MP260-series" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP260" driver="bjc-MULTIPASS-MP260" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MP268" driver="bjc-PIXMA-MP268" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP270 family --> - <printer translate="name" name="Canon MP270 series" driver="bjc-MP270-series" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP270" driver="bjc-MULTIPASS-MP270" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP270" driver="bjc-PIXUS-MP270" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP272" driver="bjc-PIXMA-MP272" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP276" driver="bjc-PIXMA-MP276" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP280 family --> - <printer translate="name" name="Canon MP280 series" driver="bjc-MP280-series" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP280" deviceid="MFG:Canon;MDL:MP280 series;" driver="bjc-MULTIPASS-MP280" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP280" driver="bjc-PIXUS-MP280" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP282" driver="bjc-PIXMA-MP282" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP287" driver="bjc-PIXMA-MP287" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP288" driver="bjc-PIXMA-MP288" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP360 family (PIXMA MP360 does not exist) --> - <printer translate="name" name="Canon MP360 series" driver="bjc-MP360-series" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP360" driver="bjc-PIXMA-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon SmartBase MP360" driver="bjc-SmartBase-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon SmartBase MP360S" driver="bjc-SmartBase-MP360S" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MultiPASS MP360" driver="bjc-MULTIPASS-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- introduced the MultiPASS entry so changed previous PIXMA MP360 entry to reflect proper brand name --> - <!-- Canon MP370 family (PIXMA MP370, MP375R do not exist) --> - <printer translate="name" name="Canon MP370 series" driver="bjc-MP370-series" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP370" driver="bjc-PIXMA-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon SmartBase MP370" driver="bjc-SmartBase-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MultiPASS MP370" driver="bjc-MULTIPASS-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- introduced the MultiPASS entry so changed previous PIXMA MP370 entry to reflect proper brand name --> - <printer translate="name" name="Canon PIXMA MP375R" driver="bjc-MULTIPASS-MP375R" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP375R" driver="bjc-PIXUS-MP375R" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP390 family (PIXMA MP390 does not exist) --> - <printer translate="name" name="Canon MP390 series" driver="bjc-MP390-series" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP390" driver="bjc-PIXMA-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon SmartBase MP390" driver="bjc-SmartBase-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MultiPASS MP390" driver="bjc-MULTIPASS-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- introduced the MultiPASS entry so changed previous PIXMA MP390 entry to reflect proper brand name --> - <!-- Canon MP450 family --> - <printer translate="name" name="Canon MP450 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe;MDL:MP450;DES:Canon MP450;CLS:PRINTER;VER:1.08;STA:10;HRI:JP;SOJ:TXT01;" driver="bjc-MP450-series" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP450" driver="bjc-MULTIPASS-MP450" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP450" driver="bjc-PIXUS-MP450" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP460 family --> - <printer translate="name" name="Canon MP460 series" driver="bjc-MP460-series" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP460" driver="bjc-MULTIPASS-MP460" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP460" driver="bjc-PIXUS-MP460" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP470 family --> - <printer translate="name" name="Canon MP470 series" driver="bjc-MP470-series" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP470" driver="bjc-MULTIPASS-MP470" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP470" driver="bjc-PIXUS-MP470" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP476" driver="bjc-PIXMA-MP476" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP480 family --> - <printer translate="name" name="Canon MP480 series" driver="bjc-MP480-series" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP480" driver="bjc-MULTIPASS-MP480" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP480" driver="bjc-PIXUS-MP480" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP486" driver="bjc-PIXMA-MP486" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP490 family (TODO: combine separate drivers for 493, 495. PIXMA MP493 does not exist) --> - <printer translate="name" name="Canon MP490 series" driver="bjc-MP490-series" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP490" driver="bjc-MULTIPASS-MP490" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP490" driver="bjc-PIXUS-MP490" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP492" driver="bjc-PIXMA-MP492" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP493" driver="bjc-MULTIPASS-MP493" manufacturer="Canon" model="5000493" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP493" driver="bjc-PIXUS-MP493" manufacturer="Canon" model="5000493" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP495" driver="bjc-MULTIPASS-MP495" manufacturer="Canon" model="5000495" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MP496" driver="bjc-PIXMA-MP496" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP497" driver="bjc-PIXMA-MP497" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP498" driver="bjc-PIXMA-MP498" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP499" driver="bjc-PIXMA-MP499" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP500 family --> - <printer translate="name" name="Canon MP500 series" deviceid="MFG:Canon;MDL:MP500;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-MP500-series" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP500" driver="bjc-MULTIPASS-MP500" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP500" driver="bjc-PIXUS-MP500" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP510 family --> - <printer translate="name" name="Canon MP510 series" driver="bjc-MP510-series" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP510" driver="bjc-MULTIPASS-MP510" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP510" driver="bjc-PIXUS-MP510" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP520 family --> - <printer translate="name" name="Canon MP520 series" driver="bjc-MP520-series" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP520" driver="bjc-MULTIPASS-MP520" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP520" driver="bjc-PIXUS-MP520" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP530 family --> - <printer translate="name" name="Canon MP530 series" driver="bjc-MP530-series" manufacturer="Canon" model="5000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP530" driver="bjc-MULTIPASS-MP530" manufacturer="Canon" model="5000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP540" driver="bjc-MULTIPASS-MP540" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP540" driver="bjc-PIXUS-MP540" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP545" driver="bjc-PIXMA-MP545" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP550 family --> - <printer translate="name" name="Canon MP550 series" driver="bjc-MP550-series" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP550" driver="bjc-MULTIPASS-MP550" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP550" driver="bjc-PIXUS-MP550" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP558" driver="bjc-PIXMA-MP558" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP560 family --> - <printer translate="name" name="Canon MP560 series" driver="bjc-MP560-series" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP560" driver="bjc-MULTIPASS-MP560" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP560" driver="bjc-PIXUS-MP560" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP568" driver="bjc-PIXMA-MP568" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP600 family --> - <printer translate="name" name="Canon MP600 series" driver="bjc-MP600-series" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP600" driver="bjc-MULTIPASS-MP600" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP600" driver="bjc-PIXUS-MP600" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP600R" driver="bjc-MULTIPASS-MP600R" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP610" driver="bjc-MULTIPASS-MP610" manufacturer="Canon" model="5000610" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP610" driver="bjc-PIXUS-MP610" manufacturer="Canon" model="5000610" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP620 family --> - <printer translate="name" name="Canon MP620 series" driver="bjc-MP620-series" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP620" driver="bjc-MULTIPASS-MP620" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MP620B" driver="bjc-PIXMA-MP620B" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MP620" driver="bjc-PIXUS-MP620" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP628" driver="bjc-PIXMA-MP628" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP630 family --> - <printer translate="name" name="Canon MP630 series" driver="bjc-MP630-series" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP630" driver="bjc-MULTIPASS-MP630" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP630" driver="bjc-PIXUS-MP630" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP638" driver="bjc-PIXMA-MP638" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP640 family --> - <printer translate="name" name="Canon MP640 series" driver="bjc-MP640-series" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP640" driver="bjc-MULTIPASS-MP640" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MP640R" driver="bjc-PIXMA-MP640R" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MP640" driver="bjc-PIXUS-MP640" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP648" driver="bjc-PIXMA-MP648" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP700 family --> - <printer translate="name" name="Canon MP700 series" driver="bjc-MP700-series" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP700" driver="bjc-PIXMA-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon SmartBase MP700" driver="bjc-SmartBase-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MultiPASS MP700" driver="bjc-MULTIPASS-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- introduced the MultiPASS entry so changed previous PIXMA MP700 entry to reflect proper brand name --> - <!-- Canon MP710 family (PIXMA MP710 does not exit) --> - <printer translate="name" name="Canon MP710 series" driver="bjc-MP710-series" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP710" driver="bjc-MULTIPASS-MP710" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP710" driver="bjc-PIXUS-MP710" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP730 family --> - <printer translate="name" name="Canon MP730 series" driver="bjc-MP730-series" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP730" driver="bjc-PIXMA-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon SmartBase MP730" driver="bjc-SmartBasw-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MultiPASS MP730" driver="bjc-MULTIPASS-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- introduced the MultiPASS entry so changed previous PIXMA MP730 entry to reflect proper brand name --> - <!-- Canon MP740 family (PIXMA MP740 does not exit) --> - <printer translate="name" name="Canon MP740 series" driver="bjc-MP740-series" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP740" driver="bjc-MULTIPASS-MP740" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP740" driver="bjc-PIXUS-MP740" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP750 family --> - <printer translate="name" name="Canon MP750 series" driver="bjc-MP750-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP750" driver="bjc-MULTIPASS-MP750" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP760" driver="bjc-MULTIPASS-MP760" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP770" driver="bjc-MULTIPASS-MP770" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP770" driver="bjc-PIXUS-MP770" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP780 family --> - <printer translate="name" name="Canon MP780 series" driver="bjc-MP780-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP780" driver="bjc-MULTIPASS-MP780" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <!-- Canon MP790 family (PIXMA MP790 does not exist) --> - <printer translate="name" name="Canon MP790 series" driver="bjc-MP790-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP790" driver="bjc-MULTIPASS-MP790" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP790" driver="bjc-PIXUS-MP790" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP800 family --> - <printer translate="name" name="Canon MP800 series" driver="bjc-MP800-series" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP800" driver="bjc-MULTIPASS-MP800" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP800" driver="bjc-PIXUS-MP800" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP800R" driver="bjc-MULTIPASS-MP800R" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP810" driver="bjc-MULTIPASS-MP810" manufacturer="Canon" model="5000810" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP810" driver="bjc-PIXUS-MP810" manufacturer="Canon" model="5000810" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP830 family --> - <printer translate="name" name="Canon MP830 series" driver="bjc-MP830-series" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP830" driver="bjc-MULTIPASS-MP830" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP830" driver="bjc-PIXUS-MP830" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP900 family --> - <printer translate="name" name="Canon MP900 series" driver="bjc-MP900-series" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP900" driver="bjc-MULTIPASS-MP900" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP900" driver="bjc-PIXUS-MP900" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP950 family --> - <printer translate="name" name="Canon MP950 series" driver="bjc-MP950-series" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP950" driver="bjc-MULTIPASS-MP950" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP950" driver="bjc-PIXUS-MP950" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP960 family --> - <printer translate="name" name="Canon MP960 series" driver="bjc-MP960-series" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP960" driver="bjc-MULTIPASS-MP960" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP960" driver="bjc-PIXUS-MP960" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP970 family --> - <printer translate="name" name="Canon MP970 series" driver="bjc-MP970-series" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP970" driver="bjc-MULTIPASS-MP970" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP970" driver="bjc-PIXUS-MP970" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP980 family --> - <printer translate="name" name="Canon MP980 series" driver="bjc-MP980-series" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP980" driver="bjc-MULTIPASS-MP980" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP980" driver="bjc-PIXUS-MP980" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP988" driver="bjc-PIXMA-MP988" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MP990 family --> - <printer translate="name" name="Canon MP990 series" driver="bjc-MP990-series" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP990" driver="bjc-MULTIPASS-MP990" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MP990" driver="bjc-PIXUS-MP990" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MP996" driver="bjc-PIXMA-MP996" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MG2100 family --> - <printer translate="name" name="Canon MG2100 series" driver="bjc-MG2100-series" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG2100" driver="bjc-PIXMA-MG2100" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG2110" driver="bjc-PIXMA-MG2110" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG2120" driver="bjc-PIXMA-MG2120" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG2130" driver="bjc-PIXUS-MG2130" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG2140" driver="bjc-PIXMA-MG2140" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG2150" driver="bjc-PIXMA-MG2150" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG2160" driver="bjc-PIXMA-MG2160" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG2170" driver="bjc-PIXMA-MG2170" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG2180" driver="bjc-PIXMA-MG2180" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG2200 family --> - <printer translate="name" name="Canon MG2200 series" driver="bjc-MG2200-series" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG2210" driver="bjc-PIXMA-MG2210" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG2220" driver="bjc-PIXMA-MG2220" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG2240" driver="bjc-PIXMA-MG2240" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG2250" driver="bjc-PIXMA-MG2250" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG2260" driver="bjc-PIXMA-MG2260" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG2270" driver="bjc-PIXMA-MG2270" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG2280" driver="bjc-PIXMA-MG2280" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG2400 family --> - <printer translate="name" name="Canon MG2400 series" driver="bjc-MG2400-series" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2400" driver="bjc-PIXMA-MG2400" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2410" driver="bjc-PIXMA-MG2410" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2420" driver="bjc-PIXMA-MG2420" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2440" driver="bjc-PIXMA-MG2440" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2450" driver="bjc-PIXMA-MG2450" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2460" driver="bjc-PIXMA-MG2460" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2470" driver="bjc-PIXMA-MG2470" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2490" driver="bjc-PIXMA-MG2490" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <!-- Canon MG2500 family --> - <printer translate="name" name="Canon MG2500 series" driver="bjc-MG2500-series" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2510" driver="bjc-PIXMA-MG2510" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2520" driver="bjc-PIXMA-MG2520" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2522" driver="bjc-PIXMA-MG2522" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2525" driver="bjc-PIXMA-MG2525" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2540" driver="bjc-PIXMA-MG2540" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2540S" driver="bjc-PIXMA-MG2540S" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2545S" driver="bjc-PIXMA-MG2545S" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2550" driver="bjc-PIXMA-MG2550" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2550S" driver="bjc-PIXMA-MG2550S" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2555S" driver="bjc-PIXMA-MG2555S" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2560" driver="bjc-PIXMA-MG2560" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2570" driver="bjc-PIXMA-MG2570" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2570S" driver="bjc-PIXMA-MG2570S" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2580" driver="bjc-PIXMA-MG2580" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2580S" driver="bjc-PIXMA-MG2580S" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2590" driver="bjc-PIXMA-MG2590" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <!-- Canon MG2900 family --> - <printer translate="name" name="Canon MG2900 series" driver="bjc-MG2900-series" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2910" driver="bjc-PIXMA-MG2910" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2920" driver="bjc-PIXMA-MG2920" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2922" driver="bjc-PIXMA-MG2922" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2924" driver="bjc-PIXMA-MG2924" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2940" driver="bjc-PIXMA-MG2940" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2950" driver="bjc-PIXMA-MG2950" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2960" driver="bjc-PIXMA-MG2960" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2970" driver="bjc-PIXMA-MG2970" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2980" driver="bjc-PIXMA-MG2980" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <printer translate="name" name="Canon PIXMA MG2990" driver="bjc-PIXMA-MG2990" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> - <!-- Canon MG3000 family --> - <printer translate="name" name="Canon MG3000 series" driver="bjc-MG3000-series" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3010" driver="bjc-PIXMA-MG3010" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3020" driver="bjc-PIXMA-MG3020" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3022" driver="bjc-PIXMA-MG3022" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3030" driver="bjc-PIXMA-MG3030" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3040" driver="bjc-PIXMA-MG3040" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3050" driver="bjc-PIXMA-MG3050" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- black model --> - <printer translate="name" name="Canon PIXMA MG3051" driver="bjc-PIXMA-MG3051" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- white model --> - <printer translate="name" name="Canon PIXMA MG3052" driver="bjc-PIXMA-MG3052" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- grey model --> - <printer translate="name" name="Canon PIXMA MG3053" driver="bjc-PIXMA-MG3053" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- blue/white model --> - <printer translate="name" name="Canon PIXMA MG3060" driver="bjc-PIXMA-MG3060" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3070" driver="bjc-PIXMA-MG3070" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3077" driver="bjc-PIXMA-MG3077" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3080" driver="bjc-PIXMA-MG3080" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3090" driver="bjc-PIXMA-MG3090" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MG3100 family --> - <printer translate="name" name="Canon MG3100 series" driver="bjc-MG3100-series" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3100" driver="bjc-PIXMA-MG3100" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3110" driver="bjc-PIXMA-MG3110" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3120" driver="bjc-PIXMA-MG3120" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3122" driver="bjc-PIXMA-MG3122" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG3130" driver="bjc-PIXUS-MG3130" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3140" driver="bjc-PIXMA-MG3140" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3150" driver="bjc-PIXMA-MG3150" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3160" driver="bjc-PIXMA-MG3160" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3170" driver="bjc-PIXMA-MG3170" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3180" driver="bjc-PIXMA-MG3180" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG3200 family --> - <printer translate="name" name="Canon MG3200 series" driver="bjc-MG3200-series" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3210" driver="bjc-PIXMA-MG3210" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3220" driver="bjc-PIXMA-MG3220" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3222" driver="bjc-PIXMA-MG3222" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG3230" driver="bjc-PIXUS-MG3230" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3240" driver="bjc-PIXMA-MG3240" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3250" driver="bjc-PIXMA-MG3250" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3260" driver="bjc-PIXMA-MG3260" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3270" driver="bjc-PIXMA-MG3270" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG3500 family --> - <printer translate="name" name="Canon MG3500 series" driver="bjc-MG3500-series" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3510" driver="bjc-PIXMA-MG3510" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3520" driver="bjc-PIXMA-MG3520" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3522" driver="bjc-PIXMA-MG3522" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG3530" driver="bjc-PIXUS-MG3530" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3540" driver="bjc-PIXMA-MG3540" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3550" driver="bjc-PIXMA-MG3550" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3560" driver="bjc-PIXMA-MG3560" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3570" driver="bjc-PIXMA-MG3570" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3580" driver="bjc-PIXMA-MG3580" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG3600 family --> - <printer translate="name" name="Canon MG3600 series" driver="bjc-MG3600-series" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3610" driver="bjc-PIXMA-MG3610" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3620" driver="bjc-PIXMA-MG3620" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG3630" driver="bjc-PIXUS-MG3630" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3640" driver="bjc-PIXMA-MG3640" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3650" driver="bjc-PIXMA-MG3650" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3670" driver="bjc-PIXMA-MG3670" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG3680" driver="bjc-PIXMA-MG3680" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG4100 family --> - <printer translate="name" name="Canon MG4100 series" driver="bjc-MG4100-series" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG4100" driver="bjc-PIXMA-MG4100" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG4110" driver="bjc-PIXMA-MG4110" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG4120" driver="bjc-PIXMA-MG4120" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG4130" driver="bjc-PIXUS-MG4130" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG4140" driver="bjc-PIXMA-MG4140" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG4150" driver="bjc-PIXMA-MG4150" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG4160" driver="bjc-PIXMA-MG4160" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG4170" driver="bjc-PIXMA-MG4170" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG4180" driver="bjc-PIXMA-MG4180" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG4200 family --> - <printer translate="name" name="Canon MG4200 series" driver="bjc-MG4200-series" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG4210" driver="bjc-PIXMA-MG4210" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG4220" driver="bjc-PIXMA-MG4220" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG4230" driver="bjc-PIXUS-MG4230" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG4240" driver="bjc-PIXMA-MG4240" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG4250" driver="bjc-PIXMA-MG4250" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG4260" driver="bjc-PIXMA-MG4260" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG4270" driver="bjc-PIXMA-MG4270" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG4280" driver="bjc-PIXMA-MG4280" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG5100 family --> - <printer translate="name" name="Canon MG5100 series" driver="bjc-MG5100-series" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5100" driver="bjc-PIXMA-MG5100" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5120" driver="bjc-PIXMA-MG5120" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG5130" driver="bjc-PIXUS-MG5130" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5140" driver="bjc-PIXMA-MG5140" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5150" driver="bjc-PIXMA-MG5150" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5170" driver="bjc-PIXMA-MG5170" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5180" driver="bjc-PIXMA-MG5180" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG5200 family --> - <printer translate="name" name="Canon MG5200 series" driver="bjc-MG5200-series" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5200" driver="bjc-PIXMA-MG5200" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5210" driver="bjc-PIXMA-MG5210" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5220" driver="bjc-PIXMA-MG5220" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG5230" driver="bjc-PIXUS-MG5230" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5240" driver="bjc-PIXMA-MG5240" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5250" driver="bjc-PIXMA-MG5250" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5270" driver="bjc-PIXMA-MG5270" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5280" driver="bjc-PIXMA-MG5280" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG5300 family --> - <printer translate="name" name="Canon MG5300 series" driver="bjc-MG5300-series" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5300" driver="bjc-PIXMA-MG5300" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5310" driver="bjc-PIXMA-MG5310" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5320" driver="bjc-PIXMA-MG5320" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG5330" driver="bjc-PIXUS-MG5330" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5340" driver="bjc-PIXMA-MG5340" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5350" driver="bjc-PIXMA-MG5350" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5370" driver="bjc-PIXMA-MG5370" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5380" driver="bjc-PIXMA-MG5380" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG5400 family --> - <printer translate="name" name="Canon MG5400 series" deviceid="MFG:Canon;MDL:MG5400 series;CMD:URF;" driver="bjc-MG5400-series" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5410" driver="bjc-PIXMA-MG5410" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5420" driver="bjc-PIXMA-MG5420" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5422" driver="bjc-PIXMA-MG5422" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG5430" driver="bjc-PIXUS-MG5430" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5440" driver="bjc-PIXMA-MG5440" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5450" driver="bjc-PIXMA-MG5450" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5460" driver="bjc-PIXMA-MG5460" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5470" driver="bjc-PIXMA-MG5470" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5480" driver="bjc-PIXMA-MG5480" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG5500 family --> - <printer translate="name" name="Canon MG5500 series" driver="bjc-MG5500-series" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5510" driver="bjc-PIXMA-MG5510" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5520" driver="bjc-PIXMA-MG5520" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5522" driver="bjc-PIXMA-MG5522" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG5530" driver="bjc-PIXUS-MG5530" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5540" driver="bjc-PIXMA-MG5540" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5550" driver="bjc-PIXMA-MG5550" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5560" driver="bjc-PIXMA-MG5560" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5570" driver="bjc-PIXMA-MG5570" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5580" driver="bjc-PIXMA-MG5580" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG5600 family --> - <printer translate="name" name="Canon MG5600 series" driver="bjc-MG5600-series" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5610" driver="bjc-PIXMA-MG5610" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5620" driver="bjc-PIXMA-MG5620" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5622" driver="bjc-PIXMA-MG5622" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG5630" driver="bjc-PIXUS-MG5630" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5640" driver="bjc-PIXMA-MG5640" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5650" driver="bjc-PIXMA-MG5650" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5660" driver="bjc-PIXMA-MG5660" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5670" driver="bjc-PIXMA-MG5670" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon Mommy Photo MG5670" driver="bjc-Mommy-Photo-MG5670" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5680" driver="bjc-PIXMA-MG5680" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG5700 family --> - <printer translate="name" name="Canon MG5700 series" driver="bjc-MG5700-series" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5710" driver="bjc-PIXMA-MG5710" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5720" driver="bjc-PIXMA-MG5720" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- black model --> - <printer translate="name" name="Canon PIXMA MG5721" driver="bjc-PIXMA-MG5721" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/black model --> - <printer translate="name" name="Canon PIXMA MG5722" driver="bjc-PIXMA-MG5722" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/white model --> - <printer translate="name" name="Canon PIXUS MG5730" driver="bjc-PIXUS-MG5730" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5740" driver="bjc-PIXMA-MG5740" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5750" driver="bjc-PIXMA-MG5750" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- black model --> - <printer translate="name" name="Canon PIXMA MG5751" driver="bjc-PIXMA-MG5751" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- white model --> - <printer translate="name" name="Canon PIXMA MG5752" driver="bjc-PIXMA-MG5752" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/black model --> - <printer translate="name" name="Canon PIXMA MG5753" driver="bjc-PIXMA-MG5753" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/white model --> - <printer translate="name" name="Canon PIXMA MG5770" driver="bjc-PIXMA-MG5770" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5780" driver="bjc-PIXMA-MG5780" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5790" driver="bjc-PIXMA-MG5790" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon Mommy Photo MG5790" driver="bjc-Mommy-Photo-MG5790" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG5795" driver="bjc-PIXMA-MG5795" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG6100 family --> - <printer translate="name" name="Canon MG6100 series" driver="bjc-MG6100-series" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6100" driver="bjc-PIXMA-MG6100" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6110" driver="bjc-PIXMA-MG6110" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6120" driver="bjc-PIXMA-MG6120" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG6130" driver="bjc-PIXUS-MG6130" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6140" driver="bjc-PIXMA-MG6140" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6150" driver="bjc-PIXMA-MG6150" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6170" driver="bjc-PIXMA-MG6170" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6180" driver="bjc-PIXMA-MG6180" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG6200 family --> - <printer translate="name" name="Canon MG6200 series" driver="bjc-MG6200-series" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6200" driver="bjc-PIXMA-MG6200" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6210" driver="bjc-PIXMA-MG6210" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6220" driver="bjc-PIXMA-MG6220" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG6230" driver="bjc-PIXUS-MG6230" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6240" driver="bjc-PIXMA-MG6240" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6250" driver="bjc-PIXMA-MG6250" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6270" driver="bjc-PIXMA-MG6270" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6280" driver="bjc-PIXMA-MG6280" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG6300 family --> - <printer translate="name" name="Canon MG6300 series" driver="bjc-MG6300-series" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6310" driver="bjc-PIXMA-MG6310" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6320" driver="bjc-PIXMA-MG6320" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG6330" driver="bjc-PIXUS-MG6330" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6340" driver="bjc-PIXMA-MG6340" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6350" driver="bjc-PIXMA-MG6350" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6360" driver="bjc-PIXMA-MG6360" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6370" driver="bjc-PIXMA-MG6370" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6380" driver="bjc-PIXMA-MG6380" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG6400 family --> - <printer translate="name" name="Canon MG6400 series" driver="bjc-MG6400-series" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6400" driver="bjc-PIXMA-MG6400" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6410" driver="bjc-PIXMA-MG6410" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6420" driver="bjc-PIXMA-MG6420" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6440" driver="bjc-PIXMA-MG6440" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6450" driver="bjc-PIXMA-MG6450" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6470" driver="bjc-PIXMA-MG6470" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG6500 family --> - <printer translate="name" name="Canon MG6500 series" driver="bjc-MG6500-series" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG6530" driver="bjc-PIXUS-MG6530" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG6600 family --> - <printer translate="name" name="Canon MG6600 series" driver="bjc-MG6600-series" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6610" driver="bjc-PIXMA-MG6610" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6620" driver="bjc-PIXMA-MG6620" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6622" driver="bjc-PIXMA-MG6622" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6640" driver="bjc-PIXMA-MG6640" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6650" driver="bjc-PIXMA-MG6650" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6660" driver="bjc-PIXMA-MG6660" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6670" driver="bjc-PIXMA-MG6670" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon Mommy Photo MG6670" driver="bjc-Mommy-Photo-MG6670" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6680" driver="bjc-PIXMA-MG6680" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG6700 family --> - <printer translate="name" name="Canon MG6700 series" driver="bjc-MG6700-series" manufacturer="Canon" model="8006700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG6730" driver="bjc-PIXUS-MG6730" manufacturer="Canon" model="8006700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG6800 family --> - <printer translate="name" name="Canon MG6800 series" driver="bjc-MG6800-series" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6810" driver="bjc-PIXMA-MG6810" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6820" driver="bjc-PIXMA-MG6820" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- black model --> - <printer translate="name" name="Canon PIXMA MG6821" driver="bjc-PIXMA-MG6821" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/black model --> - <printer translate="name" name="Canon PIXMA MG6822" driver="bjc-PIXMA-MG6822" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/white model --> - <printer translate="name" name="Canon PIXMA MG6840" driver="bjc-PIXMA-MG6840" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6850" driver="bjc-PIXMA-MG6850" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- black model --> - <printer translate="name" name="Canon PIXMA MG6851" driver="bjc-PIXMA-MG6851" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- white model --> - <printer translate="name" name="Canon PIXMA MG6852" driver="bjc-PIXMA-MG6852" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/black model --> - <printer translate="name" name="Canon PIXMA MG6853" driver="bjc-PIXMA-MG6853" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/white model --> - <printer translate="name" name="Canon PIXMA MG6870" driver="bjc-PIXMA-MG6870" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG6880" driver="bjc-PIXMA-MG6880" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG6900 family --> - <printer translate="name" name="Canon MG6900 series" driver="bjc-MG6900-series" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG6930" driver="bjc-PIXUS-MG6930" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG7100 family --> - <printer translate="name" name="Canon MG7100 series" driver="bjc-MG7100-series" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7110" driver="bjc-PIXMA-MG7110" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7120" driver="bjc-PIXMA-MG7120" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG7130" driver="bjc-PIXUS-MG7130" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7140" driver="bjc-PIXMA-MG7140" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7150" driver="bjc-PIXMA-MG7150" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7170" driver="bjc-PIXMA-MG7170" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7180" driver="bjc-PIXMA-MG7180" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG7500 family --> - <printer translate="name" name="Canon MG7500 series" driver="bjc-MG7500-series" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7510" driver="bjc-PIXMA-MG7510" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7520" driver="bjc-PIXMA-MG7520" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG7530" driver="bjc-PIXUS-MG7530" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG7530F" driver="bjc-PIXUS-MG7530F" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7540" driver="bjc-PIXMA-MG7540" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7550" driver="bjc-PIXMA-MG7550" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7560" driver="bjc-PIXMA-MG7560" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7570" driver="bjc-PIXMA-MG7570" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon Mommy Photo MG7570" driver="bjc-Mommy-Photo-MG7570" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7580" driver="bjc-PIXMA-MG7580" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG7700 family --> - <printer translate="name" name="Canon MG7700 series" driver="bjc-MG7700-series" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7710" driver="bjc-PIXMA-MG7710" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7720" driver="bjc-PIXMA-MG7720" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG7730" driver="bjc-PIXUS-MG7730" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG7730F" driver="bjc-PIXUS-MG7730F" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7740" driver="bjc-PIXMA-MG7740" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7750" driver="bjc-PIXMA-MG7750" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- black model --> - <printer translate="name" name="Canon PIXMA MG7751" driver="bjc-PIXMA-MG7751" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- white model --> - <printer translate="name" name="Canon PIXMA MG7752" driver="bjc-PIXMA-MG7752" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- red model --> - <printer translate="name" name="Canon PIXMA MG7753" driver="bjc-PIXMA-MG7753" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- gold model --> - <printer translate="name" name="Canon PIXMA MG7770" driver="bjc-PIXMA-MG7770" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7780" driver="bjc-PIXMA-MG7780" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG7790" driver="bjc-PIXMA-MG7790" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG8100 family --> - <printer translate="name" name="Canon MG8100 series" driver="bjc-MG8100-series" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG8100" driver="bjc-PIXMA-MG8100" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG8120" driver="bjc-PIXMA-MG8120" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG8120B" driver="bjc-PIXMA-MG8120B" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG8130" driver="bjc-PIXUS-MG8130" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG8140" driver="bjc-PIXMA-MG8140" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG8150" driver="bjc-PIXMA-MG8150" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG8170" driver="bjc-PIXMA-MG8170" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG8180" driver="bjc-PIXMA-MG8180" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MG8200 family --> - <printer translate="name" name="Canon MG8200 series" driver="bjc-MG8200-series" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG8200" driver="bjc-PIXMA-MG8200" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG8220" driver="bjc-PIXMA-MG8220" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MG8230" driver="bjc-PIXUS-MG8230" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG8240" driver="bjc-PIXMA-MG8240" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG8250" driver="bjc-PIXMA-MG8250" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG8270" driver="bjc-PIXMA-MG8270" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MG8280" driver="bjc-PIXMA-MG8280" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> - <!-- Canon MX300 family --> - <printer translate="name" name="Canon MX300 series" driver="bjc-MX300-series" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX300" driver="bjc-MULTIPASS-MX300" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MX308" driver="bjc-PIXMA-MX308" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX310 family--> - <printer translate="name" name="Canon MX310 series" driver="bjc-MX310-series" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX310" driver="bjc-MULTIPASS-MX310" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MX318" driver="bjc-PIXMA-MX318" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX320 family--> - <printer translate="name" name="Canon MX320 series" driver="bjc-MX320-series" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX320" driver="bjc-MULTIPASS-MX320" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MX328" driver="bjc-PIXMA-MX328" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX330 family--> - <printer translate="name" name="Canon MX330 series" driver="bjc-MX330-series" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX330" driver="bjc-MULTIPASS-MX330" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MX338" driver="bjc-PIXMA-MX338" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX340 family --> - <printer translate="name" name="Canon MX340 series" driver="bjc-MX340-series" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX340" driver="bjc-MULTIPASS-MX340" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MX347" driver="bjc-PIXMA-MX347" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX348" driver="bjc-PIXMA-MX348" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX350 family --> - <printer translate="name" name="Canon MX350 series" driver="bjc-MX350-series" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX350" driver="bjc-MULTIPASS-MX350" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MX350" driver="bjc-PIXUS-MX350" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX357" driver="bjc-PIXMA-MX357" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX358" driver="bjc-PIXMA-MX358" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX360 family --> - <printer translate="name" name="Canon MX360 series" driver="bjc-MX360-series" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX360" driver="bjc-MULTIPASS-MX360" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MX366" driver="bjc-PIXMA-MX366" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX368" driver="bjc-PIXMA-MX368" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX370 family --> - <printer translate="name" name="Canon MX370 series" driver="bjc-MX370-series" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX370" driver="bjc-MULTIPASS-MX370" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MX371" driver="bjc-PIXMA-MX371" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX372" driver="bjc-PIXMA-MX372" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX374" driver="bjc-PIXMA-MX374" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX375" driver="bjc-PIXMA-MX375" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX376" driver="bjc-PIXMA-MX376" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX377" driver="bjc-PIXMA-MX377" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX378" driver="bjc-PIXMA-MX378" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX390 family --> - <printer translate="name" name="Canon MX390 series" driver="bjc-MX390-series" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX391" driver="bjc-PIXMA-MX391" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX392" driver="bjc-PIXMA-MX392" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX394" driver="bjc-PIXMA-MX394" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX395" driver="bjc-PIXMA-MX395" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX396" driver="bjc-PIXMA-MX396" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX397" driver="bjc-PIXMA-MX397" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX398" driver="bjc-PIXMA-MX398" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX410 family --> - <printer translate="name" name="Canon MX410 series" driver="bjc-MX410-series" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX410" driver="bjc-MULTIPASS-MX410" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MX416" driver="bjc-PIXMA-MX416" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX418" driver="bjc-PIXMA-MX418" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX420 family --> - <printer translate="name" name="Canon MX420 series" driver="bjc-MX420-series" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX420" driver="bjc-MULTIPASS-MX420" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MX420" driver="bjc-PIXUS-MX420" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX426" driver="bjc-PIXMA-MX426" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX428" driver="bjc-PIXMA-MX428" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX430 family --> - <printer translate="name" name="Canon MX430 series" driver="bjc-MX430-series" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX430" driver="bjc-MULTIPASS-MX430" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MX431" driver="bjc-PIXMA-MX431" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX432" driver="bjc-PIXMA-MX432" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX434" driver="bjc-PIXMA-MX434" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX435" driver="bjc-PIXMA-MX435" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX436" driver="bjc-PIXMA-MX436" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX437" driver="bjc-PIXMA-MX437" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX438" driver="bjc-PIXMA-MX438" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX439" driver="bjc-PIXMA-MX439" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX450 family --> - <printer translate="name" name="Canon MX450 series" driver="bjc-MX450-series" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX451" driver="bjc-PIXMA-MX451" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX452" driver="bjc-PIXMA-MX452" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX454" driver="bjc-PIXMA-MX454" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX455" driver="bjc-PIXMA-MX455" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX456" driver="bjc-PIXMA-MX456" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX457" driver="bjc-PIXMA-MX457" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX458" driver="bjc-PIXMA-MX458" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX459" driver="bjc-PIXMA-MX459" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX470 family --> - <printer translate="name" name="Canon MX470 series" driver="bjc-MX470-series" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX471" driver="bjc-PIXMA-MX471" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX472" driver="bjc-PIXMA-MX472" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX474" driver="bjc-PIXMA-MX474" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX475" driver="bjc-PIXMA-MX475" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX476" driver="bjc-PIXMA-MX476" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX477" driver="bjc-PIXMA-MX477" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX478" driver="bjc-PIXMA-MX478" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX479" driver="bjc-PIXMA-MX479" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX490 family --> - <printer translate="name" name="Canon MX490 series" driver="bjc-MX490-series" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX490" driver="bjc-PIXMA-MX490" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX492" driver="bjc-PIXMA-MX492" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX494" driver="bjc-PIXMA-MX494" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX495" driver="bjc-PIXMA-MX495" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX496" driver="bjc-PIXMA-MX496" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX497" driver="bjc-PIXMA-MX497" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX498" driver="bjc-PIXMA-MX498" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX499" driver="bjc-PIXMA-MX499" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX510 family --> - <printer translate="name" name="Canon MX510 series" driver="bjc-MX510-series" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX510" driver="bjc-MULTIPASS-MX510" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MX511" driver="bjc-PIXMA-MX511" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX512" driver="bjc-PIXMA-MX512" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MX513" driver="bjc-PIXUS-MX513" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX514" driver="bjc-PIXMA-MX514" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX515" driver="bjc-PIXMA-MX515" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX516" driver="bjc-PIXMA-MX516" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX517" driver="bjc-PIXMA-MX517" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX518" driver="bjc-PIXMA-MX518" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX520 family --> - <printer translate="name" name="Canon MX520 series" driver="bjc-MX520-series" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX521" driver="bjc-PIXMA-MX521" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX522" driver="bjc-PIXMA-MX522" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MX523" driver="bjc-PIXUS-MX523" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX524" driver="bjc-PIXMA-MX524" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX525" driver="bjc-PIXMA-MX525" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX526" driver="bjc-PIXMA-MX526" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX527" driver="bjc-PIXMA-MX527" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX528" driver="bjc-PIXMA-MX528" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX530 family --> - <printer translate="name" name="Canon MX530 series" driver="bjc-MX530-series" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX531" driver="bjc-PIXMA-MX531" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX532" driver="bjc-PIXMA-MX532" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX534" driver="bjc-PIXMA-MX534" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX535" driver="bjc-PIXMA-MX535" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX536" driver="bjc-PIXMA-MX536" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX537" driver="bjc-PIXMA-MX537" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX538" driver="bjc-PIXMA-MX538" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX700 family --> - <printer translate="name" name="Canon MX700 series" driver="bjc-MX700-series" manufacturer="Canon" model="9000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX700" driver="bjc-MULTIPASS-MX700" manufacturer="Canon" model="9000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX710" driver="bjc-MULTIPASS-MX710" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MX711" driver="bjc-PIXMA-MX711" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX712" driver="bjc-PIXMA-MX712" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX714" driver="bjc-PIXMA-MX714" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX715" driver="bjc-PIXMA-MX715" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX720 family --> - <printer translate="name" name="Canon MX720 series" driver="bjc-MX720-series" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX721" driver="bjc-PIXMA-MX721" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX722" driver="bjc-PIXMA-MX722" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX725" driver="bjc-PIXMA-MX725" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX726" driver="bjc-PIXMA-MX726" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX727" driver="bjc-PIXMA-MX727" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX728" driver="bjc-PIXMA-MX728" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX850 family--> - <printer translate="name" name="Canon MX850 series" driver="bjc-MX850-series" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX850" driver="bjc-MULTIPASS-MX850" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MX850" driver="bjc-PIXUS-MX850" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX860 family --> - <printer translate="name" name="Canon MX860 series" driver="bjc-MX860-series" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX860" driver="bjc-MULTIPASS-MX860" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MX860" driver="bjc-PIXUS-MX860" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX868" driver="bjc-PIXMA-MX868" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX870 family --> - <printer translate="name" name="Canon MX870 series" driver="bjc-MX870-series" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX870" driver="bjc-MULTIPASS-MX870" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MX870" driver="bjc-PIXUS-MX870" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX876" driver="bjc-PIXMA-MX876" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX880 family --> - <printer translate="name" name="Canon MX880 series" driver="bjc-MX880-series" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX880" driver="bjc-MULTIPASS-MX880" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MX882" driver="bjc-PIXMA-MX882" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MX883" driver="bjc-PIXUS-MX883" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX884" driver="bjc-PIXMA-MX884" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX885" driver="bjc-PIXMA-MX885" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX886" driver="bjc-PIXMA-MX886" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX888" driver="bjc-PIXMA-MX888" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX890 family --> - <printer translate="name" name="Canon MX890 series" driver="bjc-MX890-series" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX890" driver="bjc-MULTIPASS-MX890" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA MX892" driver="bjc-PIXMA-MX892" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MX893" driver="bjc-PIXUS-MX893" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX894" driver="bjc-PIXMA-MX894" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX895" driver="bjc-PIXMA-MX895" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX897" driver="bjc-PIXMA-MX897" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX898" driver="bjc-PIXMA-MX898" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX920 family --> - <printer translate="name" name="Canon MX920 series" driver="bjc-MX920-series" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX922" driver="bjc-PIXMA-MX922" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXUS MX923" driver="bjc-PIXUS-MX923" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX924" driver="bjc-PIXMA-MX924" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX925" driver="bjc-PIXMA-MX925" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX926" driver="bjc-PIXMA-MX926" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX927" driver="bjc-PIXMA-MX927" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX928" driver="bjc-PIXMA-MX928" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MX7600 family --> - <printer translate="name" name="Canon MX7600 series" driver="bjc-MX7600-series" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA MX7600" driver="bjc-MULTIPASS-MX7600" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXUS MX7600" driver="bjc-PIXUS-MX7600" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon E400 family --> - <printer translate="name" name="Canon E400 series" driver="bjc-E400-series" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E400" driver="bjc-PIXMA-E400" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E401" driver="bjc-PIXMA-E401" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E404" driver="bjc-PIXMA-E404" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E408" driver="bjc-PIXMA-E408" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E409" driver="bjc-PIXMA-E409" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon E410 family --> - <printer translate="name" name="Canon E410 series" driver="bjc-E410-series" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E410" driver="bjc-PIXMA-E410" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E414" driver="bjc-PIXMA-E414" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E417" driver="bjc-PIXMA-E417" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> <printer translate="name" name="Canon PIXMA E418" driver="bjc-PIXMA-E418" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon E460 family --> - <printer translate="name" name="Canon E460 series" driver="bjc-E460-series" manufacturer="Canon" model="12000460" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E460" driver="bjc-PIXMA-E460" manufacturer="Canon" model="12000460" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E461" driver="bjc-PIXMA-E461" manufacturer="Canon" model="12000460" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E464" driver="bjc-PIXMA-E464" manufacturer="Canon" model="12000460" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E468" driver="bjc-PIXMA-E468" manufacturer="Canon" model="12000460" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon E470 family --> - <printer translate="name" name="Canon E470 series" driver="bjc-E470-series" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E470" driver="bjc-PIXMA-E470" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E471" driver="bjc-PIXMA-E471" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E474" driver="bjc-PIXMA-E474" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E477" driver="bjc-PIXMA-E477" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E478" driver="bjc-PIXMA-E478" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon E480 family --> - <printer translate="name" name="Canon E480 series" driver="bjc-E480-series" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E480" driver="bjc-PIXMA-E480" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E481" driver="bjc-PIXMA-E481" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E484" driver="bjc-PIXMA-E484" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E488" driver="bjc-PIXMA-E488" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E489" driver="bjc-PIXMA-E489" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon E500 family --> - <printer translate="name" name="Canon E500 series" driver="bjc-E500-series" manufacturer="Canon" model="12000500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E500" driver="bjc-MULTIPASS-E500" manufacturer="Canon" model="12000500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E510" driver="bjc-PIXMA-E510" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E514" driver="bjc-PIXMA-E514" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E518" driver="bjc-PIXMA-E518" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon E560 family --> - <printer translate="name" name="Canon E560 series" driver="bjc-E560-series" manufacturer="Canon" model="12000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E560" driver="bjc-PIXMA-E560" manufacturer="Canon" model="12000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E568" driver="bjc-PIXMA-E568" manufacturer="Canon" model="12000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E569" driver="bjc-PIXMA-E569" manufacturer="Canon" model="12000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon E600 family --> - <printer translate="name" name="Canon E600 series" driver="bjc-E600-series" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E600" driver="bjc-MULTIPASS-E600" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> - <printer translate="name" name="Canon PIXMA E608" driver="bjc-PIXMA-E608" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon E610 family --> - <printer translate="name" name="Canon E610 series" driver="bjc-E610-series" manufacturer="Canon" model="12000610" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E610" driver="bjc-PIXMA-E610" manufacturer="Canon" model="12000610" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E618" driver="bjc-PIXMA-E618" manufacturer="Canon" model="12000610" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon E3100 family --> - <printer translate="name" name="Canon E3100 series" driver="bjc-E3100-series" manufacturer="Canon" model="12003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA E3170" driver="bjc-PIXMA-E3170" manufacturer="Canon" model="12003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon PIXMA G1000 family --> - <printer translate="name" name="Canon G1000 series" driver="bjc-G1000-series" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G1000" driver="bjc-PIXMA-G1000" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G1100" driver="bjc-PIXMA-G1100" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G1200" driver="bjc-PIXMA-G1200" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G1400" driver="bjc-PIXMA-G1400" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G1500" driver="bjc-PIXMA-G1500" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G1800" driver="bjc-PIXMA-G1800" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G1900" driver="bjc-PIXMA-G1900" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon PIXMA G2000 family --> - <printer translate="name" name="Canon G2000 series" driver="bjc-G2000-series" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G2000" driver="bjc-PIXMA-G2000" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G2002" driver="bjc-PIXMA-G2002" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G2100" driver="bjc-PIXMA-G2100" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G2200" driver="bjc-PIXMA-G2200" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G2400" driver="bjc-PIXMA-G2400" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G2500" driver="bjc-PIXMA-G2500" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G2600" driver="bjc-PIXMA-G2600" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G2800" driver="bjc-PIXMA-G2800" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G2900" driver="bjc-PIXMA-G2900" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon PIXMA G3000 family --> - <printer translate="name" name="Canon G3000 series" driver="bjc-G3000-series" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G3000" driver="bjc-PIXMA-G3000" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G3100" driver="bjc-PIXMA-G3100" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G3200" driver="bjc-PIXMA-G3200" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G3400" driver="bjc-PIXMA-G3400" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G3500" driver="bjc-PIXMA-G3500" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G3600" driver="bjc-PIXMA-G3600" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G3800" driver="bjc-PIXMA-G3800" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G3900" driver="bjc-PIXMA-G3900" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon PIXMA G4000 family --> - <printer translate="name" name="Canon G4000 series" driver="bjc-G4000-series" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G4000" driver="bjc-PIXMA-G4000" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G4100" driver="bjc-PIXMA-G4100" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G4200" driver="bjc-PIXMA-G4200" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G4400" driver="bjc-PIXMA-G4400" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G4500" driver="bjc-PIXMA-G4500" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G4600" driver="bjc-PIXMA-G4600" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G4800" driver="bjc-PIXMA-G4800" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA G4900" driver="bjc-PIXMA-G4900" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon PIXMA P200 --> - <printer translate="name" name="Canon PIXMA P200" driver="bjc-PIXMA-P200" manufacturer="Canon" model="13000200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon TS3100 family --> - <printer translate="name" name="Canon TS3100 series" driver="bjc-TS3100-series" manufacturer="Canon" model="12003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS3170" driver="bjc-PIXMA-TS3170" manufacturer="Canon" model="12003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon TS5000 family --> - <printer translate="name" name="Canon TS5000 series" driver="bjc-TS5000-series" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS5010" driver="bjc-PIXMA-TS5010" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS5020" driver="bjc-PIXMA-TS5020" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS5030" driver="bjc-PIXMA-TS5030" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS5040" driver="bjc-PIXMA-TS5040" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS5050" driver="bjc-PIXMA-TS5050" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- black model --> - <printer translate="name" name="Canon PIXMA TS5051" driver="bjc-PIXMA-TS5051" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- white model --> - <printer translate="name" name="Canon PIXMA TS5053" driver="bjc-PIXMA-TS5053" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- grey model --> - <printer translate="name" name="Canon PIXMA TS5055" driver="bjc-PIXMA-TS5055" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- black model --> - <printer translate="name" name="Canon PIXMA TS5060" driver="bjc-PIXMA-TS5060" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS5070" driver="bjc-PIXMA-TS5070" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS5080" driver="bjc-PIXMA-TS5080" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS5090" driver="bjc-PIXMA-TS5090" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon TS6000 family --> - <printer translate="name" name="Canon TS6000 series" driver="bjc-TS6000-series" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS6010" driver="bjc-PIXMA-TS6010" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS6020" driver="bjc-PIXMA-TS6020" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS6030" driver="bjc-PIXMA-TS6030" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS6040" driver="bjc-PIXMA-TS6040" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS6050" driver="bjc-PIXMA-TS6050" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- black model --> - <printer translate="name" name="Canon PIXMA TS6051" driver="bjc-PIXMA-TS6051" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- white model --> - <printer translate="name" name="Canon PIXMA TS6052" driver="bjc-PIXMA-TS6052" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- grey model --> - <printer translate="name" name="Canon PIXMA TS6060" driver="bjc-PIXMA-TS6060" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS6070" driver="bjc-PIXMA-TS6070" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS6080" driver="bjc-PIXMA-TS6080" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon TS8000 family --> - <printer translate="name" name="Canon TS8000 series" driver="bjc-TS8000-series" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS8010" driver="bjc-PIXMA-TS8010" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS8020" driver="bjc-PIXMA-TS8020" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS8030" driver="bjc-PIXMA-TS8030" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS8040" driver="bjc-PIXMA-TS8040" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS8050" driver="bjc-PIXMA-TS8050" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- black model --> - <printer translate="name" name="Canon PIXMA TS8051" driver="bjc-PIXMA-TS8051" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- white model --> - <printer translate="name" name="Canon PIXMA TS8052" driver="bjc-PIXMA-TS8052" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- red model --> - <printer translate="name" name="Canon PIXMA TS8053" driver="bjc-PIXMA-TS8053" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- brown model --> - <printer translate="name" name="Canon PIXMA TS8060" driver="bjc-PIXMA-TS8060" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS8070" driver="bjc-PIXMA-TS8070" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS8080" driver="bjc-PIXMA-TS8080" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS8090" driver="bjc-PIXMA-TS8090" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon TS9000 family --> - <printer translate="name" name="Canon TS9000 series" driver="bjc-TS9000-series" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS9010" driver="bjc-PIXMA-TS9010" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS9020" driver="bjc-PIXMA-TS9020" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS9030" driver="bjc-PIXMA-TS9030" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS9040" driver="bjc-PIXMA-TS9040" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS9050" driver="bjc-PIXMA-TS9050" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- white model --> - <printer translate="name" name="Canon PIXMA TS9055" driver="bjc-PIXMA-TS9055" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- red model --> - <printer translate="name" name="Canon PIXMA TS9060" driver="bjc-PIXMA-TS9060" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon PIXMA TS9080" driver="bjc-PIXMA-TS9080" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MAXIFY iB4000 family --> - <printer translate="name" name="Canon iB4000 series" driver="bjc-iB4000-series" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4010" driver="bjc-MAXIFY-iB4010" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4020" driver="bjc-MAXIFY-iB4020" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4030" driver="bjc-MAXIFY-iB4030" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4040" driver="bjc-MAXIFY-iB4040" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4050" driver="bjc-MAXIFY-iB4050" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4060" driver="bjc-MAXIFY-iB4060" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4070" driver="bjc-MAXIFY-iB4070" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4080" driver="bjc-MAXIFY-iB4080" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4090" driver="bjc-MAXIFY-iB4090" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MAXIFY iB4100 family --> - <printer translate="name" name="Canon iB4100 series" driver="bjc-iB4100-series" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4110" driver="bjc-MAXIFY-iB4110" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4120" driver="bjc-MAXIFY-iB4120" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4130" driver="bjc-MAXIFY-iB4130" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4140" driver="bjc-MAXIFY-iB4140" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4150" driver="bjc-MAXIFY-iB4150" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4170" driver="bjc-MAXIFY-iB4170" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4180" driver="bjc-MAXIFY-iB4180" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY iB4190" driver="bjc-MAXIFY-iB4190" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MAXIFY MB2000 family --> - <printer translate="name" name="Canon MB2000 series" driver="bjc-MB2000-series" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2010" driver="bjc-MAXIFY-MB2010" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2020" driver="bjc-MAXIFY-MB2020" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2030" driver="bjc-MAXIFY-MB2030" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2040" driver="bjc-MAXIFY-MB2040" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2050" driver="bjc-MAXIFY-MB2050" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2060" driver="bjc-MAXIFY-MB2060" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MAXIFY MB2100 family --> - <printer translate="name" name="Canon MB2100 series" driver="bjc-MB2100-series" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2110" driver="bjc-MAXIFY-MB2110" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2120" driver="bjc-MAXIFY-MB2120" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2130" driver="bjc-MAXIFY-MB2130" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2140" driver="bjc-MAXIFY-MB2140" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2150" driver="bjc-MAXIFY-MB2150" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2160" driver="bjc-MAXIFY-MB2160" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MAXIFY MB2300 family --> - <printer translate="name" name="Canon MB2300 series" driver="bjc-MB2300-series" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2320" driver="bjc-MAXIFY-MB2320" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2330" driver="bjc-MAXIFY-MB2330" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2340" driver="bjc-MAXIFY-MB2340" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2350" driver="bjc-MAXIFY-MB2350" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2360" driver="bjc-MAXIFY-MB2360" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2390" driver="bjc-MAXIFY-MB2390" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MAXIFY MB2700 family --> - <printer translate="name" name="Canon MB2700 series" driver="bjc-MB2700-series" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2710" driver="bjc-MAXIFY-MB2710" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2720" driver="bjc-MAXIFY-MB2720" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2730" driver="bjc-MAXIFY-MB2730" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2740" driver="bjc-MAXIFY-MB2740" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2750" driver="bjc-MAXIFY-MB2750" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2760" driver="bjc-MAXIFY-MB2760" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB2790" driver="bjc-MAXIFY-MB2790" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MAXIFY MB5000 family --> - <printer translate="name" name="Canon MB5000 series" driver="bjc-MB5000-series" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5020" driver="bjc-MAXIFY-MB5020" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5030" driver="bjc-MAXIFY-MB5030" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5040" driver="bjc-MAXIFY-MB5040" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5050" driver="bjc-MAXIFY-MB5050" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5060" driver="bjc-MAXIFY-MB5060" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5070" driver="bjc-MAXIFY-MB5070" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5080" driver="bjc-MAXIFY-MB5080" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5090" driver="bjc-MAXIFY-MB5090" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MAXIFY MB5100 family --> - <printer translate="name" name="Canon MB5100 series" driver="bjc-MB5100-series" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5110" driver="bjc-MAXIFY-MB5110" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5120" driver="bjc-MAXIFY-MB5120" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5130" driver="bjc-MAXIFY-MB5130" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5140" driver="bjc-MAXIFY-MB5140" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5150" driver="bjc-MAXIFY-MB5150" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5160" driver="bjc-MAXIFY-MB5160" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5170" driver="bjc-MAXIFY-MB5170" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5180" driver="bjc-MAXIFY-MB5180" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5190" driver="bjc-MAXIFY-MB5190" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MAXIFY MB5300 family --> - <printer translate="name" name="Canon MB5300 series" driver="bjc-MB5300-series" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5310" driver="bjc-MAXIFY-MB5310" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5320" driver="bjc-MAXIFY-MB5320" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5330" driver="bjc-MAXIFY-MB5330" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5340" driver="bjc-MAXIFY-MB5340" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5350" driver="bjc-MAXIFY-MB5350" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5360" driver="bjc-MAXIFY-MB5360" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5370" driver="bjc-MAXIFY-MB5370" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5390" driver="bjc-MAXIFY-MB5390" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- Canon MAXIFY MB5400 family --> - <printer translate="name" name="Canon MB5400 series" driver="bjc-MB5400-series" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5410" driver="bjc-MAXIFY-MB5410" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5420" driver="bjc-MAXIFY-MB5420" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5430" driver="bjc-MAXIFY-MB5430" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5440" driver="bjc-MAXIFY-MB5440" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5450" driver="bjc-MAXIFY-MB5450" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5460" driver="bjc-MAXIFY-MB5460" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5470" driver="bjc-MAXIFY-MB5470" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5480" driver="bjc-MAXIFY-MB5480" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon MAXIFY MB5490" driver="bjc-MAXIFY-MB5490" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <!-- --> - <printer translate="name" name="Canon PIXUS 50i" driver="bjc-50i" manufacturer="Canon" model="2000050" parameters="density_800_params" /> - <printer translate="name" name="Canon PIXUS 80i" driver="bjc-80i" manufacturer="Canon" model="2000080" parameters="density_800_params" /> - <printer translate="name" name="Canon PIXUS 450i" driver="bjc-450i" manufacturer="Canon" model="2000450" parameters="density_800_params" /> - <printer translate="name" name="Canon PIXUS 455i" driver="bjc-455i" manufacturer="Canon" model="2000455" parameters="density_800_params" /> - <printer translate="name" name="Canon PIXUS 470PD" driver="bjc-470PD" manufacturer="Canon" model="2000450" parameters="density_800_params" /> - <printer translate="name" name="Canon PIXUS 475PD" driver="bjc-475PD" manufacturer="Canon" model="2000455" parameters="density_800_params" /> - <printer translate="name" name="Canon PIXUS 550i" driver="bjc-550i" manufacturer="Canon" model="2000550" parameters="density_800_params" /> - <printer translate="name" name="Canon PIXUS 560i" driver="bjc-560i" manufacturer="Canon" model="2000560" parameters="gamma_6_density_800_params" /> - <printer translate="name" name="Canon PIXUS 850i" driver="bjc-850i" manufacturer="Canon" model="2000850" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXUS 860i" driver="bjc-860i" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXUS 865R" driver="bjc-865R" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXUS 900PD" driver="bjc-900PD" manufacturer="Canon" model="2000900" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXUS 950i" driver="bjc-950i" manufacturer="Canon" model="2000950" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXUS 960i" driver="bjc-960i" manufacturer="Canon" model="2000960" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXUS 990i" driver="bjc-990i" manufacturer="Canon" model="2000990" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXUS 6100i" driver="bjc-6100i" manufacturer="Canon" model="2006100" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXUS 6500i" driver="bjc-6500i" manufacturer="Canon" model="2006100" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXUS 9100i" driver="bjc-9100i" manufacturer="Canon" model="2009100" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon PIXUS 9900i" driver="bjc-9900i" manufacturer="Canon" model="2009900" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon i70" driver="bjc-i70" manufacturer="Canon" model="2000050" parameters="density_800_params" /> - <printer translate="name" name="Canon i80" driver="bjc-i80" manufacturer="Canon" model="2000080" parameters="density_800_params" /> - <printer translate="name" name="Canon i450" driver="bjc-i450" manufacturer="Canon" model="2000450" parameters="density_800_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i450X" driver="bjc-i450X" manufacturer="Canon" model="2000450" parameters="density_800_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i455" driver="bjc-i455" manufacturer="Canon" model="2000455" parameters="density_800_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i455X" driver="bjc-i455X" manufacturer="Canon" model="2000455" parameters="density_800_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i470D" driver="bjc-i470D" manufacturer="Canon" model="2000450" parameters="density_800_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i475D" driver="bjc-i475D" manufacturer="Canon" model="2000455" parameters="density_800_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i550" driver="bjc-i550" manufacturer="Canon" model="2000550" parameters="density_800_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i550X" driver="bjc-i550X" manufacturer="Canon" model="2000550" parameters="density_800_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i560" driver="bjc-i560" manufacturer="Canon" model="2000560" parameters="gamma_6_density_800_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i560X" driver="bjc-i560X" manufacturer="Canon" model="2000560" parameters="gamma_6_density_800_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i850old" driver="bjc-i850old" manufacturer="Canon" model="3003000" parameters="PIXMA_iP4000_params">Original printers are named with "old" appended</printer> - <printer translate="name" name="Canon i850" driver="bjc-i850" manufacturer="Canon" model="2000850" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i860old" driver="bjc-i860old" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params">Original printers are named with "old" appended</printer> - <printer translate="name" name="Canon i860" driver="bjc-i860" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i865old" driver="bjc-i865old" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params">Original printers are named with "old" appended</printer> - <printer translate="name" name="Canon i865" driver="bjc-i865" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i900D" driver="bjc-i900D" manufacturer="Canon" model="2000900" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i905D" driver="bjc-i905D" manufacturer="Canon" model="2000900" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i950" driver="bjc-i950" manufacturer="Canon" model="2000950" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i960" driver="bjc-i960" manufacturer="Canon" model="2000960" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i965" driver="bjc-i965" manufacturer="Canon" model="2000960" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i990" driver="bjc-i990" manufacturer="Canon" model="2000990" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i6100" driver="bjc-i6100" manufacturer="Canon" model="2006100" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon i6500" driver="bjc-i6500" manufacturer="Canon" model="2006100" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon i9100" driver="bjc-i9100" manufacturer="Canon" model="2009100" parameters="PIXMA_iP4000_params" /> - <printer translate="name" name="Canon i9900" driver="bjc-i9900" manufacturer="Canon" model="2009900" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - <printer translate="name" name="Canon i9950" driver="bjc-i9950" manufacturer="Canon" model="2009900" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> - </family> - <family name="dpl"> - <parameters name="dpl_params"> - <parameter type="float" name="Gamma">1.000</parameter> - <parameter type="float" name="Density">1.000</parameter> - </parameters> - <printer translate="name" name="Datamax-ONeil I4212e Mark II" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:I4212e Mark II;" color="false" driver="datamax_oneil_I4212e" manufacturer="DatamaxONeil" model="10017" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil I4310e Mark II" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:I4310e Mark II;" color="false" driver="datamax_oneil_I4310e" manufacturer="DatamaxONeil" model="10018" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil I4606e Mark II" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:I4606e Mark II;" color="false" driver="datamax_oneil_I4606e" manufacturer="DatamaxONeil" model="10020" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil E4204B Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4204B Mark III;" color="false" driver="datamax_oneil_E4204B" manufacturer="DatamaxONeil" model="10021" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil E4304B Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4304B Mark III;" color="false" driver="datamax_oneil_E4304B" manufacturer="DatamaxONeil" model="10022" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil E4205A Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4205A Mark III;" color="false" driver="datamax_oneil_E4205A" manufacturer="DatamaxONeil" model="10023" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil E4305A Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4305A Mark III;" color="false" driver="datamax_oneil_E4305A" manufacturer="DatamaxONeil" model="10024" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil E4206P Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4206P Mark III;" color="false" driver="datamax_oneil_E4206P" manufacturer="DatamaxONeil" model="10025" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil E4305P Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4305P Mark III;" color="false" driver="datamax_oneil_E4305P" manufacturer="DatamaxONeil" model="10026" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil E4206L Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4206L Mark III;" color="false" driver="datamax_oneil_E4206L" manufacturer="DatamaxONeil" model="10027" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil E4305L Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4305L Mark III;" color="false" driver="datamax_oneil_E4305L" manufacturer="DatamaxONeil" model="10028" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil RL3e" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:RL3e;" color="false" driver="datamax_oneil_RL3e" manufacturer="DatamaxONeil" model="10029" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil RL4e" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:RL4e;" color="false" driver="datamax_oneil_RL4e" manufacturer="DatamaxONeil" model="10030" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil H4212" deviceid="MFG:Datamax;CMD:DPL;MDL:H4212;" color="false" driver="datamax_oneil_H4212" manufacturer="DatamaxONeil" model="10031" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil H4212X" deviceid="MFG:Datamax;CMD:DPL;MDL:H4212X;" color="false" driver="datamax_oneil_H4212X" manufacturer="DatamaxONeil" model="10032" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil H4310" deviceid="MFG:Datamax;CMD:DPL;MDL:H4310;" color="false" driver="datamax_oneil_H4310" manufacturer="DatamaxONeil" model="10033" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil H4310X" deviceid="MFG:Datamax;CMD:DPL;MDL:H4310X;" color="false" driver="datamax_oneil_H4310X" manufacturer="DatamaxONeil" model="10034" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil H4408" deviceid="MFG:Datamax;CMD:DPL;MDL:H4408;" color="false" driver="datamax_oneil_H4408" manufacturer="DatamaxONeil" model="10035" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil H4606" deviceid="MFG:Datamax;CMD:DPL;MDL:H4606;" color="false" driver="datamax_oneil_H4606" manufacturer="DatamaxONeil" model="10036" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil H4606X" deviceid="MFG:Datamax;CMD:DPL;MDL:H4606X;" color="false" driver="datamax_oneil_H4606X" manufacturer="DatamaxONeil" model="10037" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil H6210" deviceid="MFG:Datamax;CMD:DPL;MDL:H6210;" color="false" driver="datamax_oneil_H6210" manufacturer="DatamaxONeil" model="10038" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil H6210X" deviceid="MFG:Datamax;CMD:DPL;MDL:H6210X;" color="false" driver="datamax_oneil_H6210X" manufacturer="DatamaxONeil" model="10039" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil H6212" deviceid="MFG:Datamax;CMD:DPL;MDL:H6212;" color="false" driver="datamax_oneil_H6212" manufacturer="DatamaxONeil" model="10040" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil H6212X" deviceid="MFG:Datamax;CMD:DPL;MDL:H6212X;" color="false" driver="datamax_oneil_H6212X" manufacturer="DatamaxONeil" model="10041" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil H6308" deviceid="MFG:Datamax;CMD:DPL;MDL:H6308;" color="false" driver="datamax_oneil_H6308" manufacturer="DatamaxONeil" model="10042" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil H6310X" deviceid="MFG:Datamax;CMD:DPL;MDL:H6310X;" color="false" driver="datamax_oneil_H6310X" manufacturer="DatamaxONeil" model="10043" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil H8308" deviceid="MFG:Datamax;CMD:DPL;MDL:H8308;" color="false" driver="datamax_oneil_H8308" manufacturer="DatamaxONeil" model="10044" parameters="dpl_params" /> - <printer translate="name" name="Datamax-ONeil H8308X" deviceid="MFG:Datamax;CMD:DPL;MDL:H8308X;" color="false" driver="datamax_oneil_H8308X" manufacturer="DatamaxONeil" model="10045" parameters="dpl_params" /> - <printer translate="name" name="Honeywell RP2" deviceid="MFG:Honeywell ;CMD:DPL;MDL:RP2;" color="false" driver="honeywell_rp2" manufacturer="Honeywell" model="10046" parameters="dpl_params" /> - <printer translate="name" name="Honeywell RP4" deviceid="MFG:Honeywell ;CMD:DPL;MDL:RP4;" color="false" driver="honeywell_rp4" manufacturer="Honeywell" model="10047" parameters="dpl_params" /> - </family> - <family name="escp2"> - <parameters name="standard_params"> - <parameter type="float" name="Gamma">0.470</parameter> - </parameters> - <parameters name="480_params"> - <parameter type="float" name="MagentaGamma">0.95</parameter> - <parameter type="float" name="YellowGamma">0.9</parameter> - <parameter type="float" name="Gamma">0.470</parameter> - </parameters> - <parameters name="pro_5500_params"> - <parameter type="float" name="CyanGamma">0.8</parameter> - <parameter type="float" name="Gamma">0.470</parameter> - </parameters> - <parameters name="cx3500_params"> - <parameter type="float" name="CyanGamma">0.96</parameter> - <parameter type="float" name="MagentaGamma">1.02</parameter> - <parameter type="float" name="YellowGamma">1.02</parameter> - <parameter type="float" name="Gamma">0.500</parameter> - </parameters> - <parameters name="claria_params"> - <parameter type="float" name="Gamma">0.470</parameter> - <parameter type="float" name="BlackDensity">0.8</parameter> - </parameters> - <printer translate="name" name="Epson Artisan 50" driver="escp2-artisan50" manufacturer="Epson" model="97" parameters="claria_params" /> - <printer translate="name" name="Epson Artisan 700" driver="escp2-artisan700" manufacturer="Epson" model="96" parameters="claria_params" /> - <printer translate="name" name="Epson Artisan 710" driver="escp2-artisan710" manufacturer="Epson" model="96" parameters="claria_params" /> - <printer translate="name" name="Epson Artisan 800" driver="escp2-artisan800" manufacturer="Epson" model="96" parameters="claria_params" /> - <printer translate="name" name="Epson Artisan 810" driver="escp2-artisan810" manufacturer="Epson" model="96" parameters="claria_params" /> - <printer translate="name" name="Epson Artisan 835" driver="escp2-artisan835" manufacturer="Epson" model="96" parameters="claria_params" /> - <printer translate="name" name="Epson Artisan 1430" driver="escp2-artisan1430" manufacturer="Epson" model="82" parameters="claria_params" /> - <printer translate="name" name="Epson B-300" driver="escp2-b300" manufacturer="Epson" model="87" parameters="standard_params" /> - <printer translate="name" name="Epson B-308" driver="escp2-b308" manufacturer="Epson" model="87" parameters="standard_params" /> - <printer translate="name" name="Epson B-310" driver="escp2-b310" manufacturer="Epson" model="87" parameters="standard_params" /> - <printer translate="name" name="Epson B-310N" driver="escp2-b310n" manufacturer="Epson" model="87" parameters="standard_params" /> - <printer translate="name" name="Epson B-500DN" driver="escp2-b500dn" manufacturer="Epson" model="87" parameters="standard_params" /> - <printer translate="name" name="Epson B-508DN" driver="escp2-b508dn" manufacturer="Epson" model="87" parameters="standard_params" /> - <printer translate="name" name="Epson B-510DN" driver="escp2-b510dn" manufacturer="Epson" model="87" parameters="standard_params" /> - <printer translate="name" name="Epson L120" driver="escp2-l120" manufacturer="Epson" model="80" parameters="cx3500_params" /> - <printer translate="name" name="Epson L210" driver="escp2-l210" manufacturer="Epson" model="80" parameters="cx3500_params" /> - <printer translate="name" name="Epson L310" driver="escp2-l310" manufacturer="Epson" model="129" parameters="cx3500_params" /> - <printer translate="name" name="Epson L1300" driver="escp2-l1300" manufacturer="Epson" model="99" parameters="standard_params" /> - <printer translate="name" name="Epson L1800" driver="escp2-l1800" manufacturer="Epson" model="122" parameters="cx3500_params" /> - <printer translate="name" name="Epson SC-P400 Series" driver="escp2-p400-s" manufacturer="Epson" model="91" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson SC-P600 Series" driver="escp2-p600-s" manufacturer="Epson" model="115" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson SC-P800 Series" driver="escp2-p800-s" manufacturer="Epson" model="130" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson SC-P6000 Series" driver="escp2-p6000-s" manufacturer="Epson" model="89" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson SC-P7000 Series" driver="escp2-p7000-s" manufacturer="Epson" model="124" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson SC-P8000 Series" driver="escp2-p8000-s" manufacturer="Epson" model="90" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson SC-P9000 Series" driver="escp2-p9000-s" manufacturer="Epson" model="125" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson SC-P10000 Series" driver="escp2-p10000-s" manufacturer="Epson" model="90" parameters="standard_params">EXPERIMENTAL; only three levels of gray supported</printer> - <printer translate="name" name="Epson SC-P20000 Series" driver="escp2-p20000-s" manufacturer="Epson" model="88" parameters="standard_params">EXPERIMENTAL; only three levels of gray supported</printer> - <printer translate="name" name="Epson Stylus C20" deviceid="MFG:EPSON;MDL:Stylus C20;DES:EPSON Stylus C20;CMD:ESCPL2,BDC,D4;" driver="escp2-c20" manufacturer="Epson" model="42" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C20SX" driver="escp2-c20sx" manufacturer="Epson" model="42" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C20UX" deviceid="MFG:EPSON;MDL:Stylus C20;DES:EPSON Stylus C20;CMD:ESCPL2,BDC,D4;" driver="escp2-c20ux" manufacturer="Epson" model="42" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C40" deviceid="MFG:EPSON;MDL:Stylus C40;DES:None;" driver="escp2-c40" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C40SX" driver="escp2-c40sx" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C40UX" driver="escp2-c40ux" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C41" driver="escp2-c41" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C41SX" driver="escp2-c41sx" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C41UX" driver="escp2-c41ux" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C42" deviceid="MFG:EPSON;MDL:Stylus C42;DES:EPSON Stylus C42;CMD:ESCPL2,BDC,D4;" driver="escp2-c42" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C42SX" driver="escp2-c42sx" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C42UX" deviceid="MFG:EPSON;MDL:Stylus C42;DES:EPSON Stylus C42;CMD:ESCPL2,BDC,D4;" driver="escp2-c42ux" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C43" deviceid="MFG:EPSON;MDL:Stylus C43;DES:EPSON Stylus C43;CMD:ESCPL2,BDC,D4;" driver="escp2-c43" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C43SX" deviceid="MFG:EPSON;MDL:Stylus C43;DES:EPSON Stylus C43;CMD:ESCPL2,BDC,D4;" driver="escp2-c43sx" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C43UX" deviceid="MFG:EPSON;MDL:Stylus C43;DES:EPSON Stylus C43;CMD:ESCPL2,BDC,D4;" driver="escp2-c43ux" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C44" deviceid="MFG:EPSON;MDL:Stylus C44;DES:EPSON Stylus C44;CMD:ESCPL2,BDC,D4;" driver="escp2-c44" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C44SX" deviceid="MFG:EPSON;MDL:Stylus C44;DES:EPSON Stylus C44;CMD:ESCPL2,BDC,D4;" driver="escp2-c44sx" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C44UX" deviceid="MFG:EPSON;MDL:Stylus C44;DES:EPSON Stylus C44;CMD:ESCPL2,BDC,D4;" driver="escp2-c44ux" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C45" deviceid="MFG:EPSON;MDL:Stylus C45;DES:EPSON Stylus C45;CMD:ESCPL2,BDC,D4;" driver="escp2-c45" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C46" deviceid="MFG:EPSON;MDL:Stylus C46;DES:EPSON Stylus C46;CMD:ESCPL2,BDC,D4;" driver="escp2-c46" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C48" deviceid="MFG:EPSON;MDL:Stylus C48;DES:EPSON Stylus C48;CMD:ESCPL2,BDC,D4;" driver="escp2-c48" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C50" driver="escp2-c50" manufacturer="Epson" model="56" parameters="480_params" /> - <printer translate="name" name="Epson Stylus C60" deviceid="MFG:EPSON;MDL:Stylus C60;DES:EPSON Stylus C60;CMD:ESCPL2,BDC,D4;" driver="escp2-c60" manufacturer="Epson" model="33" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus C61" driver="escp2-c61" manufacturer="Epson" model="52" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus C62" deviceid="MFG:EPSON;MDL:Stylus C62;DES:EPSON Stylus C62;CMD:ESCPL2,BDC,D4;" driver="escp2-c62" manufacturer="Epson" model="52" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus C63" driver="escp2-c63" manufacturer="Epson" model="61" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus C64" driver="escp2-c64" manufacturer="Epson" model="61" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus C65" deviceid="MFG:EPSON;MDL:Stylus C65;DES:EPSON Stylus C65;CMD:ESCPL2,BDC,D4;" driver="escp2-c65" manufacturer="Epson" model="66" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus C66" deviceid="MFG:EPSON;MDL:Stylus C66;DES:EPSON Stylus C66;CMD:ESCPL2,BDC,D4;" driver="escp2-c66" manufacturer="Epson" model="66" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus C68" deviceid="MFG:EPSON;MDL:Stylus C68;DES:EPSON Stylus C68;CMD:ESCPL2,BDC,D4;" driver="escp2-c68" manufacturer="Epson" model="66" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus C70" driver="escp2-c70" manufacturer="Epson" model="44" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus C79" driver="escp2-c79" manufacturer="Epson" model="66" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus C80" deviceid="MFG:EPSON;MDL:Stylus C80;DES:EPSON Stylus C80;CMD:ESCPL2,BDC,D4;" driver="escp2-c80" manufacturer="Epson" model="44" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus C82" deviceid="MFG:EPSON;MDL:Stylus C82;DES:EPSON Stylus C82;CMD:ESCPL2,BDC,D4;" driver="escp2-c82" manufacturer="Epson" model="55" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus C83" driver="escp2-c83" manufacturer="Epson" model="60" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus C84" deviceid="MFG:EPSON;MDL:Stylus C84;DES:EPSON Stylus C84;CMD:ESCPL2,BDC,D4;" driver="escp2-c84" manufacturer="Epson" model="60" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus C85" deviceid="MFG:EPSON;MDL:Stylus C85;DES:EPSON Stylus C85;CMD:ESCPL2,BDC,D4;" driver="escp2-c85" manufacturer="Epson" model="69" parameters="standard_params" /> - <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" /> - <printer translate="name" name="Epson Stylus C87" driver="escp2-c87" manufacturer="Epson" model="69" parameters="standard_params" /> - <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" /> - <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" /> - <printer translate="name" name="Epson Stylus C110" driver="escp2-c110" manufacturer="Epson" model="85" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus C120" driver="escp2-c120" manufacturer="Epson" model="85" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color" driver="escp2" manufacturer="Epson" model="0" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color I" driver="escp2-i" manufacturer="Epson" model="0" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color II" driver="escp2-ii" manufacturer="Epson" model="0" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color IIs" driver="escp2-iis" manufacturer="Epson" model="0" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color PRO" driver="escp2-pro" manufacturer="Epson" model="45" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro XL" driver="escp2-pro-xl" manufacturer="Epson" model="39" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 400" driver="escp2-400" manufacturer="Epson" model="1" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 440" deviceid="MFG:EPSON;MDL:Stylus COLOR 440;DES:EPSON Stylus COLOR 440;CMD:ESCPL2,BDC;" driver="escp2-440" manufacturer="Epson" model="10" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 460" deviceid="MFG:EPSON;MDL:Stylus COLOR 460;DES:EPSON Stylus COLOR 460;CMD:ESCPL2,BDC;" driver="escp2-460" manufacturer="Epson" model="10" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 480" deviceid="MFG:EPSON;MDL:Stylus COLOR 480;DES:EPSON Stylus COLOR 480;CMD:ESCPL2,BDC,D4;" driver="escp2-480" manufacturer="Epson" model="21" parameters="480_params" /> - <printer translate="name" name="Epson Stylus Color 500" driver="escp2-500" manufacturer="Epson" model="1" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 580" driver="escp2-580" manufacturer="Epson" model="38" parameters="480_params" /> - <printer translate="name" name="Epson Stylus Color 600" deviceid="MFG:EPSON;MDL:Stylus COLOR 600;CMD:ESCPL2,BDC;" driver="escp2-600" manufacturer="Epson" model="3" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 640" driver="escp2-640" manufacturer="Epson" model="11" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 660" driver="escp2-660" manufacturer="Epson" model="18" parameters="standard_params" /> - <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" /> - <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" /> - <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" /> - <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" /> - <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" /> - <printer translate="name" name="Epson Stylus Color 800" deviceid="MFG:EPSON;MDL:Stylus COLOR 800;CMD:ESCPL2,PRPXL24,BDC;" driver="escp2-800" manufacturer="Epson" model="4" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 850" driver="escp2-850" manufacturer="Epson" model="5" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 860" driver="escp2-860" manufacturer="Epson" model="16" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 880" deviceid="MFG:EPSON;MDL:Stylus COLOR 880;DES:EPSON Stylus COLOR 880;CMD:ESCPL2,BDC,D4;" driver="escp2-880" manufacturer="Epson" model="33" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 8 3" driver="escp2-83" manufacturer="Epson" model="33" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 900" deviceid="MFG:EPSON;MDL:Stylus COLOR 900;DES:EPSON Stylus COLOR 900;CMD:ESCPL2,PRPXL24,BDC,D4;" driver="escp2-900" manufacturer="Epson" model="13" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 980" deviceid="MFG:Epson;MDL:Stylus Color 980;CMD:ESC/P2;" driver="escp2-980" manufacturer="Epson" model="34" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 1160" driver="escp2-1160" manufacturer="Epson" model="17" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 1500" driver="escp2-1500" manufacturer="Epson" model="2" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 1520" deviceid="MFG:EPSON;MDL:Stylus COLOR 1520;CMD:ESCP2E,PRPXL;" driver="escp2-1520" manufacturer="Epson" model="6" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Color 3000" driver="escp2-3000" manufacturer="Epson" model="24" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office B30" driver="escp2-of-b30" manufacturer="Epson" model="85" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office B33" driver="escp2-of-b33" manufacturer="Epson" model="85" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office B40W" driver="escp2-of-b40w" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office B42WD" driver="escp2-of-b42wd" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office B1100" driver="escp2-of-b1100" manufacturer="Epson" model="99" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office T30" driver="escp2-of-t30" manufacturer="Epson" model="85" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office T33" driver="escp2-of-t33" manufacturer="Epson" model="85" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office T40W" driver="escp2-of-t40w" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office T1100" driver="escp2-of-t1100" manufacturer="Epson" model="99" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office T1110" driver="escp2-of-t1110" manufacturer="Epson" model="99" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office BX300F" driver="escp2-of-bx300f" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office BX525WD" driver="escp2-of-bx525wd" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office BX535WD" driver="escp2-of-bx535wd" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office BX600FW" driver="escp2-of-bx600fw" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office BX625FWD" driver="escp2-of-bx625fwd" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office BX630FW" driver="escp2-of-bx630fw" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office BX635FWD" driver="escp2-of-bx635fwd" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office SX600FW" driver="escp2-of-sx600fw" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office SX620FW" driver="escp2-of-sx620fw" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office TX300F" driver="escp2-of-tx300f" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office TX600FW" driver="escp2-of-tx600fw" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Office TX620FWD" driver="escp2-of-tx620fwd" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo" driver="escp2-photo" manufacturer="Epson" model="9" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 700" deviceid="MFG:EPSON;MDL:Stylus Photo 700;DES:EPSON Stylus Photo 700;CMD:ESCPL2,BDC;" driver="escp2-700" manufacturer="Epson" model="7" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo EX" deviceid="MFG:EPSON;MDL:Stylus Photo EX;CMD:ESCPL2,BDC;" driver="escp2-ex" manufacturer="Epson" model="8" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo EX3" driver="escp2-ex3" manufacturer="Epson" model="54" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 720" driver="escp2-720" manufacturer="Epson" model="20" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 750" deviceid="MFG:EPSON;MDL:Stylus Photo 750;DES:EPSON Stylus Photo 750;CMD:ESCPL2,BDC,D4;" driver="escp2-750" manufacturer="Epson" model="14" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 780" driver="escp2-780" manufacturer="Epson" model="35" parameters="standard_params" /> - <!-- - Note that the 785EPX has a roll feed holder. It's more like the 890 - than the 780, despite the name. - --> - <printer translate="name" name="Epson Stylus Photo 785" deviceid="MFG:EPSON;MDL:Stylus Photo 785EPX;DES:EPSON Stylus Photo 785EPX;CMD:ESCPL2,BDC,D4;" driver="escp2-785" manufacturer="Epson" model="36" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 790" deviceid="MFG:EPSON;MDL:Stylus Photo 790;DES:EPSON Stylus Photo 790;CMD:ESCPL2,BDC,D4;" driver="escp2-790" manufacturer="Epson" model="35" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 810" driver="escp2-810" manufacturer="Epson" model="78" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 820" deviceid="MFG:EPSON;MDL:Stylus Photo 820;DES:EPSON Stylus Photo 820;CMD:ESCPL2,BDC,D4;" driver="escp2-820" manufacturer="Epson" model="78" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 825" deviceid="MFG:EPSON;MDL:Stylus Photo 825;DES:EPSON Stylus Photo 825;CMD:ESCPL2,BDC,D4;" driver="escp2-825" manufacturer="Epson" model="50" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 830" deviceid="MFG:EPSON;MDL:Stylus Photo 830U;DES:EPSON Stylus Photo 830U;CMD:ESCPL2,BDC,D4;" driver="escp2-830" manufacturer="Epson" model="50" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 830U" deviceid="MFG:EPSON;MDL:Stylus Photo 830U;DES:EPSON Stylus Photo 830U;CMD:ESCPL2,BDC,D4;" driver="escp2-830u" manufacturer="Epson" model="50" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 870" deviceid="MFG:EPSON;MDL:Stylus Photo 870;DES:EPSON Stylus Photo 870;CMD:ESCPL2,BDC,D4;" driver="escp2-870" manufacturer="Epson" model="22" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 875" driver="escp2-875" manufacturer="Epson" model="22" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 890" deviceid="MFG:EPSON;MDL:Stylus Photo 890;DES:EPSON Stylus Photo 890;CMD:ESCPL2,BDC,D4;" driver="escp2-890" manufacturer="Epson" model="36" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 895" deviceid="MFG:EPSON;MDL:Stylus Photo 895;DES:EPSON Stylus Photo 895;CMD:ESCPL2,BDC,D4;" driver="escp2-895" manufacturer="Epson" model="36" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 900" deviceid="MFG:EPSON;MDL:Stylus Photo 900;DES:EPSON Stylus Photo 900;CMD:ESCPL2,BDC,D4;" driver="escp2-ph900" manufacturer="Epson" model="62" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 915" deviceid="MFG:EPSON;MDL:Stylus Photo 915;DES:EPSON Stylus Photo 915;CMD:ESCPL2,BDC,D4;" driver="escp2-915" manufacturer="Epson" model="36" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 925" driver="escp2-925" manufacturer="Epson" model="51" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 935" deviceid="MFG:EPSON;MDL:Stylus Photo 935;DES:EPSON Stylus Photo 935;CMD:ESCPL2,BDC,D4;" driver="escp2-935" manufacturer="Epson" model="36" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 950" driver="escp2-950" manufacturer="Epson" model="46" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 960" driver="escp2-960" manufacturer="Epson" model="46" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 1200" driver="escp2-1200" manufacturer="Epson" model="15" parameters="standard_params" /> - <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" /> - <printer translate="name" name="Epson Stylus Photo 1280" driver="escp2-1280" manufacturer="Epson" model="37" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 1290" driver="escp2-1290" manufacturer="Epson" model="37" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 1290s" driver="escp2-1290s" manufacturer="Epson" model="37" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 1400" deviceid="MFG:EPSON;MDL:Stylus Photo 1400;DES:EPSON Stylus Photo 1400;CMD:ESCPL2,BDC,D4,D4PX,ESCPR1;" driver="escp2-1400" manufacturer="Epson" model="82" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo 1410" driver="escp2-1410" manufacturer="Epson" model="82" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo 2000P" driver="escp2-2000" manufacturer="Epson" model="26" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 2100" driver="escp2-2100" manufacturer="Epson" model="47" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo 2200" driver="escp2-2200" manufacturer="Epson" model="47" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo P50" driver="escp2-p50" manufacturer="Epson" model="97" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo R200" deviceid="MFG:EPSON;MDL:Stylus Photo R200;DES:EPSON Stylus Photo R200;CMD:ESCPL2,BDC,D4;" driver="escp2-r200" manufacturer="Epson" model="63" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo R210" deviceid="MFG:EPSON;MDL:Stylus Photo R210;DES:EPSON Stylus Photo R210;CMD:ESCPL2,BDC,D4;" driver="escp2-r210" manufacturer="Epson" model="63" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo R220" deviceid="MFG:EPSON;MDL:Stylus Photo R220;DES:EPSON Stylus Photo R220;CMD:ESCPL2,BDC,D4;" driver="escp2-r220" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo R230" deviceid="MFG:EPSON;MDL:Stylus Photo R230;" driver="escp2-r230" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo R240" driver="escp2-r240" manufacturer="Epson" model="83" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo R245" driver="escp2-r245" manufacturer="Epson" model="83" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo R260" driver="escp2-r260" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo R265" driver="escp2-r265" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo R270" driver="escp2-r270" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo R280" driver="escp2-r280" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo R285" driver="escp2-r285" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo R290" driver="escp2-r290" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo R300" deviceid="MFG:EPSON;MDL:Stylus Photo R300;DES:EPSON Stylus Photo R300;" driver="escp2-r300" manufacturer="Epson" model="63" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo R310" deviceid="MFG:EPSON;MDL:Stylus Photo R310;DES:EPSON Stylus Photo R310;" driver="escp2-r310" manufacturer="Epson" model="63" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo R320" deviceid="MFG:EPSON;MDL:Stylus Photo R320;DES:EPSON Stylus Photo R320;" driver="escp2-r320" manufacturer="Epson" model="63" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo R340" deviceid="MFG:EPSON;MDL:Stylus Photo R340;DES:EPSON Stylus Photo R340;" driver="escp2-r340" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo R350" driver="escp2-r350" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo R360" driver="escp2-r360" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo R380" driver="escp2-r380" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo R390" driver="escp2-r390" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo R800" driver="escp2-r800" manufacturer="Epson" model="64" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo R1800" driver="escp2-r1800" manufacturer="Epson" model="67" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo R1900" driver="escp2-r1900" manufacturer="Epson" model="91" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo R2000" driver="escp2-r2000" manufacturer="Epson" model="91" parameters="standard_params" /> - <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" /> - <printer translate="name" name="Epson Stylus Photo R2880" driver="escp2-r2880" manufacturer="Epson" model="98" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo R3000" driver="escp2-r3000" manufacturer="Epson" model="115" parameters="standard_params" /> - <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" /> - <printer translate="name" name="Epson Stylus Photo RX420" deviceid="MFG:EPSON;MDL:Stylus Photo RX420;DES:EPSON Stylus Photo RX420;CMD:ESCPL2,BDC,D4;" driver="escp2-rx420" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo RX425" deviceid="MFG:EPSON;MDL:Stylus Photo RX425;DES:EPSON Stylus Photo RX425;CMD:ESCPL2,BDC,D4;" driver="escp2-rx425" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo RX430" deviceid="MFG:EPSON;MDL:Stylus Photo RX430;DES:EPSON Stylus Photo RX430;CMD:ESCPL2,BDC,D4;" driver="escp2-rx430" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo RX500" deviceid="MFG:EPSON;MDL:Stylus Photo RX500;DES:EPSON Stylus Photo RX500;CMD:ESCPL2,BDC,D4;" driver="escp2-rx500" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo RX510" deviceid="MFG:EPSON;MDL:Stylus Photo RX510;DES:EPSON Stylus Photo RX510;CMD:ESCPL2,BDC,D4;" driver="escp2-rx510" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo RX560" driver="escp2-rx560" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo RX580" driver="escp2-rx580" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo RX585" driver="escp2-rx585" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo RX590" driver="escp2-rx590" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo RX595" driver="escp2-rx595" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo RX600" driver="escp2-rx600" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo RX610" driver="escp2-rx610" manufacturer="Epson" model="81" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo RX620" deviceid="MFG:EPSON;MDL:Stylus Photo RX620;DES:EPSON Stylus Photo RX620;CMD:ESCPL2,BDC,D4;" driver="escp2-rx620" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo RX630" deviceid="MFG:EPSON;MDL:Stylus Photo RX630;DES:EPSON Stylus Photo RX630;CMD:ESCPL2,BDC,D4;" driver="escp2-rx630" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo RX640" driver="escp2-rx640" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo RX650" driver="escp2-rx650" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo RX680" driver="escp2-rx680" manufacturer="Epson" model="97" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo RX685" driver="escp2-rx685" manufacturer="Epson" model="97" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo RX690" driver="escp2-rx690" manufacturer="Epson" model="97" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo RX700" deviceid="MFG:EPSON;MDL:Stylus Photo RX700;DES:EPSON Stylus Photo RX700;CMD:ESCPL2,BDC,D4;" driver="escp2-rx700" manufacturer="Epson" model="70" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo TX700W" driver="escp2-tx700w" manufacturer="Epson" model="96" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo TX710W" driver="escp2-tx710w" manufacturer="Epson" model="96" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo TX800FW" driver="escp2-tx800w" manufacturer="Epson" model="96" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo TX810FW" driver="escp2-tx810fw" manufacturer="Epson" model="96" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Pro 3800" driver="escp2-3800" manufacturer="Epson" model="108" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 3880" driver="escp2-3880" manufacturer="Epson" model="107" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 3885" driver="escp2-3885" manufacturer="Epson" model="107" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 4000" driver="escp2-4000" manufacturer="Epson" model="114" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 4800/4880 Back Compatible" driver="escp2-4600" manufacturer="Epson" model="112" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 4800" driver="escp2-4800" manufacturer="Epson" model="106" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 4880" driver="escp2-4880" manufacturer="Epson" model="102" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 4900" driver="escp2-4900" manufacturer="Epson" model="131" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 5000" driver="escp2-5000" manufacturer="Epson" model="27" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 5500" driver="escp2-5500" manufacturer="Epson" model="40" parameters="pro_5500_params" /> - <printer translate="name" name="Epson Stylus Pro 7000" driver="escp2-7000" manufacturer="Epson" model="28" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 7500" driver="escp2-7500" manufacturer="Epson" model="29" parameters="pro_5500_params" /> - <printer translate="name" name="Epson Stylus Pro 7600" driver="escp2-7600" manufacturer="Epson" model="48" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 7700" driver="escp2-7700" manufacturer="Epson" model="109" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 7800" driver="escp2-7800" manufacturer="Epson" model="103" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 7880" driver="escp2-7880" manufacturer="Epson" model="89" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 7890" driver="escp2-7890" manufacturer="Epson" model="89" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 7900" driver="escp2-7900" manufacturer="Epson" model="116" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 9000" driver="escp2-9000" manufacturer="Epson" model="30" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 9500" driver="escp2-9500" manufacturer="Epson" model="31" parameters="pro_5500_params" /> - <printer translate="name" name="Epson Stylus Pro 9600" driver="escp2-9600" manufacturer="Epson" model="49" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 9700" driver="escp2-9700" manufacturer="Epson" model="110" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 9800" driver="escp2-9800" manufacturer="Epson" model="104" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 9880" driver="escp2-9880" manufacturer="Epson" model="90" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 9890" driver="escp2-9890" manufacturer="Epson" model="90" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 9900" driver="escp2-9900" manufacturer="Epson" model="117" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 10000" driver="escp2-10000" manufacturer="Epson" model="41" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 11800/11880 Back Compatible" driver="escp2-11600" manufacturer="Epson" model="113" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 11800" driver="escp2-11800" manufacturer="Epson" model="105" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Pro 11880" driver="escp2-11880" manufacturer="Epson" model="88" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Scan 2000" driver="escp2-scan2000" manufacturer="Epson" model="12" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Scan 2500" driver="escp2-scan2500" manufacturer="Epson" model="12" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus CX1500" deviceid="MFG:EPSON;MDL:Stylus CX1500;DES:EPSON Stylus CX1500;CMD:ESCPL2,BDC,D4;" driver="escp2-cx1500" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson Stylus CX3100" deviceid="MFG:EPSON;MDL:Stylus CX3100;DES:EPSON Stylus CX3100;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3100" manufacturer="Epson" model="52" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus CX3200" deviceid="MFG:EPSON;MDL:Stylus CX3200;DES:EPSON Stylus CX3200;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3200" manufacturer="Epson" model="52" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus CX3500" deviceid="MFG:EPSON;MDL:Stylus CX3500;DES:EPSON Stylus CX3500;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3500" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX3600" deviceid="MFG:EPSON;MDL:Stylus CX3600;DES:EPSON Stylus CX3600;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3600" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX3650" deviceid="MFG:EPSON;MDL:Stylus CX3650;DES:EPSON Stylus CX3650;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3650" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX3700" deviceid="MFG:EPSON;MDL:Stylus CX3700;DES:EPSON Stylus CX3700;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3700" manufacturer="Epson" model="72" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus CX3800" deviceid="MFG:EPSON;MDL:Stylus CX3800;DES:EPSON Stylus CX3800;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3800" manufacturer="Epson" model="72" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus CX3805" deviceid="MFG:EPSON;MDL:Stylus CX3805;DES:EPSON Stylus CX3805;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3805" manufacturer="Epson" model="72" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus CX3810" deviceid="MFG:EPSON;MDL:Stylus CX3810;DES:EPSON Stylus CX3810;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3810" manufacturer="Epson" model="72" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus CX3900" deviceid="MFG:EPSON;MDL:Stylus CX3900;DES:EPSON Stylus CX3900;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3900" manufacturer="Epson" model="72" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus CX4100" deviceid="MFG:EPSON;MDL:Stylus CX4100;DES:EPSON Stylus CX4100;CMD:ESCPL2,BDC,D4;" driver="escp2-cx4100" manufacturer="Epson" model="95" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX4200" deviceid="MFG:EPSON;MDL:Stylus CX4200;DES:EPSON Stylus CX4200;CMD:ESCPL2,BDC,D4;" driver="escp2-cx4200" manufacturer="Epson" model="95" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX4400" driver="escp2-cx4400" manufacturer="Epson" model="72" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus CX4500" deviceid="MFG:EPSON;MDL:Stylus CX4500;DES:EPSON Stylus CX4500;CMD:ESCPL2,BDC,D4;" driver="escp2-cx4500" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX4600" deviceid="MFG:EPSON;MDL:Stylus CX4600;DES:EPSON Stylus CX4600;CMD:ESCPL2,BDC,D4;" driver="escp2-cx4600" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX4700" deviceid="MFG:EPSON;MDL:Stylus CX4700;DES:EPSON Stylus CX4700;CMD:ESCPL2,BDC,D4;" driver="escp2-cx4700" manufacturer="Epson" model="95" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX4800" deviceid="MFG:EPSON;MDL:Stylus CX4800;DES:EPSON Stylus CX4800;CMD:ESCPL2,BDC,D4;" driver="escp2-cx4800" manufacturer="Epson" model="95" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX4900" driver="escp2-cx4900" manufacturer="Epson" model="95" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX5000" driver="escp2-cx5000" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX5000F" driver="escp2-cx5000f" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX5100" deviceid="MFG:EPSON;MDL:Stylus CX5100;DES:EPSON Stylus CX5100;CMD:ESCPL2,BDC,D4;" driver="escp2-cx5100" manufacturer="Epson" model="55" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX5200" driver="escp2-cx5200" manufacturer="Epson" model="55" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX5300" deviceid="MFG:EPSON;MDL:Stylus CX5300;DES:EPSON Stylus CX5300;CMD:ESCPL2,BDC,D4;" driver="escp2-cx5300" manufacturer="Epson" model="55" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX5400" deviceid="MFG:EPSON;MDL:Stylus CX5400;DES:EPSON Stylus CX5400;CMD:ESCPL2,BDC,D4;" driver="escp2-cx5400" manufacturer="Epson" model="55" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX5500" driver="escp2-cx5500" manufacturer="Epson" model="72" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus CX5600" driver="escp2-cx5600" manufacturer="Epson" model="72" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus CX5700" deviceid="MFG:EPSON;MDL:Stylus CX5700;DES:EPSON Stylus CX5700;CMD:ESCPL2,BDC,D4;" driver="escp2-cx5700" manufacturer="Epson" model="95" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX5800" deviceid="MFG:EPSON;MDL:Stylus CX5800;DES:EPSON Stylus CX5800;CMD:ESCPL2,BDC,D4;" driver="escp2-cx5800" manufacturer="Epson" model="95" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX6000" driver="escp2-cx6000" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX6300" deviceid="MFG:EPSON;MDL:Stylus CX6300;DES:EPSON Stylus CX6300;CMD:ESCPL2,BDC,D4;" driver="escp2-cx6300" manufacturer="Epson" model="79" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX6400" driver="escp2-cx6400" manufacturer="Epson" model="79" parameters="cx3500_params" /> - <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" /> - <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" /> - <printer translate="name" name="Epson Stylus CX7000F" driver="escp2-cx7000f" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX7300" driver="escp2-cx7300" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX7400" driver="escp2-cx7400" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <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" /> - <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" /> - <printer translate="name" name="Epson Stylus CX8300" deviceid="MFG:EPSON;MDL:Stylus CX8300;DES:EPSON Stylus CX8300;CMD:ESCPL2,BDC,D4;" driver="escp2-cx8300" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX8400" deviceid="MFG:EPSON;MDL:Stylus CX8400;DES:EPSON Stylus CX8400;CMD:ESCPL2,BDC,D4;" driver="escp2-cx8400" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX9300F" driver="escp2-cx9300f" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX9400" driver="escp2-cx9400" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX9400F" driver="escp2-cx9400f" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus CX9475F" driver="escp2-cx9475f" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <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" /> - <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" /> - <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" /> - <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" /> - <printer translate="name" name="Epson Stylus D120" driver="escp2-d120" manufacturer="Epson" model="85" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus DX3800" deviceid="MFG:EPSON;MDL:Stylus DX3800;DES:EPSON Stylus DX3800;CMD:ESCPL2,BDC,D4;" driver="escp2-dx3800" manufacturer="Epson" model="72" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus DX3850" deviceid="MFG:EPSON;MDL:Stylus DX3850;DES:EPSON Stylus DX3850;CMD:ESCPL2,BDC,D4;" driver="escp2-dx3850" manufacturer="Epson" model="72" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus DX4000" driver="escp2-dx4000" manufacturer="Epson" model="72" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus DX4050" driver="escp2-dx4050" manufacturer="Epson" model="72" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus DX4200" deviceid="MFG:EPSON;MDL:Stylus DX4200;DES:EPSON Stylus DX4200;CMD:ESCPL2,BDC,D4;" driver="escp2-dx4200" manufacturer="Epson" model="95" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus DX4250" deviceid="MFG:EPSON;MDL:Stylus DX4250;DES:EPSON Stylus DX4250;CMD:ESCPL2,BDC,D4;" driver="escp2-dx4250" manufacturer="Epson" model="95" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus DX4400" driver="escp2-dx4400" manufacturer="Epson" model="72" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus DX4450" driver="escp2-dx4450" manufacturer="Epson" model="72" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus DX4800" deviceid="MFG:EPSON;MDL:Stylus DX4800;DES:EPSON Stylus DX4800;CMD:ESCPL2,BDC,D4;" driver="escp2-dx4800" manufacturer="Epson" model="95" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus DX4850" driver="escp2-dx4850" manufacturer="Epson" model="95" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus DX7000F" driver="escp2-dx7000f" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus DX7400" driver="escp2-dx7400" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus DX7450" driver="escp2-dx7450" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus DX8400" driver="escp2-dx8400" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus DX8450" driver="escp2-dx8450" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus DX9400F" driver="escp2-dx9400f" manufacturer="Epson" model="65" parameters="cx3500_params" /> - <printer translate="name" name="Epson Stylus NX100" driver="escp2-nx100" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus NX105" driver="escp2-nx105" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus NX115" driver="escp2-nx115" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus NX200" driver="escp2-nx200" manufacturer="Epson" model="93" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus NX215" driver="escp2-nx215" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus NX300" driver="escp2-nx300" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus NX400" driver="escp2-nx400" manufacturer="Epson" model="93" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus NX415" driver="escp2-nx415" manufacturer="Epson" model="93" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus NX420" driver="escp2-nx420" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus NX515" driver="escp2-nx515" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus NX530" driver="escp2-nx530" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus NX625" driver="escp2-nx625" manufacturer="Epson" model="118" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus NX630" driver="escp2-nx630" manufacturer="Epson" model="118" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus NX635" driver="escp2-nx635" manufacturer="Epson" model="118" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus NX645" driver="escp2-nx645" manufacturer="Epson" model="118" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo PX650" driver="escp2-px650" manufacturer="Epson" model="97" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus Photo PX700W" driver="escp2-px700fw" manufacturer="Epson" model="96" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo PX710W" driver="escp2-px710fw" manufacturer="Epson" model="96" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo PX800FW" driver="escp2-px800fw" manufacturer="Epson" model="96" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus Photo PX810FW" driver="escp2-px810fw" manufacturer="Epson" model="96" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus S20" driver="escp2-s20" manufacturer="Epson" model="101" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus S21" driver="escp2-s21" manufacturer="Epson" model="101" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus S50" driver="escp2-s50" manufacturer="Epson" model="97" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX100" driver="escp2-sx100" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX105" driver="escp2-sx105" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX110" driver="escp2-sx110" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX115" driver="escp2-sx115" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX200" driver="escp2-sx200" manufacturer="Epson" model="93" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX205" driver="escp2-sx205" manufacturer="Epson" model="93" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX210" driver="escp2-sx210" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX215" driver="escp2-sx215" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX400" driver="escp2-sx400" manufacturer="Epson" model="93" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX405" driver="escp2-sx405" manufacturer="Epson" model="93" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX410" driver="escp2-sx410" manufacturer="Epson" model="93" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX415" driver="escp2-sx415" manufacturer="Epson" model="93" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX420" driver="escp2-sx420" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX445W" driver="escp2-sx445w" manufacturer="Epson" model="121" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX510W" driver="escp2-sx510w" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX515" driver="escp2-sx515" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX525" driver="escp2-sx525" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX535FW" driver="escp2-sx535FW" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX600FW" driver="escp2-sx600fw" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX610FW" driver="escp2-sx610fw" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX615" driver="escp2-sx615" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX630" driver="escp2-sx630" manufacturer="Epson" model="118" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX635" driver="escp2-sx635" manufacturer="Epson" model="118" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX645" driver="escp2-sx645" manufacturer="Epson" model="118" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus SX650" driver="escp2-sx650" manufacturer="Epson" model="97" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus T13" driver="escp2-t13" manufacturer="Epson" model="101" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus T20" driver="escp2-t20" manufacturer="Epson" model="101" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus T21" driver="escp2-t21" manufacturer="Epson" model="101" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus T22" driver="escp2-t22" manufacturer="Epson" model="101" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus T22E" driver="escp2-t22e" manufacturer="Epson" model="101" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus T26" driver="escp2-t26" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus T30" driver="escp2-t30" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus T40W" driver="escp2-t40w" manufacturer="Epson" model="85" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus T42WD" driver="escp2-t42wd" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus T50" driver="escp2-t50" manufacturer="Epson" model="97" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus T59" driver="escp2-t59" manufacturer="Epson" model="97" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus T60" driver="escp2-t60" manufacturer="Epson" model="97" parameters="claria_params" /> - <printer translate="name" name="Epson Stylus TX100" driver="escp2-tx100" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX101" driver="escp2-tx101" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX102" driver="escp2-tx102" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX103" driver="escp2-tx103" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX104" driver="escp2-tx104" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX105" driver="escp2-tx105" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX106" driver="escp2-tx106" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX109" driver="escp2-tx109" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX110" driver="escp2-tx110" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX125" driver="escp2-tx125" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX200" driver="escp2-tx200" manufacturer="Epson" model="93" parameters="standard_params" /> -<!-- 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" /> - <printer translate="name" name="Epson Stylus TX300F" driver="escp2-tx300f" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX400" driver="escp2-tx400" manufacturer="Epson" model="93" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX410" driver="escp2-tx410" manufacturer="Epson" model="93" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX420" driver="escp2-tx420" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX510FN" driver="escp2-tx510fn" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX550W" driver="escp2-tx550w" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX560WD" driver="escp2-tx560wd" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX610FW" driver="escp2-tx610fw" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX615" driver="escp2-tx615" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX630" driver="escp2-tx630" manufacturer="Epson" model="118" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX635" driver="escp2-tx635" manufacturer="Epson" model="118" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX645" driver="escp2-tx645" manufacturer="Epson" model="118" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX650" driver="escp2-tx650" manufacturer="Epson" model="97" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus TX659" driver="escp2-tx659" manufacturer="Epson" model="97" parameters="standard_params" /> - <printer translate="name" name="Epson Stylus XP100" driver="escp2-xp100" manufacturer="Epson" model="123" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson SureColor P400" driver="escp2-p400" manufacturer="Epson" model="91" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson SureColor P600" driver="escp2-p600" manufacturer="Epson" model="115" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson SureColor P800" driver="escp2-p800" manufacturer="Epson" model="130" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson SureColor P6000" driver="escp2-p6000" manufacturer="Epson" model="89" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson SureColor P7000" driver="escp2-p7000" manufacturer="Epson" model="124" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson SureColor P7000 Commercial Edition" driver="escp2-p7000c" manufacturer="Epson" model="126" parameters="standard_params">EXPERIMENTAL; violet ink not supported</printer> - <printer translate="name" name="Epson SureColor P8000" driver="escp2-p8000" manufacturer="Epson" model="90" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson SureColor P9000" driver="escp2-p9000" manufacturer="Epson" model="125" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson SureColor P9000 Commercial Edition" driver="escp2-p9000c" manufacturer="Epson" model="127" parameters="standard_params">EXPERIMENTAL; violet ink not supported</printer> - <printer translate="name" name="Epson SureColor P10000" driver="escp2-p10000" manufacturer="Epson" model="90" parameters="standard_params">EXPERIMENTAL; only three levels of gray supported</printer> - <printer translate="name" name="Epson SureColor P20000" driver="escp2-p20000" manufacturer="Epson" model="88" parameters="standard_params">EXPERIMENTAL; only three levels of gray supported</printer> - <printer translate="name" name="Epson PictureMate" driver="escp2-picmate" manufacturer="Epson" model="73" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate Dash" driver="escp2-picmatedash" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate Deluxe" driver="escp2-picmated" manufacturer="Epson" model="73" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate Flash" driver="escp2-picmateflash" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate Pal" driver="escp2-picmatepal" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate Snap" driver="escp2-picmatesnap" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate 100" driver="escp2-picmate100" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate 200" driver="escp2-picmate200" manufacturer="Epson" model="73" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate 210" driver="escp2-picmate210" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate 215" driver="escp2-picmate215" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate 240" driver="escp2-picmate240" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate 250" driver="escp2-picmate250" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate 260" driver="escp2-picmate260" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate 270" driver="escp2-picmate270" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate 280" driver="escp2-picmate280" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate 290" driver="escp2-picmate290" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate 500" driver="escp2-picmate500" manufacturer="Epson" model="73" parameters="standard_params" /> - <printer translate="name" name="Epson PictureMate 2005" driver="escp2-picmate2005" manufacturer="Epson" model="73" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 30" driver="escp2-wf30" manufacturer="Epson" model="85" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 40" driver="escp2-wf40" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 60" driver="escp2-wf60" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 310" driver="escp2-wf310" manufacturer="Epson" model="85" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 315" driver="escp2-wf315" manufacturer="Epson" model="85" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 500" driver="escp2-wf500" manufacturer="Epson" model="93" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 545" driver="escp2-wf545" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 600" driver="escp2-wf600" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 610" driver="escp2-wf610" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 615" driver="escp2-wf615" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 625" driver="escp2-wf625" manufacturer="Epson" model="118" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 630" driver="escp2-wf630" manufacturer="Epson" model="118" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 633" driver="escp2-wf633" manufacturer="Epson" model="118" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 635" driver="escp2-wf636" manufacturer="Epson" model="118" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 645" driver="escp2-wf645" manufacturer="Epson" model="118" parameters="standard_params" /> - <printer translate="name" name="Epson WorkForce 1100" driver="escp2-wf1100" manufacturer="Epson" model="99" parameters="standard_params" /> - <printer translate="name" name="Epson WF-7010 Series" driver="escp2-wf7010" manufacturer="Epson" model="119" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson WF-7011 Series" driver="escp2-wf7011" manufacturer="Epson" model="119" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson WF-7015 Series" driver="escp2-wf7015" manufacturer="Epson" model="119" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson WF-7018 Series" driver="escp2-wf7018" manufacturer="Epson" model="119" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson WF-7510 Series" driver="escp2-wf7510" manufacturer="Epson" model="119" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson WF-7511 Series" driver="escp2-wf7511" manufacturer="Epson" model="119" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson WF-7515 Series" driver="escp2-wf7515" manufacturer="Epson" model="119" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson WF-7520 Series" driver="escp2-wf7520" manufacturer="Epson" model="120" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson WF-7521 Series" driver="escp2-wf7521" manufacturer="Epson" model="120" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson WF-7525 Series" driver="escp2-wf7525" manufacturer="Epson" model="120" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson CL 700" driver="escp2-cl700" manufacturer="Epson" model="38" parameters="480_params" /> - <printer translate="name" name="Epson CL 750" driver="escp2-cl750" manufacturer="Epson" model="43" parameters="480_params" /> - <printer translate="name" name="Epson CL 760" driver="escp2-cl760" manufacturer="Epson" model="56" parameters="480_params" /> - <printer translate="name" name="Epson E 100" driver="escp2-e100" manufacturer="Epson" model="73" parameters="standard_params" /> - <printer translate="name" name="Epson E 150" driver="escp2-e150" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson E 200" driver="escp2-e200" manufacturer="Epson" model="73" parameters="standard_params" /> - <printer translate="name" name="Epson E 300" driver="escp2-e300" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson E 500" driver="escp2-e500" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson E 520" driver="escp2-e520" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson E 700" driver="escp2-e700" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson E 720" driver="escp2-e720" manufacturer="Epson" model="86" parameters="standard_params" /> - <printer translate="name" name="Epson EM 900C" driver="escp2-em900c" manufacturer="Epson" model="13" parameters="standard_params" /> - <printer translate="name" name="Epson EM 930C" driver="escp2-em930c" manufacturer="Epson" model="34" parameters="standard_params" /> - <printer translate="name" name="Epson EP 302" driver="escp2-ep302" manufacturer="Epson" model="96" parameters="standard_params" /> - <printer translate="name" name="Epson EP 702A" driver="escp2-ep702a" manufacturer="Epson" model="96" parameters="standard_params" /> - <printer translate="name" name="Epson EP 801A" driver="escp2-ep801a" manufacturer="Epson" model="96" parameters="standard_params" /> - <printer translate="name" name="Epson EP 901A" driver="escp2-ep901a" manufacturer="Epson" model="96" parameters="standard_params" /> - <printer translate="name" name="Epson EP 901F" driver="escp2-ep901f" manufacturer="Epson" model="96" parameters="standard_params" /> - <printer translate="name" name="Epson MC 2000" driver="escp2-mc2000" manufacturer="Epson" model="26" parameters="standard_params" /> - <printer translate="name" name="Epson MC 5000" driver="escp2-mc5000" manufacturer="Epson" model="40" parameters="pro_5500_params" /> - <printer translate="name" name="Epson MC 7000" driver="escp2-mc7000" manufacturer="Epson" model="29" parameters="pro_5500_params" /> - <printer translate="name" name="Epson MC 9000" driver="escp2-mc9000" manufacturer="Epson" model="31" parameters="pro_5500_params" /> - <printer translate="name" name="Epson MC 10000" driver="escp2-mc10000" manufacturer="Epson" model="41" parameters="standard_params" /> - <printer translate="name" name="Epson ME 300" driver="escp2-me300" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson ME 320" driver="escp2-me320" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson ME Office 70" driver="escp2-meof70" manufacturer="Epson" model="85" parameters="standard_params" /> - <printer translate="name" name="Epson ME Office 80W" driver="escp2-meof80w" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson ME Office 82WD" driver="escp2-meof82wd" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson ME Office 85ND" driver="escp2-meof85nd" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson ME Office 360" driver="escp2-meof360" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson ME Office 600F" driver="escp2-meof600f" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson ME Office 620F" driver="escp2-meof620f" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson ME Office 700FW" driver="escp2-meof700fw" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson ME Office 900WD" driver="escp2-meof900wd" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson ME Office 940FW" driver="escp2-meof940fw" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson ME Office 960FWD" driver="escp2-meof960fwd" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson ME Office 1100" driver="escp2-meof1100" manufacturer="Epson" model="99" parameters="standard_params" /> - <printer translate="name" name="Epson MJ 930C" driver="escp2-mj930c" manufacturer="Epson" model="4" parameters="standard_params" /> - <printer translate="name" name="Epson MJ 5100C" driver="escp2-mj5100c" manufacturer="Epson" model="39" parameters="standard_params" /> - <printer translate="name" name="Epson MJ 6000C" driver="escp2-mj6000c" manufacturer="Epson" model="6" parameters="standard_params" /> - <printer translate="name" name="Epson MJ 8000C" driver="escp2-mj8000c" manufacturer="Epson" model="24" parameters="standard_params" /> - <printer translate="name" name="Epson PM 670C" driver="escp2-pm670c" manufacturer="Epson" model="7" parameters="standard_params" /> - <printer translate="name" name="Epson PM 700C" driver="escp2-pm700c" manufacturer="Epson" model="9" parameters="standard_params" /> - <printer translate="name" name="Epson PM 730C" driver="escp2-pm730c" manufacturer="Epson" model="35" parameters="standard_params" /> - <printer translate="name" name="Epson PM 740C" driver="escp2-pm740c" manufacturer="Epson" model="35" parameters="standard_params" /> - <printer translate="name" name="Epson PM 750C" driver="escp2-pm750c" manufacturer="Epson" model="7" parameters="standard_params" /> - <printer translate="name" name="Epson PM 760C" driver="escp2-pm760c" manufacturer="Epson" model="20" parameters="standard_params" /> - <printer translate="name" name="Epson PM 770C" driver="escp2-pm770c" manufacturer="Epson" model="14" parameters="standard_params" /> - <printer translate="name" name="Epson PM 780C" driver="escp2-pm780c" manufacturer="Epson" model="35" parameters="standard_params" /> - <printer translate="name" name="Epson PM 790PT" driver="escp2-pm790pt" manufacturer="Epson" model="36" parameters="standard_params" /> - <printer translate="name" name="Epson PM 800C" driver="escp2-pm800c" manufacturer="Epson" model="22" parameters="standard_params" /> - <printer translate="name" name="Epson PM 850PT" driver="escp2-pm850pt" manufacturer="Epson" model="51" parameters="standard_params" /> - <printer translate="name" name="Epson PM 870C" driver="escp2-pm870c" manufacturer="Epson" model="36" parameters="standard_params" /> - <printer translate="name" name="Epson PM 880C" driver="escp2-pm880c" manufacturer="Epson" model="36" parameters="standard_params" /> - <printer translate="name" name="Epson PM 930C" driver="escp2-pm930c" manufacturer="Epson" model="58" parameters="standard_params" /> - <printer translate="name" name="Epson PM 940C" driver="escp2-pm940c" manufacturer="Epson" model="58" parameters="standard_params" /> - <printer translate="name" name="Epson PM 950C" driver="escp2-pm950c" manufacturer="Epson" model="53" parameters="standard_params" /> - <printer translate="name" name="Epson PM 970C" driver="escp2-pm970c" manufacturer="Epson" model="57" parameters="standard_params" /> - <printer translate="name" name="Epson PM 980C" driver="escp2-pm980c" manufacturer="Epson" model="57" parameters="standard_params" /> - <printer translate="name" name="Epson PM 2000C" driver="escp2-pm2000c" manufacturer="Epson" model="8" parameters="standard_params" /> - <printer translate="name" name="Epson PM 2200C" driver="escp2-pm2200c" manufacturer="Epson" model="54" parameters="standard_params" /> - <printer translate="name" name="Epson PM 3000C" driver="escp2-pm3000c" manufacturer="Epson" model="15" parameters="standard_params" /> - <printer translate="name" name="Epson PM 3300C" driver="escp2-pm3300c" manufacturer="Epson" model="23" parameters="standard_params" /> - <printer translate="name" name="Epson PM 3500C" driver="escp2-pm3500c" manufacturer="Epson" model="37" parameters="standard_params" /> - <printer translate="name" name="Epson PM 3700C" driver="escp2-pm3700c" manufacturer="Epson" model="37" parameters="standard_params" /> - <printer translate="name" name="Epson PM 4000PX" driver="escp2-pm4000px" manufacturer="Epson" model="47" parameters="standard_params" /> - <printer translate="name" name="Epson PM 5000C" driver="escp2-pm5000c" manufacturer="Epson" model="27" parameters="standard_params" /> - <printer translate="name" name="Epson PM 7000C" driver="escp2-pm7000c" manufacturer="Epson" model="28" parameters="standard_params" /> - <printer translate="name" name="Epson PM 9000C" driver="escp2-pm9000c" manufacturer="Epson" model="30" parameters="standard_params" /> - <printer translate="name" name="Epson PM 10000" driver="escp2-pm10000" manufacturer="Epson" model="41" parameters="standard_params" /> - <printer translate="name" name="Epson PM A650" driver="escp2-pma650" manufacturer="Epson" model="74" parameters="standard_params" /> - <printer translate="name" name="Epson PM A750" driver="escp2-pma750" manufacturer="Epson" model="75" parameters="standard_params" /> - <printer translate="name" name="Epson PM A820" driver="escp2-pma820" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson PM A890" driver="escp2-pma890" manufacturer="Epson" model="76" parameters="standard_params" /> - <printer translate="name" name="Epson PM A900" driver="escp2-pma900" manufacturer="Epson" model="70" parameters="standard_params" /> - <printer translate="name" name="Epson PM A940" driver="escp2-pma940" manufacturer="Epson" model="97" parameters="standard_params" /> - <printer translate="name" name="Epson PM A950" driver="escp2-pma950" manufacturer="Epson" model="70" parameters="standard_params" /> - <printer translate="name" name="Epson PM D600" driver="escp2-pmd600" manufacturer="Epson" model="77" parameters="standard_params" /> - <printer translate="name" name="Epson PM D750" driver="escp2-pmd750" manufacturer="Epson" model="63" parameters="standard_params" /> - <printer translate="name" name="Epson PM D770" driver="escp2-pmd770" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson PM D800" driver="escp2-pmd800" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson PM D870" driver="escp2-pmd870" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson PM D1000" driver="escp2-pmd1000" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson PM G700" driver="escp2-pmg700" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson PM G720" driver="escp2-pmg720" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson PM G730" driver="escp2-pmg730" manufacturer="Epson" model="84" parameters="standard_params" /> - <printer translate="name" name="Epson PM G800" driver="escp2-pmg800" manufacturer="Epson" model="68" parameters="standard_params" /> - <printer translate="name" name="Epson PM G820" driver="escp2-pmg820" manufacturer="Epson" model="68" parameters="standard_params" /> - <printer translate="name" name="Epson PM G850" driver="escp2-pmg850" manufacturer="Epson" model="81" parameters="claria_params" /> - <printer translate="name" name="Epson PM T960" driver="escp2-pmt960" manufacturer="Epson" model="97" parameters="standard_params" /> - <printer translate="name" name="Epson PM G4500" driver="escp2-pmg4500" manufacturer="Epson" model="82" parameters="standard_params" /> - <printer translate="name" name="Epson PX A650" driver="escp2-pxa650" manufacturer="Epson" model="95" parameters="cx3500_params" /> - <printer translate="name" name="Epson Offirio PX B300" driver="escp2-pxb300" manufacturer="Epson" model="87" parameters="standard_params" /> - <printer translate="name" name="Epson Offirio PX B500" driver="escp2-pxb500" manufacturer="Epson" model="87" parameters="standard_params" /> - <printer translate="name" name="Epson PX 7V" driver="escp2-px7v" manufacturer="Epson" model="91" parameters="standard_params" /> - <printer translate="name" name="Epson PX 101" driver="escp2-px101" manufacturer="Epson" model="85" parameters="standard_params" /> - <printer translate="name" name="Epson PX 201" driver="escp2-px201" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson PX 203" driver="escp2-px203" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson PX 204" driver="escp2-px204" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson PX 401A" driver="escp2-px401a" manufacturer="Epson" model="94" parameters="standard_params" /> - <printer translate="name" name="Epson PX 503A" driver="escp2-px503a" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson PX 504A" driver="escp2-px504a" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson PX 601F" driver="escp2-px601f" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson PX 603F" driver="escp2-px603f" manufacturer="Epson" model="92" parameters="standard_params" /> - <printer translate="name" name="Epson PX 1001" driver="escp2-px1001" manufacturer="Epson" model="100" parameters="standard_params" /> - <printer translate="name" name="Epson PX 1200" driver="escp2-px1200" manufacturer="Epson" model="120" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson PX 1600F" driver="escp2-px1600f" manufacturer="Epson" model="120" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson PX 1700F" driver="escp2-px1700f" manufacturer="Epson" model="120" parameters="standard_params">EXPERIMENTAL</printer> - <printer translate="name" name="Epson PX G900" driver="escp2-pxg900" manufacturer="Epson" model="64" parameters="standard_params" /> - <printer translate="name" name="Epson PX G920" driver="escp2-pxg920" manufacturer="Epson" model="64" parameters="standard_params" /> - <printer translate="name" name="Epson PX G5000" driver="escp2-pxg5000" manufacturer="Epson" model="67" parameters="standard_params" /> - <printer translate="name" name="Epson PX G5300" driver="escp2-pxg5300" manufacturer="Epson" model="91" parameters="standard_params" /> - <printer translate="name" name="Epson PX V500" driver="escp2-pxv500" manufacturer="Epson" model="61" parameters="standard_params" /> - <printer translate="name" name="Epson PX V600" driver="escp2-pxv600" manufacturer="Epson" model="69" parameters="standard_params" /> - <printer translate="name" name="Epson PX V630" driver="escp2-pxv630" manufacturer="Epson" model="69" parameters="standard_params" /> - <printer translate="name" name="Epson PX V780" driver="escp2-pxv780" manufacturer="Epson" model="85" parameters="standard_params" /> - <printer translate="name" name="Epson PX 5500" driver="escp2-px5500" manufacturer="Epson" model="71" parameters="standard_params" /> - <printer translate="name" name="Epson PX G5600" driver="escp2-pxg5600" manufacturer="Epson" model="98" parameters="standard_params" /> - <printer translate="name" name="Epson PX 7000" driver="escp2-px7000" manufacturer="Epson" model="48" parameters="standard_params" /> - <printer translate="name" name="Epson PX 9000" driver="escp2-px9000" manufacturer="Epson" model="49" parameters="standard_params" /> - <printer translate="name" name="Epson XP-820" driver="escp2-xp820" manufacturer="Epson" model="91" parameters="standard_params" /> - </family> - <family name="pcl"> - <parameters name="pcl_inkjet_params"> - <parameter type="float" name="Gamma">0.818</parameter> - <parameter type="float" name="Density">0.786</parameter> - </parameters> - <parameters name="pcl_laser_params"> - <parameter type="float" name="Gamma">1.000</parameter> - <parameter type="float" name="Density">1.000</parameter> - </parameters> - <printer translate="name" name="Apollo P-2100" driver="pcl-apollo-p2100" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="Apollo P-2150" driver="pcl-apollo-p2150" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="Apollo P-2200" driver="pcl-apollo-p2200" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="Apollo P-2250" driver="pcl-apollo-p2250" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="Apollo P-2500" driver="pcl-apollo-p2500" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="Apollo P-2550" driver="pcl-apollo-p2550" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="Apollo P-2600" driver="pcl-apollo-p2600" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="Apollo P-2650" driver="pcl-apollo-p2650" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="Apple Color StyleWriter 4100" driver="pcl-apple-4100" manufacturer="Apple" model="601" parameters="pcl_inkjet_params" /> <!-- Uses 600 series driver --> - <printer translate="name" name="Apple Color StyleWriter 4500" driver="pcl-apple-4500" manufacturer="Apple" model="690" parameters="pcl_inkjet_params" /> <!-- Uses 690 driver --> - <printer translate="name" name="Apple Color StyleWriter 6500" driver="pcl-apple-6500" manufacturer="Apple" model="800" parameters="pcl_inkjet_params" /> <!-- Uses 850 driver --> - <printer translate="name" name="Apple LaserWriter Select 360" driver="pcl-apple-lw360" manufacturer="Apple" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother DCP-1200" driver="brother-dcp-1200" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother DCP-8045D" driver="brother-dcp-8045d" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1040" driver="brother-hl-1040" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1050" deviceid="MFG:Brother;MDL:HL-1050 series;CMD:PCL5,PJL,PCLXL;" driver="brother-hl-1050" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1060" driver="brother-hl-1060" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1070" deviceid="MFG:Brother;MDL:HL-1070 series;CMD:PCL5,POSTSCRIPT2,PJL,PCLXL;" driver="brother-hl-1070" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-10V" driver="brother-hl-10v" manufacturer="Brother" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-10h" driver="brother-hl-10h" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1240" deviceid="MFG:Brother;MDL:HL-1240 series;CMD:PCL4,PJL;" driver="brother-hl-1240" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1250" deviceid="MFG:Brother;MDL:HL-1250 series;CMD:PCL5,PJL,PCLXL;" driver="brother-hl-1250" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1260" deviceid="MFG:Brother;MDL:HL-1250 series;CMD:PCL5,PJL,PCLXL;" driver="brother-hl-1260" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1270N" driver="brother-hl-1270n" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1440" deviceid="MFG:Brother;MDL:HL-1440 series;CMD:PCL4,PJL;" driver="brother-hl-1440" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1450" deviceid="MFG:Brother;MDL:Brother HL-1450 series;" driver="brother-hl-1450" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1470N" deviceid="MFG:Brother;MDL:Brother HL-1470N series;" driver="brother-hl-1470n" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1650" driver="brother-hl-1650" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1660e" driver="brother-hl-1660e" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1670N" driver="brother-hl-1670n" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1850" driver="brother-hl-1850" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-1870N" driver="brother-hl-1870n" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-2060" driver="brother-hl-2060" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-2250DN" driver="brother-hl-2250dn" manufacturer="Brother" model="62" parameters="pcl_laser_params" /> - <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" /> - <printer translate="name" name="Brother HL-2460N" driver="brother-hl-2460n" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-4Ve" driver="brother-hl-4ve" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-5030" driver="brother-hl-5030" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-5040" deviceid="MFG:Brother;MDL:HL-5040 series;CMD:PJL,PCL,PCLXL;" driver="brother-hl-5040" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-5050" deviceid="MFG:Brother;MDL:Brother HL-5050 series;" driver="brother-hl-5050" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-5070N" deviceid="MFG:Brother;MDL:Brother HL-5070N series;" driver="brother-hl-5070n" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-5140" deviceid="MFG:Brother;MDL:HL-5140 series;CMD:PJL,PCL,PCLXL;" driver="brother-hl-5140" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-5150D" deviceid="MFG:Brother;MDL:Brother HL-5150D series;CMD:PJL,PCL,PCLXL,POSTSCRIPT;" driver="brother-hl-5150d" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-5170DN" deviceid="MFG:Brother;MDL:Brother HL-5170DN series;CMD:PJL,PCL,PCLXL,POSTSCRIPT;" driver="brother-hl-5170dn" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-630" driver="brother-hl-630" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-660" driver="brother-hl-660" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-7050" deviceid="MFG:Brother;MDL:Brother HL-7050 series;" driver="brother-hl-7050" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-7050N" driver="brother-hl-7050n" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-760" driver="brother-hl-760" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother HL-960" driver="brother-hl-960" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother MFC-6550MC" driver="brother-mfc-6550mc" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother MFC-8300" driver="brother-mfc-8300" manufacturer="Brother" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother MFC-9500" driver="brother-mfc-9500" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Brother MFC-9600" driver="brother-mfc-9600" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Canon GP 335" driver="canon-gp_335" manufacturer="Canon" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Canon LBP-4sx" driver="canon-lbp-4sx" manufacturer="Canon" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="Canon LBP-430" driver="canon-lbp-430" manufacturer="Canon" model="4" parameters="pcl_laser_params" /> - <printer translate="name" name="Canon LBP-1000" deviceid="MFG:Canon;MDL:LBP-1000;DES:LBP-1000;CMD:PCL-XL;" driver="canon-lbp-1000" manufacturer="Canon" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Canon LBP-1260" driver="canon-lbp-1260" manufacturer="Canon" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Canon LBP-1760" driver="canon-lbp-1760" manufacturer="Canon" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Canon LBP-3360" driver="canon-lbp-3360" manufacturer="Canon" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Canon imageRunner 330s" driver="canon-ir_330s" manufacturer="Canon" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Citizen ProJet II" driver="citizen-projet_ii" manufacturer="Citizen" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Datamax-ONeil p1115" deviceid="MFG:DatamaxOneil_;MDL:p1115;" color="false" driver="datamax_oneil_p1115" manufacturer="DatamaxONeil" model="10010" parameters="pcl_laser_params" /> - <printer translate="name" name="Datamax-ONeil p1115s" deviceid="MFG:DatamaxOneil_;MDL:p1115s;" color="false" driver="datamax_oneil_p1115s" manufacturer="DatamaxONeil" model="10011" parameters="pcl_laser_params" /> - <printer translate="name" name="Datamax-ONeil p1120n" deviceid="MFG:DatamaxOneil_;MDL:p1120n;" color="false" driver="datamax_oneil_p1120n" manufacturer="DatamaxONeil" model="10012" parameters="pcl_laser_params" /> - <printer translate="name" name="Datamax-ONeil p1125" deviceid="MFG:DatamaxOneil_;MDL:p1125;" color="false" driver="datamax_oneil_p1125" manufacturer="DatamaxONeil" model="10013" parameters="pcl_laser_params" /> - <printer translate="name" name="Datamax-ONeil p1725" deviceid="MFG:DatamaxOneil_;MDL:p1725;" color="false" driver="datamax_oneil_p1725" manufacturer="DatamaxONeil" model="10014" parameters="pcl_laser_params" /> - <printer translate="name" name="Datamax-ONeil w1110" deviceid="MFG:DatamaxOneil_;MDL:w1110;" color="false" driver="datamax_oneil_w1110" manufacturer="DatamaxONeil" model="10015" parameters="pcl_laser_params" /> - <printer translate="name" name="Datamax-ONeil H8308p" deviceid="MFG:DatamaxOneil_;MDL:H8308p;" color="false" driver="datamax_oneil_H8308p" manufacturer="DatamaxONeil" model="10016" parameters="pcl_laser_params" /> - <printer translate="name" name="DEC 1800" driver="dec-1800" manufacturer="DEC" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="DEC LN17" driver="dec-ln17" manufacturer="DEC" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson ActionLaser 1100" driver="epson-actl_1100" manufacturer="Epson" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson ActionLaser II" driver="epson-actl_ii" manufacturer="Epson" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson AL-C2000" driver="epson-acl_c2000" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson AL-C2000 PS3" deviceid="MFG:Epson;MDL:AL-C2000 PS3;" driver="epson-acl_c2000ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson AL-C8500" driver="epson-acl_c8500" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson AL-C8500PS" driver="epson-acl_c8500ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson AL-C8600" driver="epson-acl_c8600" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson AL-C8600 PS3" deviceid="MFG:Epson;MDL:AL-C8600 PS3;" driver="epson-acl_c8600ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-5200" driver="epson-epl-5200" manufacturer="Epson" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-5200+" driver="epson-epl-5200plus" manufacturer="Epson" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-5700" deviceid="MFG:EPSON;MDL:EPL-5700;DES:EPSON EPL-5700;CMD:PJL,EJL,ESCPL2-00,ESCP9-84,PRPXL24-01,HP ENHANCED PCL5,HPGL2-01,;" driver="epson-epl-5700" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-5700PS" driver="epson-epl-5700ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-5800" driver="epson-epl-5800" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-5800PS" driver="epson-epl-5800ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-5900" driver="epson-epl-5900" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-5900 PS3" deviceid="MFG:Epson;MDL:EPL-5900 PS3;" driver="epson-epl-5900ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-6100" driver="epson-epl-6100" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-6100 PS3" deviceid="MFG:Epson;MDL:EPL-6100 PS3;" driver="epson-epl-6100ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-7100" driver="epson-epl-7100" manufacturer="Epson" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-N2050" driver="epson-epl-n2050" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-N2050+" driver="epson-epl-n2050plus" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-N2050PS" driver="epson-epl-n2050ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-N2050PS+" driver="epson-epl-n2050psplus" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-N2120" driver="epson-epl-n2120" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-N2500" driver="epson-epl-n2500" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-N2500 PS3" deviceid="MFG:Epson;MDL:EPL-N2500 PS3;" driver="epson-epl-n2500ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-N2750" driver="epson-epl-n2750" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Epson EPL-N2750PS" driver="epson-epl-n2750ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Fujitsu PrintPartner 10V" driver="fujitsu-pp_10v" manufacturer="Fujitsu" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Fujitsu PrintPartner 16DV" driver="fujitsu-pp_16dv" manufacturer="Fujitsu" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Fujitsu PrintPartner 20W" driver="fujitsu-pp_20w" manufacturer="Fujitsu" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Fujitsu PrintPartner 8000" driver="fujitsu-pp_8000" manufacturer="Fujitsu" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="Generic PCL 4 Printer" driver="pcl-g_4" manufacturer="Generic" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Generic PCL 4 Printer wide margin" driver="pcl-g_4_a4" manufacturer="Generic" model="22" parameters="pcl_laser_params" /> - <printer translate="name" name="Generic PCL 4 LF Printer" driver="pcl-g_4_l" manufacturer="Generic" model="23" parameters="pcl_laser_params" /> - <printer translate="name" name="Generic PCL 5 Printer" driver="pcl-g_5" manufacturer="Generic" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="Generic PCL 5 Printer wide margin" driver="pcl-g_5_a4" manufacturer="Generic" model="32" parameters="pcl_laser_params" /> - <printer translate="name" name="Generic PCL 5 LF Printer" driver="pcl-g_5_l" manufacturer="Generic" model="33" parameters="pcl_laser_params" /> - <printer translate="name" name="Generic PCL 5c Printer" driver="pcl-g_5c" manufacturer="Generic" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Generic PCL 5c LF Printer" driver="pcl-g_5c_l" manufacturer="Generic" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Generic PCL 5e Printer" driver="pcl-g_5e" manufacturer="Generic" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Generic PCL 5e LF Printer" driver="pcl-g_5e_l" manufacturer="Generic" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Generic PCL 6/PCL XL Printer" driver="pcl-g_6" manufacturer="Generic" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Generic PCL 6/PCL XL LF Printer" driver="pcl-g_6_l" manufacturer="Generic" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Generic PCL 6 Printer wide margin" driver="pcl-g_6_a4" manufacturer="Generic" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Generic PCL 6 LF Printer wide margin" driver="pcl-g_6_lf_a4" manufacturer="Generic" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Generic PCL 6 Tabl Printer wide margin" driver="pcl-g_6_tabloid_a4" manufacturer="Generic" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner 10512" driver="gestetner-10512" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner 2212" driver="gestetner-2212" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner 2712" driver="gestetner-2712" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner 3212" driver="gestetner-3212" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner 3502" driver="gestetner-3502" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner 3532/4235g" driver="gestetner-4235g" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner 4502" driver="gestetner-4502" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner 4532/4245g" driver="gestetner-4245g" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner 6002" driver="gestetner-6002" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner 7502" driver="gestetner-7502" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner 9002" driver="gestetner-9002" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm415" driver="gestetner-dsm415" manufacturer="Gestetner" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm615" driver="gestetner-dsm615" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm616" driver="gestetner-dsm616" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm618" driver="gestetner-dsm618" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm618d" driver="gestetner-dsm618d" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm620" driver="gestetner-dsm620" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm620d" driver="gestetner-dsm620d" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm622" driver="gestetner-dsm622" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm627" driver="gestetner-dsm627" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm635/635G" driver="gestetner-dsm635g" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm645/645G" driver="gestetner-ds645g" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm651" driver="gestetner-dsm651" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm660" driver="gestetner-dsm660" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm675" driver="gestetner-dsm675" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm725" driver="gestetner-dsm725" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm730" driver="gestetner-dsm730" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm735/735G" driver="gestetner-dsm735g" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner DSm745/745G" driver="gestetner-dsm745g" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP1100/DSm7110" driver="gestetner-dsm7110" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP1350/DSm7135" driver="gestetner-dsm7135" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP1600/DSm716" driver="gestetner-dsm716" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP2000/DSm721d" driver="gestetner-dsm721d" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP2500/DSm625" driver="gestetner-dsm625" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP3500/DSm735e" driver="gestetner-dsm735e" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP4500/DSm745e" driver="gestetner-dsm745e" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP5500/DSm755" driver="gestetner-dsm755" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP6500/DSm765" driver="gestetner-dsm765" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP7500/DSm775" driver="gestetner-dsm775" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP9000/DSm790" driver="gestetner-dsm790" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP 161/DSm416" driver="gestetner-dsm416" manufacturer="Gestetner" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP 2510/DSm725e" driver="gestetner-dsm725e" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP 2550" driver="gestetner-mp_2550" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP 2550B" driver="gestetner-mp_2550b" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP 3010/DSm730e" driver="gestetner-dsm730e" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP 3350" driver="gestetner-mp_3350" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP 3350B" driver="gestetner-mp_3350b" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP 4000" driver="gestetner-mp_4000" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP 4000B" driver="gestetner-mp_4000b" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP 5000" driver="gestetner-mp_5000" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Gestetner MP 5000B" driver="gestetner-mp_5000b" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="HP Business Inkjet 2200" deviceid="MFG:HEWLETT-PACKARD;MDL:HP BUSINESS INKJET 2200;DES:Hewlett-Packard Business Inkjet 2200;CMD:MLC,PML,PJL;" driver="hp-bij_2200" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP Business Inkjet 2230" deviceid="MFG:HEWLETT-PACKARD;MDL:HP BUSINESS INKJET 2230;DES:Hewlett-Packard Business Inkjet 2230;CMD:MLC,PML,PJL;" driver="hp-bij_2230" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP Business Inkjet 2250" deviceid="MFG:HEWLETT-PACKARD;MDL:HP BUSINESS INKJET 2250;DES:Hewlett-Packard Business Inkjet 2250;CMD:MLC,PML,PJL,PCL5,POSTSCRIPT;" driver="hp-bij_2250" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP Business Inkjet 2250TN" deviceid="MFG:HEWLETT-PACKARD;MDL:HP BUSINESS INKJET 2250;DES:Hewlett-Packard Business Inkjet 2250;CMD:MLC,PML,PJL,PCL5,POSTSCRIPT;" driver="hp-bij_2250tn" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <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" /> - <printer translate="name" name="HP Color Inkjet Printer CP1160" driver="hp-cij_cp1160" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <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" /> - <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" /> - <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" /> - <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" /> - <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" /> - <printer translate="name" name="HP Color LaserJet 5" driver="hp-clj_5" manufacturer="HP" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="HP Color LaserJet 5000" driver="hp-clj_5000" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP Color LaserJet 5500" driver="hp-clj_5500" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP Color LaserJet 8550GN" driver="hp-clj_8550gn" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP DesignJet 230" driver="pcl-desnj-230" manufacturer="HP" model="10230" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DesignJet 250C" driver="pcl-desnj-250" manufacturer="HP" model="10250" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DesignJet 430" driver="pcl-desnj-430" manufacturer="HP" model="10230" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DesignJet 450C" driver="pcl-desnj-450" manufacturer="HP" model="10250" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DesignJet 455CA" driver="pcl-desnj-455" manufacturer="HP" model="10250" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DesignJet 488CA" driver="pcl-desnj-488" manufacturer="HP" model="10250" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DesignJet 700" driver="pcl-desnj-700" manufacturer="HP" model="10700" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DesignJet 750C Plus" driver="hp-desnj_750c_plus" manufacturer="HP" model="10750" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DesignJet 750C" driver="pcl-750" manufacturer="HP" model="10750" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DesignJet 2500CP" driver="pcl-desnj-2500" manufacturer="HP" model="12500" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DesignJet 3500CP" driver="pcl-desnj-3500" manufacturer="HP" model="13500" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DesignJet ColorPro CAD" driver="hp-desnj_cp_cad" manufacturer="HP" model="2500" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 400" deviceid="MFG:Hewlett-Packard;MDL:HP DeskJet 400;DES:HP DeskJet 400 Printer;CMD:PCL,C32;" driver="pcl-400" manufacturer="HP" model="400" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 420C" driver="hp-dj_420c" manufacturer="HP" model="540" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 450" deviceid="MFG:hp;MDL:dj450;DES:hp dj450;CMD:MLC,PCL,PML,DESKJET,DW-PCL,DYN;" driver="hp-dj_450" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 500" driver="pcl-500" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 500C" driver="pcl-501" manufacturer="HP" model="501" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 505J Plus" driver="hp-dj_505j_plus" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 510" driver="hp-dj_510" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 520" driver="pcl-520" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 540C" driver="pcl-540" manufacturer="HP" model="540" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 550C" driver="pcl-550" manufacturer="HP" model="550" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 5550" deviceid="MFG:hp;MDL:deskjet 5550;DES:hp deskjet 5550;CMD:MLC,PCL,PML,DW-PCL,DYN,DESKJET;" driver="hp-dj_5550" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 5551" driver="hp-dj_5551" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 560C" driver="pcl-560" manufacturer="HP" model="550" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 600" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 600;DES:Hewlett-Packard DeskJet 600;CMD:MLC,PCL,PML;" driver="pcl-600" manufacturer="HP" model="600" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 600C" driver="pcl-601" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 610C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 610C;DES:Hewlett-Packard DeskJet 610C;CMD:MLC,PCL,PML;" driver="hp-dj_610c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 610CL" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 610C;DES:Hewlett-Packard DeskJet 610C;CMD:MLC,PCL,PML;" driver="hp-dj_610cl" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 6122" deviceid="MFG:hp;MDL:deskjet 6122;DES:hp deskjet 6122;CMD:MLC,PCL,PML,DW-PCL,DYN,DESKJET;" driver="hp-dj_6122" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 6127" driver="hp-dj_6127" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 612C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 610C;DES:Hewlett-Packard DeskJet 610C;CMD:MLC,PCL,PML;" driver="hp-dj_612c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 640C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 640C;DES:Hewlett-Packard DeskJet 640C;CMD:MLC,PCL,PML;" driver="hp-dj_640c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 648C" driver="hp-dj_648c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 660C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 660C;DES:Hewlett-Packard DeskJet 660C;CMD:MLC,PCL,PML;" driver="hp-dj_660c" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 670C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 670C;DES:Hewlett-Packard DeskJet 670C;CMD:MLC,PCL,PML;" driver="hp-dj_670c" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 670TV" driver="hp-dj_670tv" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 672C" driver="hp-dj_672c" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 680C" driver="hp-dj_680c" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 682C" driver="hp-dj_682c" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 690C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 690C;DES:Hewlett-Packard DeskJet 690C;CMD:MLC,PCL,PML;" driver="pcl-690" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 692C" driver="hp-dj_692c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 693C" driver="hp-dj_693c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 694C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 690C;DES:Hewlett-Packard DeskJet 690C;CMD:MLC,PCL,PML;" driver="hp-dj_694c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 695C" driver="hp-dj_695c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 697C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 690C;DES:Hewlett-Packard DeskJet 690C;CMD:MLC,PCL,PML;" driver="hp-dj_697c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 810C" driver="pcl-810" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> <!-- Uses 840 driver --> - <printer translate="name" name="HP DeskJet 812C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 810C;DES:Hewlett-Packard DeskJet 810C;CMD:MLC,PCL,PML;" driver="pcl-812" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> <!-- Uses 840 driver --> - <printer translate="name" name="HP DeskJet 815C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 815C;DES:Hewlett-Packard DeskJet 815C;CMD:MLC,PCL,PML;" driver="hp-dj_815c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 816C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 815C;DES:Hewlett-Packard DeskJet 815C;CMD:MLC,PCL,PML;" driver="hp-dj_816c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 825C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 825C;DES:Hewlett-Packard DeskJet 825C;CMD:MLC,PCL,PML;" driver="hp-dj_825c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 830C" driver="hp-dj_830c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 832C" driver="hp-dj_832c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 840C" deviceid="MFG:Hewlett-Packard;MDL:DeskJet 840C;" driver="pcl-840" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> <!-- Uses 840 driver --> - <printer translate="name" name="HP DeskJet 841C" deviceid="MFG:Hewlett-Packard;MDL:DeskJet 841C;" driver="hp-dj_841c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 842C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 840C;DES:Hewlett-Packard DeskJet 840C;CMD:MLC,PCL,PML;" driver="pcl-842" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> <!-- Uses 840 driver --> - <printer translate="name" name="HP DeskJet 843C" deviceid="MFG:Hewlett-Packard;MDL:DeskJet 843C;" driver="hp-dj_843c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 845C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 845C;DES:Hewlett-Packard DeskJet 845C;CMD:MLC,PCL,PML;" driver="pcl-845" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> <!-- Uses 840 driver --> - <printer translate="name" name="HP DeskJet 850C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 850C;DES:Hewlett-Packard Deskjet 850C;CMD:PCL,MLC,PML;" driver="pcl-850" manufacturer="HP" model="800" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 855C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 850C;DES:Hewlett-Packard Deskjet 850C;CMD:PCL,MLC,PML;" driver="pcl-855" manufacturer="HP" model="800" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 870C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 870C;DES:Hewlett-Packard Deskjet 870C;CMD:PCL,MLC,PML;" driver="pcl-870" manufacturer="HP" model="800" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 880C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 880C;DES:Hewlett-Packard DeskJet 880C;CMD:MLC,PCL,PML;" driver="hp-dj_880c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 882C" driver="hp-dj_882c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 890C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 890C;DES:Hewlett-Packard Deskjet 890C;CMD:PCL,MLC,PML;" driver="pcl-890" manufacturer="HP" model="800" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 895C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 895C;DES:Hewlett-Packard DeskJet 895C;CMD:MLC,PCL,PML;" driver="pcl-895" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> <!-- Uses 840 driver --> - <printer translate="name" name="HP DeskJet 916C" driver="pcl-900" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 920C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 920C;DES:Hewlett-Packard DeskJet 920C;CMD:MLC,PCL,PML;" driver="hp-dj_920c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 9300" driver="hp-dj_9300" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 930C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 930C;DES:Hewlett-Packard DeskJet 930C;CMD:MLC,PCL,PML;" driver="hp-dj_930c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 932C" driver="hp-dj_932c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 933C" driver="hp-dj_933c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 934C" driver="hp-dj_934c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 935C" driver="hp-dj_935c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 940C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 940C;DES:Hewlett-Packard DeskJet 940C;CMD:MLC,PCL,PML;" driver="hp-dj_940c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 948C" driver="hp-dj_948c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 950C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 950C;DES:Hewlett-Packard DeskJet 950C;CMD:MLC,PCL,PML;" driver="hp-dj_950c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 952C" driver="hp-dj_952c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 955C" driver="hp-dj_955c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 957C" driver="hp-dj_957c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 959C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 950C;DES:Hewlett-Packard DeskJet 950C;CMD:MLC,PCL,PML;" driver="hp-dj_959c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 960C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 960C;DES:Hewlett-Packard DeskJet 960C;CMD:MLC,PCL,PML;" driver="hp-dj_960c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 970C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 970C;DES:Hewlett-Packard DeskJet 970C;CMD:MLC,PCL,PML;" driver="hp-dj_970c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 975C" driver="hp-dj_975c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 980C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 980C;DES:Hewlett-Packard DeskJet 980C;CMD:MLC,PCL,PML;" driver="hp-dj_980c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 990C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 990C;DES:Hewlett-Packard DeskJet 990C;CMD:MLC,PCL,PML;" driver="hp-dj_990c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 995C" driver="hp-dj_995c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 1100C" driver="pcl-1100" manufacturer="HP" model="1100" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 1120C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 1120C;DES:Hewlett-Packard Deskjet 1120C;CMD:PCL,MLC,PML;" driver="pcl-1120" manufacturer="HP" model="1100" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 1125C" driver="hp-dj_1125c" manufacturer="HP" model="1100" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 1200C" driver="pcl-1200" manufacturer="HP" model="1200" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 1220C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 1220C;DES:Hewlett-Packard DeskJet 1220;CMD:MLC,PCL,PML;" driver="pcl-1220" manufacturer="HP" model="901" parameters="pcl_inkjet_params" /> <!-- Uses 900 series driver (large) --> - <printer translate="name" name="HP DeskJet 1600C" driver="pcl-1600" manufacturer="HP" model="1600" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 1600CM" driver="hp-dj_1600cm" manufacturer="HP" model="1600" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 2000" driver="pcl-2000" manufacturer="HP" model="2000" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 2500" driver="pcl-2500" manufacturer="HP" model="2500" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 2500CM" driver="hp-2500cm" manufacturer="HP" model="2500" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 340C" deviceid="MFG:Hewlett-Packard;MDL:HP DeskJet 340;DES:HP;CMD:PCL,C32;" driver="pcl-340" manufacturer="HP" model="340" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 3810" driver="hp-dj_3810" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 3816" driver="hp-dj_3816" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 3820" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 3820;DES:Hewlett-Packard DeskJet 3820;CMD:MLC,PCL,PML;" driver="hp-dj_3820" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP DeskJet 3822" driver="hp-dj_3822" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP LaserJet 2" driver="pcl-2" manufacturer="HP" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 2D" driver="hp-lj_2d" manufacturer="HP" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 2P Plus" driver="hp-lj_2p_plus" manufacturer="HP" model="21" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 2P" driver="pcl-2p" manufacturer="HP" model="21" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3" driver="pcl-3" manufacturer="HP" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3D" driver="hp-lj_3d" manufacturer="HP" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3P w/ PCL5" driver="hp-lj_3p_w_pcl5" manufacturer="HP" model="4" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3P w/PS" driver="hp-lj_3p_w_ps" manufacturer="HP" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 4 Plus" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 4 Plus;CMD:PJL,PCL,POSTSCRIPT;" driver="hp-lj_4_plus" manufacturer="HP" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 4" driver="pcl-4" manufacturer="HP" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 4L" deviceid="MFG:Hewlett-Packard;MDL:LaserJet 4L;CMD:HP ENHANCED PCL5,PJL;" driver="pcl-4l" manufacturer="HP" model="4" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 4M" driver="hp-lj_4m" manufacturer="HP" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 4ML" driver="hp-lj_4ml" manufacturer="HP" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 4P" driver="hp-lj_4p" manufacturer="HP" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 4Si" driver="pcl-4si" manufacturer="HP" model="51" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 4V" driver="pcl-4v" manufacturer="HP" model="5" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 5" driver="pcl-5" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 5L" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 5L;DES:Hewlett-Packard LaserJet 5L Printer;CMD:HP ENHANCED PCL5,PJL;" driver="hp-lj_5l" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 5M" driver="hp-lj_5m" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 5MP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 5MP;DES:Hewlett-Packard LaserJet 5MP Printer;CMD:HP ENHANCED PCL5,PJL,POSTSCRIPT;" driver="hp-lj_5mp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 5P" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 5P;DES:Hewlett-Packard LaserJet 5P Printer;CMD:HP ENHANCED PCL5,PJL;" driver="hp-lj_5p" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 5Si" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 5Si;DES:None;CMD:PJL,MLC,PCL,POSTSCRIPT;" driver="pcl-5si" manufacturer="HP" model="7" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 6" driver="pcl-6" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 6L" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 6L;DES:Hewlett-Packard LaserJet 6L Printer;" driver="hp-lj_6l" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 6MP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 6MP;DES:Hewlett-Packard LaserJet 6MP Printer;CMD:PJL,MLC,PCLXL,PCL,POSTSCRIPT;" driver="hp-lj_6mp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 6P" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 6P;DES:Hewlett-Packard LaserJet 6P Printer;CMD:HP ENHANCED PCL5,PJL;" driver="hp-lj_6p" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 1010" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 1010;CMD:FastRaster;" driver="hp-lj_1010" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 1012" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 1012;CMD:FastRaster;" driver="hp-lj_1012" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 1015" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 1015;CMD:FastRaster;" driver="hp-lj_1015" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 1022" driver="hp-lj_1022" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 1100" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 1100;DES:HP LaserJet 1100 Printer;CMD:MLC,PCL,PJL;" driver="hp-lj_1100" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 1100A" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 1100;DES:HP LaserJet 1100A Printer-Copier-Scanner;CMD:MLC,MFPDTF1,PCL,PJL;" driver="hp-lj_1100a" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 1150" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 1150;DES:Hewlett-Packard LaserJet 1150;CMD:PJL,MLC,BIDI-ECP,PCL,DW-PCL;" driver="hp-lj_1150" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 1160" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 1160 series;DES:Hewlett-Packard LaserJet 1160 series;CMD:PJL,MLC,BIDI-ECP,PCL,DW-PCL;" driver="hp-lj_1160" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 1200" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 1200;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_1200" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 1220" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 1220;DES:Hewlett-Packard LaserJet 1220;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_1220" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 1300" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 1300;DES:Hewlett-Packard LaserJet 1300;CMD:PJL,MLC,BIDI-ECP,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_1300" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 1320" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 1320 series;DES:Hewlett-Packard LaserJet 1320 series;CMD:PJL,MLC,BIDI-ECP,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_1320" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 2100" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 2100 Series;DES:Hewlett-Packard LaserJet 2100 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_2100" manufacturer="HP" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 2100M" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 2100 Series;DES:Hewlett-Packard LaserJet 2100 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_2100m" manufacturer="HP" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 2200" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 2200;DES:Hewlett-Packard LaserJet 2200;" driver="hp-lj_2200" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 2300" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 2300 series;DES:Hewlett-Packard LaserJet 2300 series;CMD:PJL,MLC,BIDI-ECP,PCLXL,PCL,PJL,POSTSCRIPT;" driver="hp-lj_2300" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 2410" driver="hp-lj_2410" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 2420" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 2420;DES:Hewlett-Packard LaserJet 2420;CMD:PJL,MLC,PCLXL,PCL,PJL,POSTSCRIPT;" driver="hp-lj_2420" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 2430" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 2430;DES:Hewlett-Packard LaserJet 2430;CMD:PJL,MLC,PCLXL,PCL,PJL,POSTSCRIPT,PDF;" driver="hp-lj_2430" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3015" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3015;DES:Hewlett-Packard LaserJet 3015;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3015" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3020" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 3020;DES:Hewlett-Packard LaserJet 3020;CMD:PJL,MLC,BIDI-ECP,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3020" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3030" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3030;DES:Hewlett-Packard LaserJet 3030;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3030" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3050" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3050;DES:Hewlett-Packard LaserJet 3050;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3050" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3052" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3052;DES:Hewlett-Packard LaserJet 3052;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3052" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3055" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3055;DES:Hewlett-Packard LaserJet 3055;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3055" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3200" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3200;DES:Hewlett-Packard LaserJet 3200;CMD:PJL,MLC,PCL,PCLXL;" driver="hp-lj_3200" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3200m" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3200M;DES:Hewlett-Packard LaserJet 3200M;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_3200m" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3200se" driver="hp-lj_3200se" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3300 MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3300/3310/3320;DES:Hewlett-Packard LaserJet 3300/3310/3320;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3300_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3310 MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3300/3310/3320;DES:Hewlett-Packard LaserJet 3300/3310/3320;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3310_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3320 MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3300/3310/3320;DES:Hewlett-Packard LaserJet 3300/3310/3320;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3320_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3320N MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3300/3310/3320;DES:Hewlett-Packard LaserJet 3300/3310/3320;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3320n_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3330 MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3330;DES:Hewlett-Packard LaserJet 3330;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3330_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 3380" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3380;DES:Hewlett-Packard LaserJet 3380;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3380" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <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" /> - <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" /> - <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" /> - <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" /> - <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" /> - <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" /> - <printer translate="name" name="HP LaserJet 4240" driver="hp-lj_4240" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <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" /> - <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" /> - <printer translate="name" name="HP LaserJet 4345 mfp" driver="hp-lj_4345_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <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" /> - <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" /> - <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" /> - <printer translate="name" name="HP LaserJet 5200" driver="hp-lj_5200" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 5200L" driver="hp-lj_5200l" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <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" /> - <printer translate="name" name="HP LaserJet 8100" driver="hp-lj_8100" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <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" /> - <printer translate="name" name="HP LaserJet 9000" driver="hp-lj_9000" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 9040" driver="hp-lj_9040" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 9040 MFP" driver="hp-lj_9040_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 9050" driver="hp-lj_9050" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP LaserJet 9050 MFP" driver="hp-lj_9050_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <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" /> - <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" /> - <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" /> - <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" /> - <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" /> - <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" /> - <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" /> - <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" /> - <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" /> - <printer translate="name" name="HP Mopier 240" driver="hp-mopier_240" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="HP Mopier 320" driver="hp-mopier_320" manufacturer="HP" model="6" parameters="pcl_laser_params" /> - <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" /> - <printer translate="name" name="HP OfficeJet 330" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 300;DES:Hewlett-Packard OfficeJet Series 300;CMD:MLC,PCL,PML;" driver="hp-oj_330" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 350" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 300;DES:Hewlett-Packard OfficeJet Series 300;CMD:MLC,PCL,PML;" driver="hp-oj_350" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 500" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 500;CMD:MLC,PCL,PML;" driver="hp-oj_500" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 520" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 500;CMD:MLC,PCL,PML;" driver="hp-oj_520" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 570" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 500;CMD:MLC,PCL,PML;" driver="hp-oj_570" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 580" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 500;CMD:MLC,PCL,PML;" driver="hp-oj_580" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 590" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 500;CMD:MLC,PCL,PML;" driver="hp-oj_590" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 600" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 600;CMD:MLC,PCL,PML;" driver="hp-oj_600" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 610" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 600;CMD:MLC,PCL,PML;" driver="hp-oj_610" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 625" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 600;CMD:MLC,PCL,PML;" driver="hp-oj_625" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 630" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 600;CMD:MLC,PCL,PML;" driver="hp-oj_630" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 635" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 600;CMD:MLC,PCL,PML;" driver="hp-oj_635" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 700" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 700;CMD:MLC,PCL,PML;" driver="hp-oj_700" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 710" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 700;CMD:MLC,PCL,PML;" driver="hp-oj_710" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 720" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 700;CMD:MLC,PCL,PML;" driver="hp-oj_720" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 725" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 700;CMD:MLC,PCL,PML;" driver="hp-oj_725" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 5105" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet 5105;DES:Hewlett-Packard OfficeJet 5100 Series;CMD:MLC,PCL,PML;" driver="hp-oj_5105" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 5110" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet 5110v;DES:Hewlett-Packard OfficeJet 5100 Series;CMD:MLC,PCL,PML;" driver="hp-oj_5110" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 5110xi" driver="hp-oj_5110xi" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 6105" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet 6100 Series;CMD:MLC,PCL,PML,DW-PCL,DYN;" driver="hp-oj_6105" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 6110" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet 6100 Series;CMD:MLC,PCL,PML,DW-PCL,DYN;" driver="hp-oj_6110" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 7110" deviceid="MFG:Hewlett-Packard;MDL:officejet 7100 series;CMD:MLC,PCL,PML,DW-PCL,BIDI-ECP;" driver="hp-oj_7110" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 7130" deviceid="MFG:Hewlett-Packard;MDL:officejet 7100 series;CMD:MLC,PCL,PML,DW-PCL,BIDI-ECP;" driver="hp-oj_7130" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet 7140" deviceid="MFG:Hewlett-Packard;MDL:officejet 7100 series;CMD:MLC,PCL,PML,DW-PCL,BIDI-ECP;" driver="hp-oj_7140" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet D125" deviceid="MFG:Hewlett-Packard;MDL:officejet d series;CMD:MLC,PCL,PML,DW-PCL,BIDI-ECP;" driver="hp-oj_d125" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet D135" deviceid="MFG:Hewlett-Packard;MDL:officejet d series;CMD:MLC,PCL,PML,DW-PCL,BIDI-ECP;" driver="hp-oj_d135" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet D145" deviceid="MFG:Hewlett-Packard;MDL:officejet d series;CMD:MLC,PCL,PML,DW-PCL,BIDI-ECP;" driver="hp-oj_d145" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet D155" deviceid="MFG:Hewlett-Packard;MDL:officejet d series;CMD:MLC,PCL,PML,DW-PCL,BIDI-ECP;" driver="hp-oj_d155" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet G55" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet G55;DES:Hewlett-Packard OfficeJet G Series;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_g55" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet G85" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet G85;DES:Hewlett-Packard OfficeJet G Series;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_g85" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet G95" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet G95;DES:Hewlett-Packard OfficeJet G Series;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_g95" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet K60" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet K60;DES:Hewlett-Packard OfficeJet K Series;CMD:MLC,PCL,PML;" driver="hp-oj_k60" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet K60xi" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet K60xi;DES:Hewlett-Packard OfficeJet K Series;CMD:MLC,PCL,PML;" driver="hp-oj_k60xi" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet K80" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet K80;DES:Hewlett-Packard OfficeJet K Series;CMD:MLC,PCL,PML;" driver="hp-oj_k80" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet K80xi" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet K80xi;DES:Hewlett-Packard OfficeJet K Series;CMD:MLC,PCL,PML;" driver="hp-oj_k80xi" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet LX" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet;CMD:MLC,PCL,PML;" driver="hp-oj_lx" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet Pro 1150C" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET PRO 1150C;DES:Hewlett-Packard OfficeJet Pro 1150C;CMD:PCL,MLC,PML,PJL;" driver="hp-oj_pro_1150c" manufacturer="HP" model="800" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet Pro 1170C" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET PRO 1170C SERIES;DES:Hewlett-Packard OfficeJet Pro 1170C Series;CMD:PCL,MLC,PML,PJL;" driver="hp-oj_pro_1170c" manufacturer="HP" model="800" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet Pro 1175C" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET PRO 1170C SERIES;DES:Hewlett-Packard OfficeJet Pro 1170C Series;CMD:PCL,MLC,PML,PJL;" driver="hp-oj_pro_1175c" manufacturer="HP" model="800" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet R40" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET R40;DES:Hewlett-Packard OfficeJet R40;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_r40" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet R45" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET R40;DES:Hewlett-Packard OfficeJet R40;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_r45" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet R60" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET R60;DES:Hewlett-Packard OfficeJet R60;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_r60" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet R65" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET R65;DES:Hewlett-Packard OfficeJet R65;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_r65" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet R80" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET R80;DES:Hewlett-Packard OfficeJet R80;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_r80" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet T45" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet T Series;DES:Hewlett-Packard OfficeJet T Series;CMD:MLC,PCL,PML;" driver="hp-oj_t45" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet T65" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet T Series;DES:Hewlett-Packard OfficeJet T Series;CMD:MLC,PCL,PML;" driver="hp-oj_t65" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet V40" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet V40;DES:Hewlett-Packard OfficeJet V Series;CMD:MLC,PCL,PML;" driver="hp-oj_v40" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet V40xi" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet V40xi;DES:Hewlett-Packard OfficeJet V Series;CMD:MLC,PCL,PML;" driver="hp-oj_v40xi" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP OfficeJet" driver="hp-oj" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PSC 370" deviceid="MFG:Hewlett-Packard;MDL:Printer/Scanner/Copier 300;CMD:MLC,PCL,PML;" driver="hp-psc_370" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PSC 380" deviceid="MFG:Hewlett-Packard;MDL:Printer/Scanner/Copier 300;CMD:MLC,PCL,PML;" driver="hp-psc_380" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PSC 500" deviceid="MFG:HEWLETT-PACKARD;MDL:PSC 500;DES:Hewlett-Packard PSC 500;CMD:MLC,PCL,PML,SCL;" driver="hp-psc_500" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PSC 750" deviceid="MFG:Hewlett-Packard;MDL:PSC 750;DES:Hewlett-Packard PSC 700 Series;CMD:MLC,PCL,PML;" driver="hp-psc_750" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PSC 950" deviceid="MFG:Hewlett-Packard;MDL:PSC 900 Series;DES:Hewlett-Packard PSC 900 Series;CMD:MLC,PCL,PML;" driver="hp-psc_950" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PSC 950xi" deviceid="MFG:Hewlett-Packard;MDL:PSC 900 Series;DES:Hewlett-Packard PSC 900 Series;CMD:MLC,PCL,PML;" driver="hp-psc_950xi" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PSC 2110" deviceid="MFG:Hewlett-Packard;MDL:PSC 2100 Series;CMD:MLC,PCL,PML,DW-PCL,DYN;" driver="hp-psc_2110" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PSC 2150" deviceid="MFG:Hewlett-Packard;MDL:PSC 2150 Series;CMD:MLC,PCL,PML,DW-PCL,DYN;" driver="hp-psc_2150" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PSC 2210" deviceid="MFG:Hewlett-Packard;MDL:PSC 2200 Series;CMD:MLC,PCL,PML,DW-PCL,DYN;" driver="hp-psc_2210" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PhotoSmart 7150" deviceid="MFG:hp;MDL:photosmart 7150;DES:hp photosmart 7150;CMD:MLC,PCL,PML,DW-PCL,DYN,DESKJET;" driver="hp-psc_7150" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PhotoSmart 7345" driver="hp-psc_7345" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PhotoSmart 7350" deviceid="MFG:hp;MDL:photosmart 7350;DES:hp photosmart 7350;CMD:MLC,PCL,PML,DW-PCL,DYN,DESKJET;" driver="hp-psc_7350" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PhotoSmart 7550" deviceid="MFG:hp;MDL:photosmart 7550;DES:hp photosmart 7550;CMD:MLC,PCL,PML,DW-PCL,DYN,DESKJET;" driver="hp-psc_7550" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PhotoSmart P100" deviceid="MFG:HP;MDL:PHOTOSMART 100;DES:hp photosmart 100;CMD:MLC,PCL,PML,BIDI-ECP,ECP18,DW-PCL;" driver="hp-psc_p100" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PhotoSmart P130" driver="hp-psc_p130" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PhotoSmart P230" driver="hp-psc_p230" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PhotoSmart P1000" deviceid="MFG:HEWLETT-PACKARD;MDL:PHOTOSMART P1000;DES:Hewlett-Packard PhotoSmart P1000;CMD:MLC,PCL,PML;" driver="pcl-P1000" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> <!-- Uses 900 series driver --> - <printer translate="name" name="HP PhotoSmart P1100" deviceid="MFG:HEWLETT-PACKARD;MDL:PHOTOSMART P1100;DES:Hewlett-Packard PhotoSmart P1100;CMD:MLC,PCL,PML;" driver="pcl-P1100" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> <!-- Uses 900 series driver --> - <printer translate="name" name="HP PhotoSmart P1115" deviceid="MFG:HP;MDL:PHOTOSMART 1115;DES:hp photosmart 1115;CMD:MLC,PCL,PML,BIDI-ECP,ECP18,DW-PCL;" driver="hp-psc_p1115" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PhotoSmart P1215" driver="hp-psc_p1215" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PhotoSmart P1218" deviceid="MFG:HP;MDL:PHOTOSMART 1218;DES:hp photosmart 1218;CMD:MLC,PCL,PML,BIDI-ECP,ECP18,DW-PCL;" driver="hp-psc_p1218" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP PhotoSmart P1315" deviceid="MFG:HP;MDL:PHOTOSMART 1315;DES:hp photosmart 1315;CMD:MLC,PCL,PML,BIDI-ECP,ECP18,DW-PCL;" driver="hp-psc_p1315" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> - <printer translate="name" name="HP e-printer e20" driver="hp-e-printer_e20" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="IBM 4019" driver="ibm-4019" manufacturer="IBM" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="IBM 4029 030 LaserPrinter 10" driver="ibm-4029_030_lp_10" manufacturer="IBM" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="IBM 4312" driver="ibm-4312" manufacturer="IBM" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="IBM Infoprint 12" deviceid="MFG:IBM;MDL:Infoprint;CMD:PCL5E,PCL6;" driver="ibm-infoprint_12" manufacturer="IBM" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="IBM Page Printer 3112" deviceid="MFG:Lexmark International;MDL:IBM 3112 Page Printer;DES:IBM 3112 Page Printer;CMD:PCL 5 Emulation, PostScript Level 2 Emulation, NPAP, PJL;" driver="ibm-pp_3112" manufacturer="IBM" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec 4353 MF" driver="infotec-4353_mf" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec 4452 MF" driver="infotec-4452_mf" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec 4651 MF" deviceid="MFG:Lexmark International;MDL:IBM 3112 Page Printer;DES:IBM 3112 Page Printer;CMD:PCL 5 Emulation, PostScript Level 2 Emulation, NPAP, PJL;" driver="infotec-4651_mf" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS2022" driver="infotec-is2022" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS2027" driver="infotec-is2027" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS2032" driver="infotec-is2032" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS2035" driver="infotec-is2035" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS2045" driver="infotec-is2045" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS2090" driver="infotec-is2090" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS2105" driver="infotec-is2105" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2015" driver="infotec-is_2015" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2018" driver="infotec-is_2018" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2018D" driver="infotec-is_2018d" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2060" driver="infotec-is_2060" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2075" driver="infotec-is_2075" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2122" driver="infotec-is_2122" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2127" driver="infotec-is_2127" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2132" driver="infotec-is_2132" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2135" driver="infotec-is_2135" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2145" driver="infotec-is_2145" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2151" driver="infotec-is_2151" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2160" driver="infotec-is_2160" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2175" driver="infotec-is_2175" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2215" driver="infotec-is_2215" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2216" driver="infotec-is_2216" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2220" driver="infotec-is_2220" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2220D" driver="infotec-is_2220d" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2225" driver="infotec-is_2225" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2230" driver="infotec-is_2230" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2235" driver="infotec-is_2235" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2245" driver="infotec-is_2245" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2255" driver="infotec-is_2255" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2265" driver="infotec-is_2265" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2275" driver="infotec-is_2275" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2316" driver="infotec-is_2316" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2320" driver="infotec-is_2320" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2325" driver="infotec-is_2325" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2416" driver="infotec-is_2416" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2425" driver="infotec-is_2425" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2430" driver="infotec-is_2430" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2435" driver="infotec-is_2435" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 2445" driver="infotec-is_2445" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 3090" driver="infotec-is_3090" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 3110" driver="infotec-is_3110" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec IS 3135" driver="infotec-is_3135" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec MP 2550" driver="infotec-mp_2550" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec MP 2550B" driver="infotec-mp_2550b" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec MP 3350" driver="infotec-mp_3350" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec MP 3350B" driver="infotec-mp_3350b" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec MP 4000" driver="infotec-mp_4000" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec MP 4000B" driver="infotec-mp_4000b" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec MP 5000" driver="infotec-mp_5000" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Infotec MP 5000B" driver="infotec-mp_5000b" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera CS-1815" driver="kyocera-cs-1815" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera F-1010" deviceid="MFG:Kyocera;MDL:F-1010;DES:Kyocera F-1010;" driver="kyocera-f-1010" manufacturer="Kyocera" model="22" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-600 - KPDL-2" driver="kyocera-fs-600_kpdl-2" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-600" deviceid="MFG:Kyocera;MDL:Kyocera FS-600;DES:Kyocera FS-600;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-600" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-680" deviceid="MFG:Kyocera;MDL:Kyocera FS-680;DES:Kyocera FS-680;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-680" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-800" deviceid="MFG:Kyocera;MDL:Kyocera FS-800;DES:Kyocera FS-800;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-800" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-920" driver="kyocera-fs-920" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-1000" deviceid="MFG:Kyocera;MDL:Kyocera FS-1000;DES:Kyocera FS-1000;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-1000" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-1000+" driver="kyocera-fs-1000plus" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-1010" deviceid="MFG:Kyocera Mita;MDL:Kyocera Mita FS-1010;DES:Kyocera FS-1010;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-1010" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-1018MFP" driver="kyocera-fs-1018mfp" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-1020D" driver="kyocera-fs-1020d" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-1030D" driver="kyocera-fs-1030d" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <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" /> - <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" /> - <printer translate="name" name="Kyocera FS-1135MFP" deviceid="MFG:Kyocera;MDL:FS-1135MFP;CMD:PCLXL,PostScript Emulation,PCL5E,PJL;" driver="kyocera-fs-1135mfp" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <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" /> - <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" /> - <printer translate="name" name="Kyocera FS-1600+" driver="kyocera-fs-1600plus" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-1700" deviceid="MFG:Kyocera;MDL:Kyocera FS-1700;DES:Kyocera FS-1700;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-1700" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-1700+" driver="kyocera-fs-1700plus" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-1714M" driver="kyocera-fs-1714m" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-1750" deviceid="MFG:Kyocera;MDL:Kyocera FS-1750;DES:Kyocera FS-1750;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-1750" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-1800" deviceid="MFG:Kyocera Mita;MDL:Kyocera Mita FS-1800;DES:Kyocera FS-1800;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-1800" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-1800+" driver="kyocera-fs-1800plus" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-1900" deviceid="MFG:Kyocera Mita;MDL:Kyocera Mita FS-1900;DES:Kyocera FS-1900;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-1900" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-1920" driver="kyocera-fs-1920" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-2000D" driver="kyocera-fs-2000d" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-3500" deviceid="MFG:Kyocera;MDL:FS-3500;DES:Kyocera FS-3500;" driver="kyocera-fs-3500" manufacturer="Kyocera" model="32" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-3600" deviceid="MFG:Kyocera;MDL:FS-3600;DES:Kyocera FS-3600;" driver="kyocera-fs-3600" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-3600+" driver="kyocera-fs-3600plus" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-3700" deviceid="MFG:Kyocera;MDL:Kyocera FS-3700;DES:Kyocera FS-3700;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-3700" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-3700+" driver="kyocera-fs-3700plus" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-3718M" driver="kyocera-fs-3718m" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-3750" deviceid="MFG:Kyocera;MDL:Kyocera FS-3750;DES:Kyocera FS-3750;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-3750" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-3800" deviceid="MFG:Kyocera Mita;MDL:Kyocera Mita FS-3800;DES:Kyocera FS-3800;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-3800" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-3820N" driver="kyocera-fs-3820n" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-3830N" driver="kyocera-fs-3830n" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-3900DN" driver="kyocera-fs-3900dn" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-4000DN" driver="kyocera-fs-4000dn" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-5800C" deviceid="MFG:Kyocera;MDL:Kyocera FS-5800C;DES:Kyocera FS-5800C;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-5800c" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-5900C" deviceid="MFG:Kyocera;MDL:Kyocera FS-5900C;DES:Kyocera FS-5900C;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-5900c" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-6020" driver="kyocera-fs-6020" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-6026" driver="kyocera-fs-6026" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-6300" driver="kyocera-fs-6300" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-6500" deviceid="MFG:Kyocera;MDL:FS-6500;DES:Kyocera FS-6500;" driver="kyocera-fs-6500" manufacturer="Kyocera" model="32" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-6500+" driver="kyocera-fs-6500plus" manufacturer="Kyocera" model="35" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-6700" deviceid="MFG:Kyocera;MDL:Kyocera FS-6700;DES:Kyocera FS-6700;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-6700" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-6750" driver="kyocera-fs-6750" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-6900" driver="kyocera-fs-6900" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-6950DN" driver="kyocera-fs-6950dn" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-7000" deviceid="MFG:Kyocera;MDL:Kyocera FS-7000;DES:Kyocera FS-7000;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-7000" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-7000+" driver="kyocera-fs-7000plus" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-7028M" driver="kyocera-fs-7028m" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-8000C" deviceid="MFG:Kyocera Mita;MDL:Kyocera Mita FS-8000C;DES:Kyocera FS-8000C;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-8000c" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-9000" deviceid="MFG:Kyocera;MDL:Kyocera FS-9000;DES:Kyocera FS-9000;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-9000" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-9100DN" deviceid="MFG:Kyocera Mita;MDL:Kyocera Mita FS-9100DN;DES:Kyocera FS-9100DN;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-9100dn" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-9130DN" driver="kyocera-fs-9130dn" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-9500DN" deviceid="MFG:Kyocera Mita;MDL:Kyocera Mita FS-9500DN;DES:Kyocera FS-9500DN;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-9500dn" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera FS-9530DN" driver="kyocera-fs-9530dn" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-1510" driver="kyocera-km-1510" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-1530" deviceid="MFG:Kyocera Mita;MDL:KM-1530;DES:Kyocera Mita KM-1530;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-km-1530" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-1810" deviceid="MFG:Kyocera Mita;MDL:KM-1810;DES:Kyocera Mita KM-1810;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-km-1810" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-1815" driver="kyocera-km-1815" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-1820" driver="kyocera-km-1820" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-2030" deviceid="MFG:Kyocera Mita;MDL:KM-2030;DES:Kyocera Mita KM-2030;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-km-2030" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-2530" deviceid="MFG:Kyocera Mita;MDL:KM-2530;DES:Kyocera Mita KM-2530;" driver="kyocera-km-2530" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-3050" driver="kyocera-km-3050" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-3530" deviceid="MFG:Kyocera Mita;MDL:KM-3530;DES:Kyocera Mita KM-3530;" driver="kyocera-km-3530" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-4050" driver="kyocera-km-4050" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-4230" deviceid="MFG:Kyocera Mita;MDL:KM-4230;DES:Kyocera Mita KM-4230;" driver="kyocera-km-4230" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-4230/5230" driver="kyocera-km-4230_5230" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-4530" deviceid="MFG:Kyocera Mita;MDL:KM-4530;DES:Kyocera Mita KM-4530;" driver="kyocera-km-4530" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-5050" driver="kyocera-km-5050" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-5230" deviceid="MFG:Kyocera Mita;MDL:KM-5230;DES:Kyocera Mita KM-5230;" driver="kyocera-km-5230" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-5530" deviceid="MFG:Kyocera Mita;MDL:KM-5530;DES:Kyocera Mita KM-5530;" driver="kyocera-km-5530" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-6030" driver="kyocera-km-6030" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-6230" deviceid="MFG:Kyocera Mita;MDL:KM-6230;DES:Kyocera Mita KM-6230;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-km-6230" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Kyocera KM-8030" driver="kyocera-km-8030" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier 5622" driver="lanier-5622" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier 5627" driver="lanier-5627" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier 5632" driver="lanier-5632" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier 5635" driver="lanier-5635" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier 5645" driver="lanier-5645" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD0105" driver="lanier-ld0105" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD015" driver="lanier-ld015" manufacturer="Lanier" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD035" driver="lanier-ld035" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD045" driver="lanier-ld045" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD060" driver="lanier-ld060" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD075" driver="lanier-ld075" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD090" driver="lanier-ld090" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD115" driver="lanier-ld115" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD116" driver="lanier-ld116" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD118" driver="lanier-ld118" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD118d" driver="lanier-ld118d" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD120" driver="lanier-ld120" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD120d" driver="lanier-ld120d" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD122" driver="lanier-ld122" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD127" driver="lanier-ld127" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD132" driver="lanier-ld132" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD135" driver="lanier-ld135" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD145" driver="lanier-ld145" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD151" driver="lanier-ld151" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD160" driver="lanier-ld160" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD175" driver="lanier-ld175" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD225" driver="lanier-ld225" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD230" driver="lanier-ld230" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD235" driver="lanier-ld235" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier LD245" driver="lanier-ld245" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP2500/LD125" driver="lanier-ld125" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 1100/LD1100" driver="lanier-ld1100" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 1350/LD1135" driver="lanier-ld1135" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 1600/LD316" driver="lanier-ld316" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 161/LD016" driver="lanier-ld016" manufacturer="Lanier" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 2000/LD320d" driver="lanier-ld320d" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 2510/LD325" driver="lanier-ld325" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 2550B/LD425B" driver="lanier-ld425b" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 2550/LD425" driver="lanier-ld425" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 3010/LD330" driver="lanier-ld330" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 3350B/LD433B" driver="lanier-ld433b" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 3350/LD433" driver="lanier-ld433" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 3500/LD335" driver="lanier-ld335" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 4000B/LD040B" driver="lanier-ld040b" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 4000/LD040" driver="lanier-ld040" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 4500/LD345" driver="lanier-ld345" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 5000B/LD050B" driver="lanier-ld050b" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 5000/LD050" driver="lanier-ld050" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 5500/LD255" driver="lanier-ld255" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 6500/LD265" driver="lanier-ld265" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 7500/LD275" driver="lanier-ld275" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lanier MP 9000/LD190" driver="lanier-ld190" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Lexmark 4076" driver="lexmark-4076" manufacturer="Lexmark" model="500" parameters="pcl_inkjet_params" /> - <printer translate="name" name="Lexmark Optra E" driver="lexmark-optra_e" manufacturer="Lexmark" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Lexmark Optra E+" driver="lexmark-optra_eplus" manufacturer="Lexmark" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Lexmark Optra E220" driver="lexmark-optra_e220" manufacturer="Lexmark" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Lexmark Optra E321" deviceid="MFG:Lexmark International;MDL:Lexmark E321;DES:Lexmark E321;CMD:PCL 5 Emulation, PostScript Level 3 For Mac Emulation, NPAP, PJL;" driver="lexmark-optra_e321" manufacturer="Lexmark" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Lexmark Optra E323" driver="lexmark-optra_e323" manufacturer="Lexmark" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Lexmark Valuewriter 300" driver="lexmark-vw_300" manufacturer="Lexmark" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Minolta PagePro 6" deviceid="MFG:MINOLTA;MDL:PagePro 6;CMD:HP ENHANCED PCL5;" driver="minolta-pp_6" manufacturer="Minolta" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Minolta PagePro 6e" driver="minolta-pp_6e" manufacturer="Minolta" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Minolta PagePro 6ex" deviceid="MFG:Minolta;MDL:PagePro 6e;CMD:HP ENHANCED PCL5e,PJL,WinStyler;" driver="minolta-pp_6ex" manufacturer="Minolta" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Minolta PagePro 8" deviceid="MFG:MINOLTA;MDL:PagePro 8;CMD:HP ENHANCED PCL6,PJL;" driver="minolta-pp_8" manufacturer="Minolta" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="Minolta PagePro 8L" deviceid="MFG:Minolta;MDL:PagePro 8L;CMD:PrintGear;PCL;PLJ;" driver="minolta-pp_8l" manufacturer="Minolta" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Minolta PagePro 1100" deviceid="MFG:MINOLTA;MDL:PagePro 1100;CMD:HP ENHANCED PCL6,PJL;" driver="minolta-pp_1100" manufacturer="Minolta" model="62" parameters="pcl_laser_params" /> - <printer translate="name" name="NEC SuperScript 660i" driver="nec-ssc_660i" manufacturer="NEC" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="NEC SuperScript 860" driver="nec-ssc_860" manufacturer="NEC" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="NEC SuperScript 870" deviceid="MFG:NEC;MDL:SuperScript 870;DES:SuperScript 870;CMD:PrintGear,PCL,PJL;" driver="nec-ssc_870" manufacturer="NEC" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="NEC SuperScript 1260" driver="nec-ssc_1260" manufacturer="NEC" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="NEC SuperScript 1400" driver="nec-ssc_1400" manufacturer="NEC" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="NEC SuperScript 1800" deviceid="MFG:NEC;MDL:SuperScript 1800;CMD:PCL6,PCL5E;" driver="nec-ssc_1800" manufacturer="NEC" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG 10515/10518/10512" driver="nrg-10512" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG 2205/2238/2212" driver="nrg-2212" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG 2705/2738/2712" driver="nrg-2712" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG 3205/3238/3212" driver="nrg-3212" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG 3525/3508/3502" driver="nrg-3502" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG 3545/3518/3532" driver="nrg-3532" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG 4525/4508/4502" driver="nrg-4502" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG 4545/4518/4532" driver="nrg-4532" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG 6002/6005/6008" driver="nrg-6008" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG 7502/7505/7508" driver="nrg-7508" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG 9005/9008/9002" driver="nrg-9002" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm415" driver="nrg-dsm415" manufacturer="NRG" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm615" driver="nrg-dsm615" manufacturer="NRG" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm616" driver="nrg-dsm616" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm618" driver="nrg-dsm618" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm618d" driver="nrg-dsm618d" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm620" driver="nrg-dsm620" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm620d" driver="nrg-dsm620d" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm622" driver="nrg-dsm622" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm627" driver="nrg-dsm627" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm632" driver="nrg-dsm632" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm635" driver="nrg-dsm635" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm645" driver="nrg-dsm645" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm651" driver="nrg-dsm651" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm660" driver="nrg-dsm660" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm675" driver="nrg-dsm675" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm725" driver="nrg-dsm725" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm730" driver="nrg-dsm730" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm735" driver="nrg-dsm735" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG DSm745" driver="nrg-dsm745" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 1100" driver="nrg-mp_1100" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 1350" driver="nrg-mp_1350" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 1600" driver="nrg-mp_1600" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 161" driver="nrg-mp_161" manufacturer="NRG" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 2000" driver="nrg-mp_2000" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 2500" driver="nrg-mp_2500" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 2510" driver="nrg-mp_2510" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 2550" driver="nrg-mp_2550" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 2550B" driver="nrg-mp_2550b" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 3010" driver="nrg-mp_3010" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 3350" driver="nrg-mp_3350" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 3350B" driver="nrg-mp_3350b" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 3500" driver="nrg-mp_3500" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 4000" driver="nrg-mp_4000" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 4000B" driver="nrg-mp_4000b" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 4500" driver="nrg-mp_4500" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 5000" driver="nrg-mp_5000" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 5000B" driver="nrg-mp_5000b" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 5500" driver="nrg-mp_5500" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 6500" driver="nrg-mp_6500" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 7500" driver="nrg-mp_7500" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="NRG MP 9000" driver="nrg-mp_9000" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki B401d" driver="oki-b401d" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki B430" driver="oki-b430" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki B4350" driver="oki-b4350" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki OL400" driver="okidata-ol400" manufacturer="Oki" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki OL400e" driver="okidata-ol400e" manufacturer="Oki" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki OL400ex" driver="okidata-ol400ex" manufacturer="Oki" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki OL410e" driver="okidata-ol410e" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki OL600e" driver="okidata-ol600e" manufacturer="Oki" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki OL610e/S" driver="okidata-ol610e_s" manufacturer="Oki" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki OL800" driver="okidata-ol800" manufacturer="Oki" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki OL810ex" driver="okidata-ol810ex" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki Okipage 6e" deviceid="MFG:OKI DATA CORP;MDL:OKIDATA OKIPAGE 6e;DES:OKIDATA OKIPAGE 6e (HP4P);CMD:ENHANCED PCL5,PJL,EPSONFX,IBMPPR,HIPERWINDOWS;" driver="okidata-okp_6e" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki Okipage 6ex" deviceid="MFG:OKI DATA CORP;MDL:OKIDATA OKIPAGE 6ex;DES:OKIDATA OKIPAGE 6ex (HP4P);CMD:ENHANCED PCL5,PJL,EPSONFX,IBMPR,HIPERWINDOWS;" driver="okidata-okp_6ex" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki Okipage 8p" deviceid="MFG:OKI DATA CORP;MDL:OKIPAGE 8p;DES:OKIPAGE 8p;CMD:PJL,PCLXL,PCL,EPSONFX,IBMPPR;" driver="okidata-okp_8p" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki Okipage 10e" deviceid="MFG:OKI DATA CORP;MDL:OKIPAGE 10e;DES:OKIPAGE 10e;CMD:PJL,PCLXL,PCL,EPSONFX,IBMPPR;" driver="okidata-okp_10e" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki Okipage 10ex" deviceid="MFG:OKI DATA CORP;MDL:OKIPAGE 10ex;DES:OKIPAGE 10ex;CMD:PJL,PCLXL,PCL,EPSONFX,IBMPPR;" driver="okidata-okp_10ex" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki Okipage 14ex" deviceid="MFG:OKI DATA CORP;MDL:OKIPAGE 14ex;DES:OKIPAGE 14ex;CMD:PJL,PCLXL,PCL,EPSONFX,IBMPPR;" driver="okidata-okp_14ex" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Oki Super 6e" deviceid="MFG:OKI DATA CORP;MDL:OKIPAGE 14ex;DES:OKIPAGE 14ex;CMD:PJL,PCLXL,PCL,EPSONFX,IBMPPR;" driver="okidata-super_6e" manufacturer="Oki" model="4" parameters="pcl_laser_params" /> - <printer translate="name" name="Olivetti JP350S" driver="olivetti-jp350s" manufacturer="Olivetti" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Olivetti PG 306" driver="olivetti-pg_306" manufacturer="Olivetti" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="PCPI 1030" driver="pcpi-1030" manufacturer="PCPI" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Panasonic KX-P4410" driver="panasonic-kx-p4410" manufacturer="Panasonic" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Panasonic KX-P4450" driver="panasonic-kx-p4450" manufacturer="Panasonic" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="Panasonic KX-P6150" driver="panasonic-kx-p6150" manufacturer="Panasonic" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Panasonic KX-P6500" deviceid="MFG:Panasonic;MDL:KX-P6500;DES:(no such line for this device);CMD:GDI;" driver="panasonic-kx-p6500" manufacturer="Panasonic" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Raven LP-410" driver="raven-lp-410" manufacturer="Raven" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 1022" driver="ricoh-afc_1022" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 1027" driver="ricoh-afc_1027" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 1032" driver="ricoh-afc_1032" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 1035" driver="ricoh-afc_1035" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 1045" driver="ricoh-afc_1045" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 1060" driver="ricoh-afc_1060" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 1075" driver="ricoh-afc_1075" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 1515" driver="ricoh-afc_1515" manufacturer="Ricoh" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2015" driver="ricoh-afc_2015" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2016" driver="ricoh-afc_2016" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2018" driver="ricoh-afc_2018" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2018D" driver="ricoh-afc_2018d" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2020" driver="ricoh-afc_2020" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2020D" driver="ricoh-afc_2020d" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2022" driver="ricoh-afc_2022" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2027" driver="ricoh-afc_2027" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2032" driver="ricoh-afc_2032" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2035" driver="ricoh-afc_2035" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2035e" driver="ricoh-afc_2035e" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2045" driver="ricoh-afc_2045" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2045e" driver="ricoh-afc_2045e" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2051" driver="ricoh-afc_2051" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2060" driver="ricoh-afc_2060" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2075" driver="ricoh-afc_2075" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2090" driver="ricoh-afc_2090" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 2105" driver="ricoh-afc_2105" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 220" driver="ricoh-afc_220" manufacturer="Ricoh" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 3025" driver="ricoh-afc_3025" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 3030" driver="ricoh-afc_3030" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 3035" driver="ricoh-afc_3035" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 3045" driver="ricoh-afc_3045" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 401" driver="ricoh-afc_401" manufacturer="Ricoh" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio 700" driver="ricoh-afc_700" manufacturer="Ricoh" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 1100" driver="ricoh-afc_mp_1100" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 1350" driver="ricoh-afc_mp_1350" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 1600" driver="ricoh-afc_mp_1600" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 161" driver="ricoh-afc_mp_161" manufacturer="Ricoh" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 2000" driver="ricoh-afc_mp_2000" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 2500" driver="ricoh-afc_mp_2500" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 2510" driver="ricoh-afc_mp_2510" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 2550" driver="ricoh-afc_mp_2550" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 2550B" driver="ricoh-afc_mp_2550b" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 3010" driver="ricoh-afc_mp_3010" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 3350" driver="ricoh-afc_mp_3350" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 3350B" driver="ricoh-afc_mp_3350b" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 3500" driver="ricoh-afc_mp_3500" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 4000" driver="ricoh-afc_mp_4000" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 4000B" driver="ricoh-afc_mp_4000b" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 4500" driver="ricoh-afc_mp_4500" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 5000" driver="ricoh-afc_mp_5000" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 5000B" driver="ricoh-afc_mp_5000b" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 5500" driver="ricoh-afc_mp_5500" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 6500" driver="ricoh-afc_mp_6500" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 7500" driver="ricoh-afc_mp_7500" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Ricoh Aficio MP 9000" driver="ricoh-afc_mp_9000" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-85" driver="samsung-ml-85" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-1250" driver="samsung-ml-1250" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <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" /> - <printer translate="name" name="Samsung ML-1450PS" driver="samsung-ml-1450ps" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <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" /> - <printer translate="name" name="Samsung ML-1651N" driver="samsung-ml-1651n" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-1750" driver="samsung-ml-1750" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-2150" driver="samsung-ml-2150" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-2150PS" driver="samsung-ml-2150ps" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-2151N" driver="samsung-ml-2151n" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-2151NPS" driver="samsung-ml-2151nps" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-2152W" driver="samsung-ml-2152w" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-2152WPS" driver="samsung-ml-2152wps" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-2250" driver="samsung-ml-2250" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-2550" driver="samsung-ml-2550" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-2551N" driver="samsung-ml-2551n" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-2552W" driver="samsung-ml-2552w" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-4600" driver="samsung-ml-4600" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-5000a" driver="samsung-ml-5000a" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-6000" driver="samsung-ml-6000" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-6100" driver="samsung-ml-6100" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-7000" driver="samsung-ml-7000" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-7000N" driver="samsung-ml-7000n" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-7000P" driver="samsung-ml-7000p" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-7050" driver="samsung-ml-7050" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-7300" driver="samsung-ml-7300" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung ML-7300N" driver="samsung-ml-7300n" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung QL-5100A" driver="samsung-ql-5100a" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Samsung QL-6050" deviceid="MFG:Samsung;MDL:6050;CMD:PCL6;" driver="samsung-ql-6050" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 2522" driver="savin-2522" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 2527" driver="savin-2527" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 2532" driver="savin-2532" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 2535/2235" driver="savin-2235" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 2545/2245" driver="savin-2245" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 2560" driver="savin-2560" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 2575" driver="savin-2575" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 3515" driver="savin-3515" manufacturer="Savin" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 40105" driver="savin-40105" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 4015" driver="savin-4015" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 4018" driver="savin-4018" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 4018d" driver="savin-4018d" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 4022" driver="savin-4022" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 4027" driver="savin-4027" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 4035/4135g" driver="savin-4135g" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 4035e/4135eG" driver="savin-4135eg" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 4045/4145g" driver="savin-4145g" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 4045e/4145eG" driver="savin-4145eg" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 4051" driver="savin-4051" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 4060" driver="savin-4060" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 4075" driver="savin-4075" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 4090" driver="savin-4090" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 7025" driver="savin-7025" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8016" driver="savin-8016" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8020" driver="savin-8020" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8020d" driver="savin-8020d" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8025" driver="savin-8025" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8025e" driver="savin-8025e" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8030" driver="savin-8030" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8030e" driver="savin-8030e" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8035/8035g" driver="savin-8035g" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8035e" driver="savin-8035e" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8045/8045g" driver="savin-8045g" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8045e" driver="savin-8045e" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8055" driver="savin-8055" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8065" driver="savin-8065" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8075" driver="savin-8075" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8090" driver="savin-8090" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8110" driver="savin-8110" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 8135" driver="savin-8135" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 816" driver="savin-816" manufacturer="Savin" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 9016" driver="savin-9016" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 9021d" driver="savin-9021d" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 9025" driver="savin-9025" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 9025b" driver="savin-9025b" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 9033" driver="savin-9033" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 9033b" driver="savin-9033b" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 9040" driver="savin-9040" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 9040b" driver="savin-9040b" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 9050" driver="savin-9050" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Savin 9050b" driver="savin-9050b" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> - <printer translate="name" name="Seiko SpeedJET 200" driver="seiko-sj_200" manufacturer="Seiko" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Sharp AR-161" deviceid="MFG:SHARP;MDL:AR-160/200 series;DES:None;CMD:PCL;" driver="sharp-ar-161" manufacturer="Sharp" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Sharp AR-M257" driver="sharp-ar-m257" manufacturer="Sharp" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Sony IJP-V100" deviceid="MFG:Sony;MDL:All-in-One IJP-V100;CMD:MLC,PCL,PML;" driver="sony-ijp-v100" manufacturer="Sony" model="601" parameters="pcl_inkjet_params" /> - <printer translate="name" name="Star LS-04" driver="star-ls-04" manufacturer="Star" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Star LaserPrinter 8" driver="star-lp_8" manufacturer="Star" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Tally MT908" driver="tally-mt908" manufacturer="Tally" model="3" parameters="pcl_laser_params" /> - <printer translate="name" name="Tektronix Phaser 750DP" driver="tektronix-phaser_750dp" manufacturer="Tektronix" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Tektronix Phaser 750DX" driver="tektronix-phaser_750dx" manufacturer="Tektronix" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Tektronix Phaser 750N" driver="tektronix-phaser_750n" manufacturer="Tektronix" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Tektronix Phaser 750P" driver="tektronix-phaser_750p" manufacturer="Tektronix" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Able 1406" driver="xerox-able_1406" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox DocuPrint 4508" driver="xerox-dp_4508" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox DocuPrint C20" driver="xerox-dp_c20" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox DocuPrint N4512" driver="xerox-dp_n4512" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox DocuPrint N4512PS" driver="xerox-dp_n4512ps" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox DocuPrint P12" deviceid="MFG:XEROX;MDL:DocuPrint P12;DES:Xerox DocuPrint P12;CMD:PrintGear,PCL,PJL;" driver="xerox-dp_p12" manufacturer="Xerox" model="2" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox DocuPrint P1202" deviceid="MFG:Xerox;MDL:DocuPrint;CMD:PCL5E;" driver="xerox-dp_p1202" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox DocuPrint P8e" deviceid="MFG:Xerox;MDL:DocuPrint P8e;CMD:PCL5E2;" driver="xerox-dp_p8e" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Document Centre 400" driver="xerox-dc_400" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 2135" driver="xerox-phaser_2135" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 4400B" driver="xerox-phaser_4400b" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 4400DT" driver="xerox-phaser_4400dt" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 4400DX" driver="xerox-phaser_4400dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 4400N" driver="xerox-phaser_4400n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 4500B" driver="xerox-phaser_4500b" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 4500DT" driver="xerox-phaser_4500dt" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 4500DX" driver="xerox-phaser_4500dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 4500N" driver="xerox-phaser_4500n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 4510B" driver="xerox-phaser_4510b" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 4510DT" driver="xerox-phaser_4510dt" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 4510DX" driver="xerox-phaser_4510dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 4510N" driver="xerox-phaser_4510n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 5500B" driver="xerox-phaser_5500b" manufacturer="Xerox" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 5500DN" driver="xerox-phaser_5500dn" manufacturer="Xerox" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 5500DT" driver="xerox-phaser_5500dt" manufacturer="Xerox" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 5500DX" driver="xerox-phaser_5500dx" manufacturer="Xerox" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 5500N" driver="xerox-phaser_5500n" manufacturer="Xerox" model="64" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6130N" driver="xerox-phaser_6130n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6180DN" driver="xerox-phaser_6180dn" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6180MFP-D" driver="xerox-phaser_6180mfp-d" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6200B" driver="xerox-phaser_6200b" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6200DP" driver="xerox-phaser_6200dp" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6200DX" driver="xerox-phaser_6200dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6200N" driver="xerox-phaser_6200n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6250B" driver="xerox-phaser_6250b" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6250DP" driver="xerox-phaser_6250dp" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6250DT" driver="xerox-phaser_6250dt" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6250DX" driver="xerox-phaser_6250dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6250N" driver="xerox-phaser_6250n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6300DN" driver="xerox-phaser_6300dn" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6300N" driver="xerox-phaser_6300n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6350DP" driver="xerox-phaser_6350dp" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6350DT" driver="xerox-phaser_6350dt" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6350DX" driver="xerox-phaser_6350dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6360DN" driver="xerox-phaser_6360dn" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 6360DX" driver="xerox-phaser_6360dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7300B" driver="xerox-phaser_7300b" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7300DN" driver="xerox-phaser_7300dn" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7300DT" driver="xerox-phaser_7300dt" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7300DX" driver="xerox-phaser_7300dx" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7300N" driver="xerox-phaser_7300n" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7400DN" driver="xerox-phaser_7400dn" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7400DT" driver="xerox-phaser_7400dt" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7400DX" driver="xerox-phaser_7400dx" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7400DXF" driver="xerox-phaser_7400dxf" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7400N" driver="xerox-phaser_7400n" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7700DN" driver="xerox-phaser_7700dn" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7700DX" driver="xerox-phaser_7700dx" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7700GX" driver="xerox-phaser_7700gx" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7750B" driver="xerox-phaser_7750b" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7750DN" driver="xerox-phaser_7750dn" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7750DXF" driver="xerox-phaser_7750dxf" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7750GX" driver="xerox-phaser_7750gx" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7760DN" driver="xerox-phaser_7760dn" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7760DX" driver="xerox-phaser_7760dx" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 7760GX" driver="xerox-phaser_7760gx" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 8400B" driver="xerox-phaser_8400b" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 8400BD" driver="xerox-phaser_8400bd" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 8400DP" driver="xerox-phaser_8400dp" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 8400DX" driver="xerox-phaser_8400dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 8400N" driver="xerox-phaser_8400n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 8500DN" driver="xerox-phaser_8500dn" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 8500N" driver="xerox-phaser_8500n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 8550DP" driver="xerox-phaser_8550dp" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 8550DT" driver="xerox-phaser_8550dt" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 8550DX" driver="xerox-phaser_8550dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox Phaser 8560DN" driver="xerox-phaser_8560dn" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox WorkCentre 7345" driver="xerox-workcentre_7345" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> - <printer translate="name" name="Xerox WorkCentre M118" deviceid="MFG:XEROX;MDL:WorkCentre M118;DES:XEROX WorkCentre M118;" driver="xerox-wc_m118" manufacturer="Xerox" model="61" parameters="pcl_laser_params" /> - </family> - <family name="lexmark"> - <parameters name="standard_params"> - <parameter type="float" name="MagentaGamma">0.95</parameter> - <parameter type="float" name="Gamma">0.5</parameter> - <parameter type="float" name="Density">2.0</parameter> - </parameters> - <printer translate="name" name="Compaq IJ1200" driver="compaq-ij1200" manufacturer="Compaq" model="10042" parameters="standard_params" /> - <printer translate="name" name="Lexmark X73" deviceid="MFG:Lexmark;MDL:Lexmark X73;DES:Lexmark X73;CMD:LNPAP;" driver="lexmark-x73" manufacturer="Lexmark" model="10042" parameters="standard_params" /> - <printer translate="name" name="Lexmark Z42" deviceid="MFG:Lexmark;MDL:Lexmark Z42;DES:Lexmark Z42;CMD:LNPAP;" driver="lexmark-z42" manufacturer="Lexmark" model="10042" parameters="standard_params" /> - <printer translate="name" name="Lexmark Z43" driver="lexmark-z43" manufacturer="Lexmark" model="10042" parameters="standard_params" /> - <printer translate="name" name="Lexmark Z52" deviceid="MFG:Lexmark;MDL:Lexmark Z52;DES:Lexmark Z52;" driver="lexmark-z52" manufacturer="Lexmark" model="10052" parameters="standard_params" /> - <printer translate="name" name="Lexmark Z53" driver="lexmark-z53" manufacturer="Lexmark" model="10052" parameters="standard_params" /> - </family> - <family name="dyesub"> - <parameters name="nativecopies"> - <parameter type="boolean" name="NativeCopies">1</parameter> - </parameters> - <printer translate="name" name="Olympus P-10" driver="olympus-p10" manufacturer="Olympus" model="2" /> - <printer translate="name" name="Olympus P-11" driver="olympus-p11" manufacturer="Olympus" model="2" /> - <printer translate="name" name="Olympus P-200" driver="olympus-p200" manufacturer="Olympus" model="4" /> - <printer translate="name" name="Olympus P-300" driver="olympus-p300" manufacturer="Olympus" model="0" /> - <printer translate="name" name="Olympus P-300E" driver="olympus-p300e" manufacturer="Olympus" model="0" /> - <printer translate="name" name="Olympus P-300U" driver="olympus-p300u" manufacturer="Olympus" model="0" /> - <printer translate="name" name="Olympus P-330E" driver="olympus-p330e" manufacturer="Olympus" model="0" /> - <printer translate="name" name="Olympus P-330NE" driver="olympus-p330ne" manufacturer="Olympus" model="0" /> - <printer translate="name" name="Olympus P-400" driver="olympus-p400" manufacturer="Olympus" model="1" /> - <printer translate="name" name="Olympus P-440" driver="olympus-p440" manufacturer="Olympus" model="3" /> - <printer translate="name" name="Olympus P-S100" driver="olympus-ps100" manufacturer="Olympus" model="20" parameters="nativecopies" /> - <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" parameters="nativecopies" /> - <printer translate="name" name="Canon CP-100" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-100;CLS:PRINTER;DES:Canon CP-100;VER:1.00;" driver="canon-cp100" manufacturer="Canon" model="1000" parameters="nativecopies" /> - <printer translate="name" name="Canon CP-200" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-200;CLS:PRINTER;DES:Canon CP-200;VER:1.00;" driver="canon-cp200" manufacturer="Canon" model="1000" parameters="nativecopies" /> - <printer translate="name" name="Canon CP-220" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-220;CLS:PRINTER;DES:Canon CP-220;VER:1.00;" driver="canon-cp220" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon CP-300" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-300;CLS:PRINTER;DES:Canon CP-300;VER:1.00;" driver="canon-cp300" manufacturer="Canon" model="1000" parameters="nativecopies" /> - <printer translate="name" name="Canon CP-330" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-330;CLS:PRINTER;DES:Canon CP-330;VER:1.00;" driver="canon-cp330" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP400" deviceid="MFG:Canon;CMD:Raster3;MDL:CP400;CLS:PRINTER;DES:Canon CP400;VER:1.00;" driver="canon-cp400" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP500" deviceid="MFG:Canon;CMD:Raster3;MDL:CP500;CLS:PRINTER;DES:Canon CP500;VER:1.00;" driver="canon-cp500" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP510" deviceid="MFG:Canon;CMD:Raster3;MDL:CP510;CLS:PRINTER;DES:Canon CP510;VER:1.00;" driver="canon-cp510" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP520" driver="canon-cp520" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP530" deviceid="MFG:Canon;CMD:Raster3;MDL:CP530;CLS:PRINTER;DES:Canon CP530;VER:1.00;" driver="canon-cp530" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP600" deviceid="MFG:Canon;CMD:Raster3;MDL:CP600;CLS:PRINTER;DES:Canon CP600;VER:1.00;" driver="canon-cp600" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP710" deviceid="MFG:Canon;CMD:Raster3;MDL:CP710;CLS:PRINTER;DES:Canon CP710;VER:1.00;" driver="canon-cp710" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP720" deviceid="MFG:Canon;CMD:Raster3;MDL:CP720;CLS:PRINTER;DES:Canon CP720;VER:1.00;" driver="canon-cp720" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP730" deviceid="MFG:Canon;CMD:Raster3;MDL:CP730;CLS:PRINTER;DES:Canon CP730;VER:1.00;" driver="canon-cp730" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP740" driver="canon-cp740" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP750" deviceid="MFG:Canon;CMD:Raster3;MDL:CP750;CLS:PRINTER;DES:Canon CP750;VER:1.00;" driver="canon-cp750" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP760" deviceid="MFG:Canon;CMD:Raster3;MDL:CP760;CLS:PRINTER;DES:Canon CP760;VER:1.00;" driver="canon-cp760" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP770" driver="canon-cp770" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP780" deviceid="MFG:Canon;CMD:Raster3;MDL:CP780;CLS:PRINTER;DES:Canon CP780;VER:1.00;" driver="canon-cp780" manufacturer="Canon" model="1001" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP790" deviceid="MFG:Canon;CMD:Raster3;MDL:CP790;CLS:PRINTER;DES:Canon CP790;VER:1.00;" driver="canon-cp790" manufacturer="Canon" model="1008" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP800" deviceid="MFG:Canon;CMD:Raster3;MDL:CP800;CLS:PRINTER;DES:Canon CP800;VER:1.00;" driver="canon-cp800" manufacturer="Canon" model="1009" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP810" deviceid="MFG:Canon;CMD:Raster3;MDL:CP810;CLS:PRINTER;DES:Canon CP810;VER:3.05;" driver="canon-cp810" manufacturer="Canon" model="1009" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP820" deviceid="MFG:Canon;CMD:Raster3;MDL:CP820;CLS:PRINTER;DES:Canon CP820;VER:1.00;CID:1284_CID_CA_YCC_ICP;" driver="canon-cp820" manufacturer="Canon" model="1011" parameters="nativecopies"/> - <printer translate="name" name="Canon SELPHY CP900" deviceid="MFG:Canon;CMD:Raster3;MDL:CP900;CLS:PRINTER;DES:Canon CP900;VER:5.77;" driver="canon-cp900" manufacturer="Canon" model="1010" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP910" deviceid="MFG:Canon;CMD:Raster3;MDL:CP910;CLS:PRINTER;DES:Canon CP910;VER:1.00;CID:CA_YCC_ICP;" driver="canon-cp910" manufacturer="Canon" model="1011" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP1000" deviceid="MFG:Canon;CMD:Raster3;MDL:CP1000;CLS:PRINTER;DES:Canon CP1000;VER:1.00;CID:CA_YCC_ICP;" driver="canon-cp1000" manufacturer="Canon" model="1011" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY CP1200" deviceid="MFG:Canon;CMD:Raster3;MDL:SELPHY CP1200;CLS:PRINTER;DES:Canon SELPHY CP1200;VER:1.00;CID:CA_YCC_ICP;" driver="canon-cp1200" manufacturer="Canon" model="1011" parameters="nativecopies"/> - <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" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY ES2" deviceid="MFG:Canon;CMD:Raster3;MDL:ES2;CLS:PRINTER;DES:Canon SELPHY ES2;VER:1.00;" driver="canon-es2" manufacturer="Canon" model="1005" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY ES3" deviceid="MFG:Canon;CMD:Raster3;MDL:ES3;CLS:PRINTER;DES:Canon SELPHY ES3;VER:1.00;" driver="canon-es3" manufacturer="Canon" model="1006" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY ES20" driver="canon-es20" manufacturer="Canon" model="1005" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY ES30" deviceid="MFG:Canon;CMD:Raster3;MDL:ES30;CLS:PRINTER;DES:Canon SELPHY ES30;VER:1.00;" driver="canon-es30" manufacturer="Canon" model="1006" parameters="nativecopies" /> - <printer translate="name" name="Canon SELPHY ES40" deviceid="MFG:Canon;CMD:Raster3;MDL:ES40;CLS:PRINTER;DES:Canon SELPHY ES40;VER:1.00;" driver="canon-es40" manufacturer="Canon" model="1007" parameters="nativecopies" /> - <printer translate="name" name="CIAAT Brava 21" deviceid="MFG:CIAAT;CMD:SUPCC;MDL:BRAVA21;CLS:PRINTER;DES:Thermal Dye Photo Printer;" driver="ciaat-brava-21" manufacturer="CIAAT" model="5005" parameters="nativecopies" /> - <printer translate="name" name="Citizen CX" driver="citizen-cx" deviceid="MANUFACTURER:CITIZEN SYSTEMS ;MODEL:CX;" manufacturer="Citizen" model="6000" parameters="nativecopies" /> - <printer translate="name" name="Citizen CX-W" driver="citizen-cx-w" manufacturer="Citizen" model="6001" parameters="nativecopies" /> - <printer translate="name" name="Citizen CY" driver="citizen-cy" manufacturer="Citizen" model="6002" parameters="nativecopies" /> - <printer translate="name" name="Citizen CW-01" driver="citizen-cw-01" manufacturer="Citizen" model="6005" parameters="nativecopies" /> - <printer translate="name" name="Citizen OP900" driver="citizen-op900" manufacturer="Citizen" model="6005" parameters="nativecopies" /> - <printer translate="name" name="Citizen CW-02" driver="citizen-cw-02" manufacturer="Citizen" model="6000" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Citizen OP900II" driver="citizen-op900ii" manufacturer="Citizen" model="6000" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Dai Nippon Printing DS40" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DS40;" driver="dnp-ds40" manufacturer="Dai Nippon Printing" model="6000" parameters="nativecopies" /> - <printer translate="name" name="Dai Nippon Printing DS80" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DS80;" driver="dnp-ds80" manufacturer="Dai Nippon Printing" model="6001" parameters="nativecopies" /> - <printer translate="name" name="Dai Nippon Printing DS80DX" driver="dnp-ds80dx" manufacturer="Dai Nippon Printing" model="6006" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Dai Nippon Printing DS620" driver="dnp-ds620" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DP-DS620;" manufacturer="Dai Nippon Printing" model="6003" parameters="nativecopies" /> - <printer translate="name" name="Dai Nippon Printing DS820" driver="dnp-ds820" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DP-DS820;" manufacturer="Dai Nippon Printing" model="6007" parameters="nativecopies" /> - <printer translate="name" name="Dai Nippon Printing DSRX1" driver="dnp-dsrx1" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DS-RX1;" manufacturer="Dai Nippon Printing" model="6002" parameters="nativecopies" /> - <printer translate="name" name="Dai Nippon Printing SL10" driver="dnp-sl10" manufacturer="Dai Nippon Printing" model="2005" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Fujifilm ASK-300" driver="fujifilm-ask-300" manufacturer="Fujifilm" model="4112" parameters="nativecopies" /> - <printer translate="name" name="Fujifilm FinePix-NX-500" driver="fujifilm-nx500" manufacturer="Fujifilm" model="3002" /> - <printer translate="name" name="Fujifilm Printpix-CX-400" driver="fujifilm-cx400" manufacturer="Fujifilm" model="3000" /> - <printer translate="name" name="Fujifilm Printpix-CX-550" driver="fujifilm-cx550" manufacturer="Fujifilm" model="3001" /> - <printer translate="name" name="Kodak 305" deviceid="MFG:KODAK;CMD:KODAK305;MDL:305 Photo Printer;CLS:PRINTER;DES:KODAK 305 Photo Printer" driver="kodak-305" manufacturer="Kodak" model="4108" parameters="nativecopies" /> - <printer translate="name" name="Kodak 605" deviceid="MFG:Eastman Kodak Company;CMD:SUPCC;MCL:KODAK 605 Photo Printer;CLS:PRINTER;DES:Thermal Dye Photo Printer;" driver="kodak-605" manufacturer="Kodak" model="4003" parameters="nativecopies" /> - <printer translate="name" name="Kodak 1400" deviceid="MFG:Eastman Kodak Company;CMD:EK1;MDL: 1400 Printer;CLS:Printer;DES:Kodak 1400 Printer;`" driver="kodak-1400" manufacturer="Kodak" model="4004" parameters="nativecopies" /> - <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" parameters="nativecopies" /> - <printer translate="name" name="Kodak 6850" deviceid="MFG:Eastman Kodak Company;CMD:ESC;MDL:Photo Printer 6850;CLS:PRINTER;DES:KODAK Photo Printer 6850;" driver="kodak-6850" manufacturer="Kodak" model="4002" parameters="nativecopies" /> - <printer translate="name" name="Kodak 7000" driver="kodak-7000" manufacturer="Kodak" model="4008" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Kodak 7010" driver="kodak-7010" manufacturer="Kodak" model="4008" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Kodak 7015" driver="kodak-7015" manufacturer="Kodak" model="4009" parameters="nativecopies">EXPERIMENTAL</printer> - <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" parameters="nativecopies" /> - <printer translate="name" name="Kodak 8500" driver="kodak-8500" manufacturer="Kodak" model="4100" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Kodak 8800" driver="kodak-8800" manufacturer="Kodak" model="4006" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Kodak 8810" driver="kodak-8810" manufacturer="Kodak" model="4007" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Kodak 9810" driver="kodak-9810" manufacturer="Kodak" model="4006" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Kodak EasyShare-G600-Printer-Dock" driver="kodak-g600-dock" manufacturer="Kodak" model="4000" /> - <printer translate="name" name="Kodak Easyshare-Printer-Dock" driver="kodak-dock" manufacturer="Kodak" model="4000" /> - <printer translate="name" name="Kodak PD-4000" driver="kodak-pd-4000" manufacturer="Kodak" model="4000" /> - <printer translate="name" name="Kodak PD-6000" driver="kodak-pd-6000" manufacturer="Kodak" model="4000" /> - <printer translate="name" name="Kodak Photo-Printer" driver="kodak-photo-printer" manufacturer="Kodak" model="4000" /> - <printer translate="name" name="Kodak Photo-Printer-500" driver="kodak-photo-printer-500" manufacturer="Kodak" model="4000" /> - <printer translate="name" name="Kodak Printer-Dock-Plus" driver="kodak-dock-plus" manufacturer="Kodak" model="4000" /> - <printer translate="name" name="Kodak Printer-Dock-Plus-S3" driver="kodak-dock-plus-s3" manufacturer="Kodak" model="4000" /> - <printer translate="name" name="Mitsubishi CP-3020D" driver="mitsubishi-3020d" manufacturer="Mitsubishi" model="4101" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Mitsubishi CP-3020DA" driver="mitsubishi-3020da" manufacturer="Mitsubishi" model="4102" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Mitsubishi CP-3020DAE" driver="mitsubishi-3020dae" manufacturer="Mitsubishi" model="4102" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Mitsubishi CP-3020DE" driver="mitsubishi-3020de" manufacturer="Mitsubishi" model="4101" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Mitsubishi CP-3020DU" driver="mitsubishi-3020du" manufacturer="Mitsubishi" model="4101" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Mitsubishi CP-3800DW" driver="mitsubishi-cp-3800dw" manufacturer="Mitsubishi" model="6001" parameters="nativecopies" /> - <printer translate="name" name="Mitsubishi CP-9500DW" driver="mitsubishi-9500dw" manufacturer="Mitsubishi" model="4115" parameters="nativecopies" /> - <printer translate="name" name="Mitsubishi CP-9550D" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP9550D ;CLS:PRINTER;DES:MITSUBISHI CP9550D" driver="mitsubishi-9550d" manufacturer="Mitsubishi" model="4103" parameters="nativecopies" /> - <printer translate="name" name="Mitsubishi CP-9550DW" driver="mitsubishi-9550dw" manufacturer="Mitsubishi" model="4103" parameters="nativecopies" /> - <printer translate="name" name="Mitsubishi CP-9550DW-S" driver="mitsubishi-9550dw-s" manufacturer="Mitsubishi" model="4111" parameters="nativecopies" /> - <printer translate="name" name="Mitsubishi CP-9550DZ" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP9550DZ;CLS:PRINTER;DES:MITSUBISHI CP9550DZ;" driver="mitsubishi-9550dz" manufacturer="Mitsubishi" model="4111" parameters="nativecopies" /> - <printer translate="name" name="Mitsubishi CP-9600DW" driver="mitsubishi-9600dw" manufacturer="Mitsubishi" model="4110" parameters="nativecopies" /> - <printer translate="name" name="Mitsubishi CP-9800D" driver="mitsubishi-9800d" manufacturer="Mitsubishi" model="4113" >EXPERIMENTAL</printer> - <printer translate="name" name="Mitsubishi CP-9800DW" driver="mitsubishi-9800dw" manufacturer="Mitsubishi" model="4113" >EXPERIMENTAL</printer> - <printer translate="name" name="Mitsubishi CP-9800DW-S" driver="mitsubishi-9800dw-s" manufacturer="Mitsubishi" model="4113" parameters="nativecopies" /> - <printer translate="name" name="Mitsubishi CP-9800DZ" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP9800DZ;CLS:PRINTER;DES:MITSUBISHI CP9800DZ;" driver="mitsubishi-9800dz" manufacturer="Mitsubishi" model="4113" parameters="nativecopies" /> - <printer translate="name" name="Mitsubishi CP-9810D" driver="mitsubishi-9810d" manufacturer="Mitsubishi" model="4104" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Mitsubishi CP-9810DW" driver="mitsubishi-9810dw" manufacturer="Mitsubishi" model="4104" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Mitsubishi CP-D80DW" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CPD80D;CLS:PRINTER;DES:MITSUBISHI_CPD80D" driver="mitsubishi-d80dw" manufacturer="Mitsubishi" model="4107" parameters="nativecopies" /> - <printer translate="name" name="Mitsubishi CP-D90DW" driver="mitsubishi-d90dw" manufacturer="Mitsubishi" model="4109" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Mitsubishi CP-D70DW" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP60D70D707D;CLS:PRINTER;DES:MITSUBISHI CP60D70D707D" driver="mitsubishi-d70dw" manufacturer="Mitsubishi" model="4105" parameters="nativecopies" /> - <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" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Mitsubishi CP-K60DW-S" driver="mitsubishi-k60dw" manufacturer="Mitsubishi" model="4106" parameters="nativecopies" /> - <printer translate="name" name="Mitsubishi P93D" driverid="MFG:MITSUBISHI;CMD:MEL;MDL:P93D;CLS:PRINTER;DES:MITSUBISHI P93D;" driver="mitsubishi-p93d" manufacturer="Mitsubishi" model="4116" parameters="nativecopies" /> - <printer translate="name" name="Mitsubishi P95D" driverid="MFG:MITSUBISHI;CMD:MEL;MDL:P95D ;CLS:PRINTER;DES:MITSUBISHI P95D ;" driver="mitsubishi-p95d" manufacturer="Mitsubishi" model="4114" parameters="nativecopies" /> - <printer translate="name" name="Shinko CHC-S1245" driver="shinko-chcs1245" manufacturer="Shinko" model="5002" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Shinko CHC-S2145" deviceid="MFG:SHINKO;CMD:SUPCC;MDL:CHC-S2145;CLS:PRINTER;DES:SHINKO CHC-S2145;" driver="shinko-chcs2145" manufacturer="Shinko" model="5001" parameters="nativecopies" /> - <printer translate="name" name="Shinko CHC-S6145" driver="shinko-chcs6145" manufacturer="Shinko" model="5004" parameters="nativecopies" /> - <printer translate="name" name="Shinko CHC-S6245" driver="shinko-chcs6245" manufacturer="Shinko" model="5003" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Shinko CHC-S9045" driver="shinko-chcs9045" manufacturer="Shinko" model="5000" /> - <printer translate="name" name="Sinfonia CHC-S1245/E1" driver="sinfonia-chcs1245" manufacturer="Sinfonia" model="5002" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Sinfonia CHC-S6145/CS2" deviceid="MFG:SINFONIA;CMD:SUPCC;MDL:CHC-S6145;CLS:PRINTER;DES:Thermal Dye Photo Printer;" driver="sinfonia-chcs6145" manufacturer="Sinfonia" model="5004" parameters="nativecopies" /> - <printer translate="name" name="Sinfonia CHC-S6245/CE1" driver="sinfonia-chcs6245" manufacturer="Sinfonia" model="5003" parameters="nativecopies">EXPERIMENTAL</printer> - <printer translate="name" name="Sinfonia S2145/S2" driver="sinfonia-chcs2145" manufacturer="Sinfonia" model="5001" parameters="nativecopies" /> - <printer translate="name" name="Sony UP-DP10" driver="sony-updp10" manufacturer="Sony" model="2000" /> - <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" parameters="nativecopies" /> - <printer translate="name" name="Sony DPP-EX5" driver="sony-dppex5" manufacturer="Sony" model="2002" /> - <printer translate="name" name="Sony DPP-EX7" driver="sony-dppex7" manufacturer="Sony" model="2002" /> - <printer translate="name" name="Sony UP-DR100" driver="sony-updr100" manufacturer="Sony" model="2003" /> - <printer translate="name" name="Sony UP-DR200" driver="sony-updr200" manufacturer="Sony" model="2004" parameters="nativecopies" /> - <printer translate="name" name="Sony UP-CR10L" driver="sony-upcr10l" manufacturer="Sony" model="2005" parameters="nativecopies">EXPERIMENTAL</printer> - </family> - <family name="raw"> - <printer translate="name" name="RAW DATA 16 bit" driver="raw-data-16" manufacturer="" model="0" /> - <printer translate="name" name="RAW DATA 8 bit" driver="raw-data-8" manufacturer="" model="1" /> - </family> - </printdef> -</gutenprint> diff --git a/src/xml/printers/Makefile.am b/src/xml/printers/Makefile.am new file mode 100644 index 0000000..f09bbd3 --- /dev/null +++ b/src/xml/printers/Makefile.am @@ -0,0 +1,55 @@ +## Copyright (C) 2017 Robert Krawitz +## +## 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, 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, see <https://www.gnu.org/licenses/>. + +## Process this file with automake to produce Makefile.in. + +@SET_MAKE@ + +include $(top_srcdir)/scripts/global.mk + +## Variables + +pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/printers + +pkgxmldata_DATA = \ + canon.xml \ + dpl.xml \ + dyesub.xml \ + escp2.xml \ + lexmark.xml \ + pcl.xml \ + ps.xml \ + raw.xml + +AM_TESTS_ENVIRONMENT=STP_MODULE_PATH=$(top_builddir)/src/main/.libs:$(top_builddir)/src/main STP_DATA_PATH=$(top_srcdir)/src/xml +TESTS = check_duplicate_printers + +noinst_PROGRAMS = check_duplicate_printers +check_duplicate_printers_SOURCES = check_duplicate_printers.c +check_duplicate_printers_LDADD = $(GUTENPRINT_LIBS) + +xml-stamp: $(pkgxmldata_DATA) Makefile.am check_duplicate_printers + $(AM_TESTS_ENVIRONMENT) ./check_duplicate_printers + -rm -f $@ $@.tmp + touch $@.tmp + for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done + mv $@.tmp $@ + +all-local: xml-stamp + +dist-hook: xml-stamp +CLEANFILES = xmli18n-tmp.h xml-stamp xml-stamp.tmp + +EXTRA_DIST = $(pkgxmldata_DATA) diff --git a/src/xml/printers/Makefile.in b/src/xml/printers/Makefile.in new file mode 100644 index 0000000..6bce7dd --- /dev/null +++ b/src/xml/printers/Makefile.in @@ -0,0 +1,1163 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Variables + +#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 = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +TESTS = check_duplicate_printers$(EXEEXT) +noinst_PROGRAMS = check_duplicate_printers$(EXEEXT) +subdir = src/xml/printers +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/stp.m4 \ + $(top_srcdir)/m4/stp_cups.m4 $(top_srcdir)/m4/stp_option.m4 \ + $(top_srcdir)/m4/stp_release.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_check_duplicate_printers_OBJECTS = \ + check_duplicate_printers.$(OBJEXT) +check_duplicate_printers_OBJECTS = \ + $(am_check_duplicate_printers_OBJECTS) +check_duplicate_printers_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__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/check_duplicate_printers.Po +am__mv = mv -f +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) $(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 = $(check_duplicate_printers_SOURCES) +DIST_SOURCES = $(check_duplicate_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__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +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) +# 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_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) +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/scripts/depcomp \ + $(top_srcdir)/scripts/global.mk \ + $(top_srcdir)/scripts/test-driver +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@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BASHREAL = @BASHREAL@ +BUILD_CUPS_PPDS = @BUILD_CUPS_PPDS@ +BZIP2 = @BZIP2@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMPRESS = @COMPRESS@ +CONVERT = @CONVERT@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSUF = @CSUF@ +CUPS_CFLAGS = @CUPS_CFLAGS@ +CUPS_CONFIG = @CUPS_CONFIG@ +CUPS_LIBS = @CUPS_LIBS@ +CUPS_PPD_PS_LEVEL = @CUPS_PPD_PS_LEVEL@ +CYGPATH_W = @CYGPATH_W@ +DB2HTML = @DB2HTML@ +DB2PDF = @DB2PDF@ +DB2PS = @DB2PS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOXYGEN = @DOXYGEN@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +DVIPDF = @DVIPDF@ +DVIPS = @DVIPS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FIND = @FIND@ +GENPPD_LIBS = @GENPPD_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GIMP2_CFLAGS = @GIMP2_CFLAGS@ +GIMP2_LIBS = @GIMP2_LIBS@ +GIMPTOOL2_CHECK = @GIMPTOOL2_CHECK@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNUCFLAGS = @GNUCFLAGS@ +GREP = @GREP@ +GTK2_CFLAGS = @GTK2_CFLAGS@ +GTK2_LIBS = @GTK2_LIBS@ +GUTENPRINTUI2_BINARY_AGE = @GUTENPRINTUI2_BINARY_AGE@ +GUTENPRINTUI2_CFLAGS = @GUTENPRINTUI2_CFLAGS@ +GUTENPRINTUI2_CURRENT_INTERFACE = @GUTENPRINTUI2_CURRENT_INTERFACE@ +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@ +GUTENPRINT_INTERFACE_AGE = @GUTENPRINT_INTERFACE_AGE@ +GUTENPRINT_LIBDEPS = @GUTENPRINT_LIBDEPS@ + +# Libraries +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@ +GZIP = @GZIP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBREADLINE_DEPS = @LIBREADLINE_DEPS@ +LIBS = $(INTLLIBS) @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBUSB_BACKEND_LIBDEPS = @LIBUSB_BACKEND_LIBDEPS@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LRZIP = @LRZIP@ +LTALLOCA = @LTALLOCA@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAINTAINER_CFLAGS = @MAINTAINER_CFLAGS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MINIMAL_PRINTERS_TO_TEST = @MINIMAL_PRINTERS_TO_TEST@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKGROOT = @PKGROOT@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +RELEASE_DATE = @RELEASE_DATE@ +RM = @RM@ +RZIP = @RZIP@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TEST = @TEST@ +TEXI2HTML = @TEXI2HTML@ +TRUE = @TRUE@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WHICH_PPDS = @WHICH_PPDS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XZ = @XZ@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +ZPAQ = @ZPAQ@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +cups_bindir = @cups_bindir@ +cups_conf_datadir = @cups_conf_datadir@ +cups_conf_serverbin = @cups_conf_serverbin@ +cups_conf_serverroot = @cups_conf_serverroot@ +cups_exec_prefix = @cups_exec_prefix@ +cups_prefix = @cups_prefix@ +cups_sbindir = @cups_sbindir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gimp2_plug_indir = @gimp2_plug_indir@ +gutenprint_cflags = @gutenprint_cflags@ +gutenprint_libdeps = @gutenprint_libdeps@ +gutenprint_libs = @gutenprint_libs@ +gutenprintui2_cflags = @gutenprintui2_cflags@ +gutenprintui2_libdeps = @gutenprintui2_libdeps@ +gutenprintui2_libs = @gutenprintui2_libs@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(LOCAL_CPPFLAGS) $(GNUCFLAGS) +pkgxmldatadir = $(pkgdatadir)/@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@/xml/printers +pkgxmldata_DATA = \ + canon.xml \ + dpl.xml \ + dyesub.xml \ + escp2.xml \ + lexmark.xml \ + pcl.xml \ + ps.xml \ + raw.xml + +AM_TESTS_ENVIRONMENT = STP_MODULE_PATH=$(top_builddir)/src/main/.libs:$(top_builddir)/src/main STP_DATA_PATH=$(top_srcdir)/src/xml +check_duplicate_printers_SOURCES = check_duplicate_printers.c +check_duplicate_printers_LDADD = $(GUTENPRINT_LIBS) +CLEANFILES = xmli18n-tmp.h xml-stamp xml-stamp.tmp +EXTRA_DIST = $(pkgxmldata_DATA) +all: all-am + +.SUFFIXES: +.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 \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/xml/printers/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/xml/printers/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; +$(top_srcdir)/scripts/global.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstPROGRAMS: + @list='$(noinst_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 + +check_duplicate_printers$(EXEEXT): $(check_duplicate_printers_OBJECTS) $(check_duplicate_printers_DEPENDENCIES) $(EXTRA_check_duplicate_printers_DEPENDENCIES) + @rm -f check_duplicate_printers$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_duplicate_printers_OBJECTS) $(check_duplicate_printers_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_duplicate_printers.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@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 $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgxmldataDATA: $(pkgxmldata_DATA) + @$(NORMAL_INSTALL) + @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"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgxmldatadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgxmldatadir)" || exit $$?; \ + done + +uninstall-pkgxmldataDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgxmldata_DATA)'; test -n "$(pkgxmldatadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgxmldatadir)'; $(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`; \ + $(am__define_uniq_tagged_files); \ + 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-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 + +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 + +# 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; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + 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 \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + 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 $$? +check_duplicate_printers.log: check_duplicate_printers$(EXEEXT) + @p='check_duplicate_printers$(EXEEXT)'; \ + b='check_duplicate_printers'; \ + $(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: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(PROGRAMS) $(DATA) all-local +installdirs: + for dir in "$(DESTDIR)$(pkgxmldatadir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + 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) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/check_duplicate_printers.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgxmldataDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/check_duplicate_printers.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgxmldataDATA + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am all-local am--depfiles check \ + check-TESTS 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 \ + 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-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-pkgxmldataDATA + +.PRECIOUS: Makefile + + +@SET_MAKE@ + +# Rules + +$(top_builddir)/src/main/libgutenprint.la: + cd $(top_builddir)/src/main; \ + $(MAKE) + +$(top_builddir)/src/gutenprintui2/libgutenprintui2.la: + cd $(top_builddir)/src/gutenprintui2; \ + $(MAKE) + +xml-stamp: $(pkgxmldata_DATA) Makefile.am check_duplicate_printers + $(AM_TESTS_ENVIRONMENT) ./check_duplicate_printers + -rm -f $@ $@.tmp + touch $@.tmp + for f in $(pkgxmldata_DATA) ; do echo $$f >> $@.tmp; done + mv $@.tmp $@ + +all-local: xml-stamp + +dist-hook: xml-stamp + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/xml/printers/canon.xml b/src/xml/printers/canon.xml new file mode 100644 index 0000000..7763f8d --- /dev/null +++ b/src/xml/printers/canon.xml @@ -0,0 +1,1468 @@ +<?xml version="1.0"?> + +<!-- + + XML description of printers known to libgutenprint + You can add additional printers here, but the underlying driver has + to know about the model number. You can have different printers + with the same model number but different parameters; this means + printers that are functionally identical but have different ink + characteristics. + + Each printer must have a unique driver name (even if the underlying + driver is identical) to allow a unique mapping between driver + name and printer name (the mapping is done both ways). + + NOTE TO TRANSLATORS: Printer names should not be translated into + their equivalents (the same printer sold under a different name) + in other countries. The correct way to handle this is to add + another printer to this list. Translations should be done for + e. g. character sets. + + For example, a Japanese printer will have the same model name wherever + it is used and with whatever language the user speaks. +--> + +<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, see https://www.gnu.org/licenses/. +</copyright> + <printdef> + <family name="canon"> + <parameters name="density_800_params"> + <parameter type="float" name="Density">0.8</parameter> + </parameters> + <parameters name="gamma_5_density_800_params"> + <parameter type="float" name="Density">0.8</parameter> + <parameter type="float" name="Gamma">0.5</parameter> + </parameters> + <parameters name="gamma_6_density_800_params"> + <parameter type="float" name="Density">0.8</parameter> + <parameter type="float" name="Gamma">0.6</parameter> + </parameters> + <parameters name="gamma_8_density_900_params"> + <parameter type="float" name="Density">0.9</parameter> + <parameter type="float" name="Gamma">0.8</parameter> + </parameters> + <parameters name="gamma_2_density_800_params"> + <parameter type="float" name="Density">0.8</parameter> + <parameter type="float" name="Gamma">2.0</parameter> + </parameters> + <parameters name="gamma_750_params"> + <parameter type="float" name="Gamma">0.75</parameter> + </parameters> + <parameters name="PIXMA_iP4000_params"> + <parameter type="float" name="Gamma">0.60</parameter> + </parameters> + <parameters name="PIXMA_iP4200_params"> + <parameter type="float" name="Brightness">1.30</parameter> + <parameter type="float" name="Gamma">0.70</parameter> + <parameter type="float" name="Density">0.80</parameter> + </parameters> + <parameters name="PIXMA_iP4300_params"> + <parameter type="float" name="Brightness">0.7</parameter> + <parameter type="float" name="Density">0.6</parameter> + <parameter type="float" name="Contrast">1.7</parameter> + <parameter type="float" name="Gamma">0.9</parameter> + <parameter type="float" name="BlackGamma">0.6</parameter> + </parameters> + <parameters name="PIXMA_iX5000_params"> + <parameter type="float" name="BlackGamma">2.0</parameter> + <parameter type="float" name="YellowGamma">1.4</parameter> + <parameter type="float" name="MagentaGamma">1.3</parameter> + <parameter type="float" name="CyanGamma">1.3</parameter> + </parameters> + <printer translate="name" name="Canon BJ-30" driver="bjc-30" manufacturer="Canon" model="30" parameters="gamma_2_density_800_params" /> + <printer translate="name" name="Canon BJC-50" deviceid="MFG:Canon;MDL:BJC-50;" driver="bjc-50" manufacturer="Canon" model="4400" parameters="gamma_5_density_800_params" /> + <printer translate="name" name="Canon BJC-55" deviceid="MFG:Canon;MDL:BJC-55;" driver="bjc-55" manufacturer="Canon" model="4400" parameters="gamma_5_density_800_params" /> + <printer translate="name" name="Canon BJC-80" deviceid="MFG:Canon;MDL:BJC-80;" driver="bjc-80" manufacturer="Canon" model="4400" parameters="gamma_5_density_800_params" /> + <printer translate="name" name="Canon BJC-85" deviceid="MFG:Canon;MDL:BJC-85;" driver="bjc-85" manufacturer="Canon" model="85" parameters="gamma_5_density_800_params" /> + <printer translate="name" name="Canon BJC-210" deviceid="MFG:Canon;MDL:BJC-210;DES:Canon BJC-210;CMD:BJ,LQ,BJL,BJRaster;" driver="bjc-210" manufacturer="Canon" model="210" parameters="density_800_params" /> + <printer translate="name" name="Canon BJC-240" driver="bjc-240" manufacturer="Canon" model="240" parameters="density_800_params" /> + <printer translate="name" name="Canon BJC-250" deviceid="MFG:Canon;MDL:BJC-250;DES:Canon BJC-250;CMD:BJ,LQ,BJL,BJRaster,BSCC;" driver="bjc-250" manufacturer="Canon" model="250" parameters="density_800_params" /> + <printer translate="name" name="Canon BJC-1000" deviceid="MFG:Canon;MDL:BJC-1000;DES:Canon BJC-1000;CMD:BJL,BJRaster,BSCC,TXT01;" driver="bjc-1000" manufacturer="Canon" model="1000" parameters="density_800_params" /> + <printer translate="name" name="Canon BJC-2000" driver="bjc-2000" manufacturer="Canon" model="2000" parameters="density_800_params" /> + <printer translate="name" name="Canon BJC-2010" driver="bjc-2010" manufacturer="Canon" model="2000" parameters="density_800_params" /> + <printer translate="name" name="Canon BJC-2100" deviceid="MFG:Canon;MDL:BJC-2100;DES:Canon BJC-2100;" driver="bjc-2100" manufacturer="Canon" model="2100" parameters="gamma_750_params" /> + <printer translate="name" name="Canon BJC-2110" driver="bjc-2110" manufacturer="Canon" model="2100" parameters="density_800_params" /> + <printer translate="name" name="Canon BJC-3000" deviceid="MFG:Canon;MDL:BJC-3000;DES:Canon BJC-3000;CMD:BJL,BJRaster3,BSCC,TXT01,BJScan2;" driver="bjc-3000" manufacturer="Canon" model="3000" parameters="density_800_params" /> + <printer translate="name" name="Canon BJC-4000" driver="bjc-4000" manufacturer="Canon" model="4300" parameters="gamma_750_params" /> + <printer translate="name" name="Canon BJC-4300" deviceid="MFG:Canon;MDL:BJC-4300;DES:Canon BJC-4300;CMD:BJ,LQ,BJL,BJRaster,BSCC;" driver="bjc-4300" manufacturer="Canon" model="4300" parameters="gamma_750_params" /> + <printer translate="name" name="Canon BJC-4400" deviceid="MFG:Canon;MDL:BJC-4400;DES:Canon BJC-4400;CMD:BJ,LQ,BJL,BJRaster,BSCC;" driver="bjc-4400" manufacturer="Canon" model="4400" parameters="density_800_params" /> + <printer translate="name" name="Canon BJC-4550" driver="bjc-4550" manufacturer="Canon" model="4550" parameters="density_800_params" /> + <printer translate="name" name="Canon BJC-5100" driver="bjc-5100" manufacturer="Canon" model="5100" parameters="density_800_params" /> + <printer translate="name" name="Canon BJC-5500" driver="bjc-5500" manufacturer="Canon" model="5500" parameters="density_800_params" /> + <printer translate="name" name="Canon BJC-5500J" driver="bjc-5500j" manufacturer="Canon" model="5500" parameters="density_800_params" /> + <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" /> + <printer translate="name" name="Canon BJC-6100" driver="bjc-6100" manufacturer="Canon" model="6100" parameters="density_800_params" /> + <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" /> + <printer translate="name" name="Canon BJC-6500" driver="bjc-6500" manufacturer="Canon" model="6500" parameters="gamma_750_params" /> + <printer translate="name" name="Canon BJC-7000" driver="bjc-7000" manufacturer="Canon" model="7000" parameters="gamma_6_density_800_params" /> + <printer translate="name" name="Canon BJC-7100" driver="bjc-7100" manufacturer="Canon" model="7100" parameters="density_800_params" /> + <printer translate="name" name="Canon BJC-8200" deviceid="MFG:Canon;MDL:BJC-8200;DES:Canon;CMD:BJL,BJRaster3,BSCC,TXT01;" driver="bjc-8200" manufacturer="Canon" model="8200" parameters="density_800_params" /> + <printer translate="name" name="Canon BJC-8500" driver="bjc-8500" manufacturer="Canon" model="8500" parameters="density_800_params" /> + <printer translate="name" name="Canon S100" deviceid="MFG:Canon;MDL:S100SP;DES:Canon S100SP;CMD:BJL,BJRaster,BSCC,TXT01;" driver="bjc-s100" manufacturer="Canon" model="4300" parameters="gamma_750_params" /> + <printer translate="name" name="Canon S200" driver="bjc-s200" manufacturer="Canon" model="1000200" parameters="gamma_8_density_900_params" /> + <printer translate="name" name="Canon S300" driver="bjc-s300" manufacturer="Canon" model="1000300" parameters="density_800_params" /> + <printer translate="name" name="Canon S330" driver="bjc-s330" manufacturer="Canon" model="1000330" parameters="density_800_params" /> + <printer translate="name" name="Canon S400" driver="bjc-s400" manufacturer="Canon" model="3000" parameters="density_800_params" /> + <printer translate="name" name="Canon S450" driver="bjc-s450" manufacturer="Canon" model="6200" parameters="gamma_750_params" /> + <printer translate="name" name="Canon S500" driver="bjc-s500" manufacturer="Canon" model="1000500" parameters="density_800_params" /> + <printer translate="name" name="Canon S520" driver="bjc-s520" manufacturer="Canon" model="1000520" parameters="density_800_params" /> + <printer translate="name" name="Canon S530D" driver="bjc-s530D" manufacturer="Canon" model="1000520" parameters="density_800_params" /> + <printer translate="name" name="Canon S600" deviceid="MFG:Canon;MDL:S600;DES:Canon S600;CMD:BJL,BJRaster3,BSCC,TXT01;" driver="bjc-s600" manufacturer="Canon" model="1000600" parameters="density_800_params" /> + <printer translate="name" name="Canon S630" driver="bjc-s630" manufacturer="Canon" model="1000600" parameters="density_800_params" /> + <printer translate="name" name="Canon S750" driver="bjc-s750" manufacturer="Canon" model="1000750" parameters="density_800_params" /> + <printer translate="name" name="Canon S800" driver="bjc-s800" manufacturer="Canon" model="1000800" parameters="density_800_params" /> + <printer translate="name" name="Canon S820" driver="bjc-s820" manufacturer="Canon" model="1000820" parameters="density_800_params" /> + <printer translate="name" name="Canon S830D" driver="bjc-s830" manufacturer="Canon" model="1000830" parameters="density_800_params" /> + <printer translate="name" name="Canon S900" driver="bjc-s900" manufacturer="Canon" model="1000900" parameters="density_800_params" /> + <printer translate="name" name="Canon S9000" driver="bjc-s9000" manufacturer="Canon" model="1009000" parameters="density_800_params" /> + <printer translate="name" name="Canon S4500" driver="bjc-s4500" manufacturer="Canon" model="6500" parameters="gamma_750_params" /> + <printer translate="name" name="Canon SELPHY DS700" driver="bjc-SELPHY-DS700" manufacturer="Canon" model="10000700" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon SELPHY DS810" driver="bjc-SELPHY-DS810" manufacturer="Canon" model="10000810" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXMA mini220" driver="bjc-PIXMA-mini220" manufacturer="Canon" model="11000220" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXUS mini220" driver="bjc-PIXUS-mini220" manufacturer="Canon" model="11000220" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXMA mini320" driver="bjc-PIXMA-mini320" manufacturer="Canon" model="11000320" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXMA mini360" driver="bjc-PIXMA-mini360" manufacturer="Canon" model="11000320" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXUS mini360" driver="bjc-PIXUS-mini360" manufacturer="Canon" model="11000320" parameters="PIXMA_iP4000_params" /> + <!-- Canon iP90 family --> + <printer translate="name" name="Canon iP90 series" driver="bjc-iP90-series" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params"/> + <printer translate="name" name="Canon PIXMA iP90" driver="bjc-PIXMA-iP90" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXUS iP90" driver="bjc-PIXUS-iP90" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXMA iP90v" driver="bjc-PIXMA-iP90v" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXUS iP90v" driver="bjc-PIXUS-iP90v" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params" /> + <!-- Canon iP100 family --> +<!-- + <printer translate="name" name="Canon iP100 series" driver="bjc-iP100-series" manufacturer="Canon" model="3000100" parameters="PIXMA_iP4000_params"/> + <printer translate="name" name="Canon PIXMA iP100" driver="bjc-PIXMA-iP100" manufacturer="Canon" model="3000100" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXUS iP100" driver="bjc-PIXUS-iP100" manufacturer="Canon" model="3000100" parameters="PIXMA_iP4000_params" /> +--> + <!-- Canon iP110 family --> + <printer translate="name" name="Canon iP110 series" driver="bjc-iP110-series" manufacturer="Canon" model="3000110" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP110" driver="bjc-PIXMA-iP110" manufacturer="Canon" model="3000110" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP110" driver="bjc-PIXUS-iP110" manufacturer="Canon" model="3000110" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP2000 family --> + <printer translate="name" name="Canon iP2000 series" driver="bjc-iP2000-series" manufacturer="Canon" model="3002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2000" driver="bjc-PIXMA-iP2000" manufacturer="Canon" model="3002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP2000" driver="bjc-PIXUS-iP2000" manufacturer="Canon" model="3002000" parameters="PIXMA_iP4000_params">>EXPERIMENTAL</printer> + <!-- Canon iP2700 family --> + <printer translate="name" name="Canon iP2700 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe,IVEC,IVECPLI;SOJ:TXT01;MDL:iP2700 series;CLS:PRINTER;DES:Canon iP2700 series;VER:1.030;STA:30;FSI:00;HRI:EU;MSI:AOFF,BOFF,DAT,E3;PDR:4;" driver="bjc-iP2700-series" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2700" driver="bjc-PIXMA-iP2700" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP2700" driver="bjc-PIXUS-iP2700" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2701" driver="bjc-PIXMA-iP2701" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2702" driver="bjc-PIXMA-iP2702" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2740" driver="bjc-PIXMA-iP2740" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2760" driver="bjc-PIXMA-iP2760" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2770" driver="bjc-PIXMA-iP2770" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2772" driver="bjc-PIXMA-iP2772" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2780" driver="bjc-PIXMA-iP2780" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2788" driver="bjc-PIXMA-iP2788" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP2800 family --> + <printer translate="name" name="Canon iP2800 series" driver="bjc-iP2800-series" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2810" driver="bjc-PIXMA-iP2810" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2820" driver="bjc-PIXMA-iP2820" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2840" driver="bjc-PIXMA-iP2840" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2850" driver="bjc-PIXMA-iP2850" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2870" driver="bjc-PIXMA-iP2870" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2872" driver="bjc-PIXMA-iP2872" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2880" driver="bjc-PIXMA-iP2880" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP2890" driver="bjc-PIXMA-iP2890" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP3000 --> + <printer translate="name" name="Canon PIXMA iP3000" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe;SOJ:TXT01;MDL:iP3000;CLS:PRINTER;DES:Canon iP3000;VER:1.06;STA:10;FSI:03;" driver="bjc-PIXMA-iP3000" manufacturer="Canon" model="3003000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP3100 (PIXUS only, PIXMA iP3100 does not exist) --> + <printer translate="name" name="Canon PIXMA iP3100" driver="bjc-PIXMA-iP3100" manufacturer="Canon" model="3003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP3100" driver="bjc-PIXUS-iP3100" manufacturer="Canon" model="3003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP3300 family --> + <printer translate="name" name="Canon iP3300 series" driver="bjc-iP3300-series" manufacturer="Canon" model="3003300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP3300" driver="bjc-PIXMA-iP3300" manufacturer="Canon" model="3003300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP3300" driver="bjc-PIXUS-iP3300" manufacturer="Canon" model="3003300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP3500 family --> + <printer translate="name" name="Canon iP3500 series" driver="bjc-iP3500-series" manufacturer="Canon" model="3003500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP3500" driver="bjc-PIXMA-iP3500" manufacturer="Canon" model="3003500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP3500" driver="bjc-PIXUS-iP3500" manufacturer="Canon" model="3003500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP3600 family --> + <printer translate="name" name="Canon iP3600 series" driver="bjc-iP3600-series" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP3600" driver="bjc-PIXMA-iP3600" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP3600" driver="bjc-PIXUS-iP3600" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP3680" driver="bjc-PIXMA-iP3680" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP4000 --> + <printer translate="name" name="Canon PIXMA iP4000" deviceid="MFG:Canon;MDL:iP4000;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-iP4000" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params" /><!-- driver 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" /><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP4100" driver="bjc-PIXUS-iP4100" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP4100R (PIXUS only, PIXMA iP4100R does not exist) --> + <printer translate="name" name="Canon PIXUS iP4100R" driver="bjc-PIXUS-iP4100R" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4100R" driver="bjc-PIXMA-iP4100R" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP4200 family --> + <printer translate="name" name="Canon iP4200 series" deviceid="MFG:Canon;MDL:iP4200;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-iP4200-series" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4200" driver="bjc-PIXMA-iP4200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP4200" driver="bjc-PIXUS-iP4200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params">EXPERIMENTAL</printer> + <!-- Canon iP4300 family --> + <printer translate="name" name="Canon iP4300 series" driver="bjc-iP4300-series" manufacturer="Canon" model="3004300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4300" driver="bjc-PIXMA-iP4300" manufacturer="Canon" model="3004300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP4300" driver="bjc-PIXUS-iP4300" manufacturer="Canon" model="3004300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon iP4500 family --> + <printer translate="name" name="Canon iP4500 series" driver="bjc-iP4500-series" manufacturer="Canon" model="3004500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4500" driver="bjc-PIXMA-iP4500" manufacturer="Canon" model="3004500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP4500" driver="bjc-PIXUS-iP4500" manufacturer="Canon" model="3004500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon iP4600 family --> + <printer translate="name" name="Canon iP4600 series" driver="bjc-iP4600-series" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4600" driver="bjc-PIXMA-iP4600" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP4600" driver="bjc-PIXUS-iP4600" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4680" driver="bjc-PIXMA-iP4680" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon iP4700 family --> + <printer translate="name" name="Canon iP4700 series" driver="bjc-iP4700-series" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4700" driver="bjc-PIXMA-iP4700" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP4700" driver="bjc-PIXUS-iP4700" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4760" driver="bjc-PIXMA-iP4760" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon iP4800 family --> + <printer translate="name" name="Canon iP4800 series" driver="bjc-iP4800-series" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4800" driver="bjc-PIXMA-iP4800" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4810" driver="bjc-PIXMA-iP4810" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4820" driver="bjc-PIXMA-iP4820" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP4830" driver="bjc-PIXUS-iP4830" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4840" driver="bjc-PIXMA-iP4840" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4850" driver="bjc-PIXMA-iP4850" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4870" driver="bjc-PIXMA-iP4870" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4880" driver="bjc-PIXMA-iP4880" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon iP4900 family --> + <printer translate="name" name="Canon iP4900 series" driver="bjc-iP4900-series" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4900" driver="bjc-PIXMA-iP4900" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4910" driver="bjc-PIXMA-iP4910" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4920" driver="bjc-PIXMA-iP4920" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP4930" driver="bjc-PIXUS-iP4930" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4940" driver="bjc-PIXMA-iP4940" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4950" driver="bjc-PIXMA-iP4950" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4970" driver="bjc-PIXMA-iP4970" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP4980" driver="bjc-PIXMA-iP4980" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon iP5000 --> + <printer translate="name" name="Canon PIXMA iP5000" driver="bjc-PIXMA-iP5000" manufacturer="Canon" model="3005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP5200 --> + <printer translate="name" name="Canon PIXMA iP5200" driver="bjc-PIXMA-iP5200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP5200R family --> + <printer translate="name" name="Canon iP5200R series" driver="bjc-iP5200R-series" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP5200R" driver="bjc-PIXMA-iP5200R" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP5200R" driver="bjc-PIXUS-iP5200R" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP5300 --> + <printer translate="name" name="Canon PIXMA iP5300" driver="bjc-PIXMA-iP5300" manufacturer="Canon" model="3005300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP6000D --> + <printer translate="name" name="Canon PIXMA iP6000D" driver="bjc-PIXMA-iP6000D" manufacturer="Canon" model="3006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP6100D (PIXUS only, PIXMA iP6100D does not exist) --> + <printer translate="name" name="Canon PIXMA iP6100D" driver="bjc-PIXMA-iP6100D" manufacturer="Canon" model="3006100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP6100D" driver="bjc-PIXUS-iP6100D" manufacturer="Canon" model="3006100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP6210 --> + <printer translate="name" name="Canon PIXMA iP6210D" driver="bjc-PIXMA-iP6210D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP6220 --> + <printer translate="name" name="Canon PIXMA iP6220D" driver="bjc-PIXMA-iP6220D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP6310 --> + <printer translate="name" name="Canon PIXMA iP6310D" driver="bjc-PIXMA-iP6310D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP6320D --> + <printer translate="name" name="Canon PIXMA iP6320D" driver="bjc-PIXMA-iP6320D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP6600D family --> + <printer translate="name" name="Canon iP6600D series" driver="bjc-iP6600D-series" manufacturer="Canon" model="3006600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP6600D" driver="bjc-PIXMA-iP6600D" manufacturer="Canon" model="3006600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP6600D" driver="bjc-PIXUS-iP6600D" manufacturer="Canon" model="3006600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP6700D family --> + <printer translate="name" name="Canon iP6700D series" driver="bjc-iP6700-series" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP6700D" driver="bjc-PIXMA-iP6700" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP6700D" driver="bjc-PIXUS-iP6700" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP7100 (PIXUS only, PIXMA iP7100 does not exist) --> + <printer translate="name" name="Canon PIXMA iP7100" driver="bjc-PIXMA-iP7100" manufacturer="Canon" model="3007100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP7100" driver="bjc-PIXUS-iP7100" manufacturer="Canon" model="3007100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP7200 family --> + <printer translate="name" name="Canon iP7200 series" driver="bjc-iP7200-series" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP7210" driver="bjc-PIXMA-iP7210" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP7220" driver="bjc-PIXMA-iP7220" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP7230" driver="bjc-PIXUS-iP7230" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP7240" driver="bjc-PIXMA-iP7240" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP7250" driver="bjc-PIXMA-iP7250" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP7260" driver="bjc-PIXMA-iP7260" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP7270" driver="bjc-PIXMA-iP7270" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP7280" driver="bjc-PIXMA-iP7280" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP7500 (PIXUS only, PIXMA iP7500 does not exist) --> + <printer translate="name" name="Canon PIXMA iP7500" driver="bjc-PIXMA-iP7500" manufacturer="Canon" model="3007500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP7500" driver="bjc-PIXUS-iP7500" manufacturer="Canon" model="3007500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP8100 (PIXUS only, PIXMA iP8100 does not exist) --> + <printer translate="name" name="Canon PIXMA iP8100" driver="bjc-PIXMA-iP8100" manufacturer="Canon" model="3008100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP8100" driver="bjc-PIXUS-iP8100" manufacturer="Canon" model="3008100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP8500 --> + <printer translate="name" name="Canon PIXMA iP8500" deviceid="MFG:Canon;MDL:iP8500;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-PIXMA-iP8500" manufacturer="Canon" model="3008500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP8600 (PIXUS only, PIXMA iP8600 does not exist) --> + <printer translate="name" name="Canon PIXMA iP8600" driver="bjc-PIXMA-iP8600" manufacturer="Canon" model="3008600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP8600" driver="bjc-PIXUS-iP8600" manufacturer="Canon" model="3008600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP8700 family --> + <printer translate="name" name="Canon iP8700 series" driver="bjc-iP8700-series" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP7810" driver="bjc-PIXMA-iP8710" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP8720" driver="bjc-PIXMA-iP8720" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP8730" driver="bjc-PIXUS-iP8730" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP8740" driver="bjc-PIXMA-iP8740" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP8750" driver="bjc-PIXMA-iP8750" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP8760" driver="bjc-PIXMA-iP8760" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP8770" driver="bjc-PIXMA-iP8770" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP8780" driver="bjc-PIXMA-iP8780" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iP9910 (PIXUS only, PIXMA iP9910 does not exist) --> + <printer translate="name" name="Canon PIXMA iP9910" driver="bjc-PIXMA-iP9910" manufacturer="Canon" model="3009910" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iP9910" driver="bjc-PIXUS-iP9910" manufacturer="Canon" model="3009910" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon iX4000 --> + <printer translate="name" name="Canon PIXMA iX4000" driver="bjc-PIXMA-iX4000" manufacturer="Canon" model="4004000" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <!-- Canon iX5000 family --> + <printer translate="name" name="Canon iX5000 series" driver="bjc-iX5000-series" manufacturer="Canon" model="4005000" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX5000" driver="bjc-PIXMA-iX5000" manufacturer="Canon" model="4005000" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iX5000" driver="bjc-PIXUS-iX5000" manufacturer="Canon" model="4005000" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <!-- Canon iX6500 family --> + <printer translate="name" name="Canon iX6500 series" driver="bjc-iX6500-series" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6500" driver="bjc-PIXMA-iX6500" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6510" driver="bjc-PIXMA-iX6510" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6520" driver="bjc-PIXMA-iX6520" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iX6530" driver="bjc-PIXUS-iX6530" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6540" driver="bjc-PIXMA-iX6540" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6550" driver="bjc-PIXMA-iX6550" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6560" driver="bjc-PIXMA-iX6560" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6580" driver="bjc-PIXMA-iX6580" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <!-- Canon iX6700 family --> + <printer translate="name" name="Canon iX6700 series" driver="bjc-iX6700-series" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6770" driver="bjc-PIXMA-iX6770" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6780" driver="bjc-PIXMA-iX6780" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <!-- Canon iX6800 family --> + <printer translate="name" name="Canon iX6800 series" driver="bjc-iX6800-series" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6810" driver="bjc-PIXMA-iX6810" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6820" driver="bjc-PIXMA-iX6820" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iX6830" driver="bjc-PIXUS-iX6830" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6840" driver="bjc-PIXMA-iX6840" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6850" driver="bjc-PIXMA-iX6850" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6860" driver="bjc-PIXMA-iX6860" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6870" driver="bjc-PIXMA-iX6870" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX6880" driver="bjc-PIXMA-iX6880" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <!-- Canon iX7000 family --> + <printer translate="name" name="Canon iX7000 series" driver="bjc-iX7000-series" manufacturer="Canon" model="4007000" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iX7000" driver="bjc-PIXMA-iX7000" manufacturer="Canon" model="4007000" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS iX7000" driver="bjc-PIXUS-iX7000" manufacturer="Canon" model="4007000" parameters="PIXMA_iX5000_params">EXPERIMENTAL</printer> + <!-- Canon Pro9000 family --> + <printer translate="name" name="Canon Pro9000 series" driver="bjc-Pro9000-series" manufacturer="Canon" model="7009000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA Pro9000" driver="bjc-PIXMA-Pro9000" manufacturer="Canon" model="7009000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS Pro9000" driver="bjc-PIXUS-Pro9000" manufacturer="Canon" model="7009000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon Pro9000 Mk.II family --> + <printer translate="name" name="Canon Pro9000 Mk.II series" deviceid="MFG:Canon;MDL:Pro9000II series;CMD:BJL,BJRaster3,BSCCe,PLI;" driver="bjc-Pro9000mk2-series" manufacturer="Canon" model="7009002" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA Pro9000mk2" driver="bjc-PIXMA-Pro9000mk2" manufacturer="Canon" model="7009002" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS Pro9000mk2" driver="bjc-PIXUS-Pro9000mk2" manufacturer="Canon" model="7009002" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon Pro9500 family --> + <printer translate="name" name="Canon Pro9500 series" driver="bjc-Pro9500-series" manufacturer="Canon" model="7009500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA Pro9500" driver="bjc-PIXMA-Pro9500" manufacturer="Canon" model="7009500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS Pro9500" driver="bjc-PIXUS-Pro9500" manufacturer="Canon" model="7009500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon Pro9500 Mk.II family --> + <printer translate="name" name="Canon Pro9500 Mk.II series" driver="bjc-Pro9500mk2-series" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA Pro9500mk2" driver="bjc-PIXMA-Pro9500mk2" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS Pro9500mk2" driver="bjc-PIXUS-Pro9500mk2" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MPC400 family --> + <printer translate="name" name="Canon SmartBase MPC400" driver="bjc-SmartBase-MPC400" manufacturer="Canon" model="16000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon SmartBase MPC600F" driver="bjc-SmartBase-MPC600F" manufacturer="Canon" model="16000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP55 family --> + <printer translate="name" name="Canon PIXUS MP55" driver="bjc-PIXUS-MP55" manufacturer="Canon" model="5000055" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP140 family --> + <printer translate="name" name="Canon MP140 series" driver="bjc-MP140-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP140" driver="bjc-MULTIPASS-MP140" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MP145" driver="bjc-PIXMA-MP145" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP150 family --> + <printer translate="name" name="Canon MP150 series" driver="bjc-MP150-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP150" driver="bjc-MULTIPASS-MP150" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP160" driver="bjc-MULTIPASS-MP160" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP170" driver="bjc-MULTIPASS-MP170" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP170" driver="bjc-PIXUS-MP170" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP180 family --> + <printer translate="name" name="Canon MP180 series" driver="bjc-MP180-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP180" driver="bjc-MULTIPASS-MP180" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP190" driver="bjc-MULTIPASS-MP190" manufacturer="Canon" model="5000190" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MP198" driver="bjc-PIXMA-MP198" manufacturer="Canon" model="5000190" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP210 family --> + <printer translate="name" name="Canon MP210 series" driver="bjc-MP210-series" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP210" driver="bjc-MULTIPASS-MP210" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MP218" driver="bjc-PIXMA-MP218" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP220 family --> + <printer translate="name" name="Canon MP220 series" driver="bjc-MP220-series" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP220" driver="bjc-MULTIPASS-MP220" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MP228" driver="bjc-PIXMA-MP228" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP230 family --> + <printer translate="name" name="Canon MP230 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe,IVEC,IVECPLI;MDL:MP230 series;CLS:PRINTER;DES:Canon MP230 series;VER:1.050;STA:10;FSI:00;HRI:C;MSI:AOFF,B240,DAT,E3,HASF,JOFF,K21000700;PDR:4;PSE:LNHB41360;CID:CA_IVEC1TYPE0_IJP;" driver="bjc-MP230-series" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params"></printer> + <printer translate="name" name="Canon PIXMA MP230" driver="bjc-MULTIPASS-MP230" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params"></printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MP236" driver="bjc-PIXMA-MP236" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params"></printer> + <printer translate="name" name="Canon PIXMA MP237" driver="bjc-PIXMA-MP237" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params"></printer> + <!-- Canon MP240 family --> + <printer translate="name" name="Canon MP240 series" driver="bjc-MP240-series" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP240" driver="bjc-MULTIPASS-MP240" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MP245" driver="bjc-PIXMA-MP245" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP250 family --> + <printer translate="name" name="Canon MP250 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe,IVEC,IVECPLI;MDL:MP250 series;DES:Canon MP250 series;" driver="bjc-MP250-series" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP250" driver="bjc-MULTIPASS-MP250" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MP252" driver="bjc-PIXMA-MP252" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP258" driver="bjc-PIXMA-MP258" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP259" driver="bjc-PIXMA-MP259" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP260 family --> + <printer translate="name" name="Canon MP260 series" driver="bjc-MP260-series" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP260" driver="bjc-MULTIPASS-MP260" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MP268" driver="bjc-PIXMA-MP268" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP270 family --> + <printer translate="name" name="Canon MP270 series" driver="bjc-MP270-series" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP270" driver="bjc-MULTIPASS-MP270" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP270" driver="bjc-PIXUS-MP270" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP272" driver="bjc-PIXMA-MP272" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP276" driver="bjc-PIXMA-MP276" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP280 family --> + <printer translate="name" name="Canon MP280 series" driver="bjc-MP280-series" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP280" deviceid="MFG:Canon;MDL:MP280 series;" driver="bjc-MULTIPASS-MP280" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP280" driver="bjc-PIXUS-MP280" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP282" driver="bjc-PIXMA-MP282" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP287" driver="bjc-PIXMA-MP287" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP288" driver="bjc-PIXMA-MP288" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP360 family (PIXMA MP360 does not exist) --> + <printer translate="name" name="Canon MP360 series" driver="bjc-MP360-series" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP360" driver="bjc-PIXMA-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon SmartBase MP360" driver="bjc-SmartBase-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon SmartBase MP360S" driver="bjc-SmartBase-MP360S" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MultiPASS MP360" driver="bjc-MULTIPASS-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- introduced the MultiPASS entry so changed previous PIXMA MP360 entry to reflect proper brand name --> + <!-- Canon MP370 family (PIXMA MP370, MP375R do not exist) --> + <printer translate="name" name="Canon MP370 series" driver="bjc-MP370-series" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP370" driver="bjc-PIXMA-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon SmartBase MP370" driver="bjc-SmartBase-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MultiPASS MP370" driver="bjc-MULTIPASS-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- introduced the MultiPASS entry so changed previous PIXMA MP370 entry to reflect proper brand name --> + <printer translate="name" name="Canon PIXMA MP375R" driver="bjc-MULTIPASS-MP375R" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP375R" driver="bjc-PIXUS-MP375R" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP390 family (PIXMA MP390 does not exist) --> + <printer translate="name" name="Canon MP390 series" driver="bjc-MP390-series" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP390" driver="bjc-PIXMA-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon SmartBase MP390" driver="bjc-SmartBase-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MultiPASS MP390" driver="bjc-MULTIPASS-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- introduced the MultiPASS entry so changed previous PIXMA MP390 entry to reflect proper brand name --> + <!-- Canon MP450 family --> + <printer translate="name" name="Canon MP450 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe;MDL:MP450;DES:Canon MP450;CLS:PRINTER;VER:1.08;STA:10;HRI:JP;SOJ:TXT01;" driver="bjc-MP450-series" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP450" driver="bjc-MULTIPASS-MP450" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP450" driver="bjc-PIXUS-MP450" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP460 family --> + <printer translate="name" name="Canon MP460 series" driver="bjc-MP460-series" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP460" driver="bjc-MULTIPASS-MP460" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP460" driver="bjc-PIXUS-MP460" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP470 family --> + <printer translate="name" name="Canon MP470 series" driver="bjc-MP470-series" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP470" driver="bjc-MULTIPASS-MP470" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP470" driver="bjc-PIXUS-MP470" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP476" driver="bjc-PIXMA-MP476" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP480 family --> + <printer translate="name" name="Canon MP480 series" driver="bjc-MP480-series" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP480" driver="bjc-MULTIPASS-MP480" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP480" driver="bjc-PIXUS-MP480" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP486" driver="bjc-PIXMA-MP486" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP490 family (TODO: combine separate drivers for 493, 495. PIXMA MP493 does not exist) --> + <printer translate="name" name="Canon MP490 series" driver="bjc-MP490-series" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP490" driver="bjc-MULTIPASS-MP490" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP490" driver="bjc-PIXUS-MP490" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP492" driver="bjc-PIXMA-MP492" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP493" driver="bjc-MULTIPASS-MP493" manufacturer="Canon" model="5000493" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP493" driver="bjc-PIXUS-MP493" manufacturer="Canon" model="5000493" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP495" driver="bjc-MULTIPASS-MP495" manufacturer="Canon" model="5000495" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MP496" driver="bjc-PIXMA-MP496" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP497" driver="bjc-PIXMA-MP497" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP498" driver="bjc-PIXMA-MP498" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP499" driver="bjc-PIXMA-MP499" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP500 family --> + <printer translate="name" name="Canon MP500 series" deviceid="MFG:Canon;MDL:MP500;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-MP500-series" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP500" driver="bjc-MULTIPASS-MP500" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP500" driver="bjc-PIXUS-MP500" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP510 family --> + <printer translate="name" name="Canon MP510 series" driver="bjc-MP510-series" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP510" driver="bjc-MULTIPASS-MP510" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP510" driver="bjc-PIXUS-MP510" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP520 family --> + <printer translate="name" name="Canon MP520 series" driver="bjc-MP520-series" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP520" driver="bjc-MULTIPASS-MP520" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP520" driver="bjc-PIXUS-MP520" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP530 family --> + <printer translate="name" name="Canon MP530 series" driver="bjc-MP530-series" manufacturer="Canon" model="5000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP530" driver="bjc-MULTIPASS-MP530" manufacturer="Canon" model="5000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP540" driver="bjc-MULTIPASS-MP540" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP540" driver="bjc-PIXUS-MP540" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP545" driver="bjc-PIXMA-MP545" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP550 family --> + <printer translate="name" name="Canon MP550 series" driver="bjc-MP550-series" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP550" driver="bjc-MULTIPASS-MP550" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP550" driver="bjc-PIXUS-MP550" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP558" driver="bjc-PIXMA-MP558" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP560 family --> + <printer translate="name" name="Canon MP560 series" driver="bjc-MP560-series" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP560" driver="bjc-MULTIPASS-MP560" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP560" driver="bjc-PIXUS-MP560" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP568" driver="bjc-PIXMA-MP568" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP600 family --> + <printer translate="name" name="Canon MP600 series" driver="bjc-MP600-series" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP600" driver="bjc-MULTIPASS-MP600" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP600" driver="bjc-PIXUS-MP600" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP600R" driver="bjc-MULTIPASS-MP600R" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP610" driver="bjc-MULTIPASS-MP610" manufacturer="Canon" model="5000610" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP610" driver="bjc-PIXUS-MP610" manufacturer="Canon" model="5000610" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP620 family --> + <printer translate="name" name="Canon MP620 series" driver="bjc-MP620-series" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP620" driver="bjc-MULTIPASS-MP620" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MP620B" driver="bjc-PIXMA-MP620B" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MP620" driver="bjc-PIXUS-MP620" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP628" driver="bjc-PIXMA-MP628" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP630 family --> + <printer translate="name" name="Canon MP630 series" driver="bjc-MP630-series" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP630" driver="bjc-MULTIPASS-MP630" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP630" driver="bjc-PIXUS-MP630" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP638" driver="bjc-PIXMA-MP638" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP640 family --> + <printer translate="name" name="Canon MP640 series" driver="bjc-MP640-series" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP640" driver="bjc-MULTIPASS-MP640" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MP640R" driver="bjc-PIXMA-MP640R" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MP640" driver="bjc-PIXUS-MP640" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP648" driver="bjc-PIXMA-MP648" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP700 family --> + <printer translate="name" name="Canon MP700 series" driver="bjc-MP700-series" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP700" driver="bjc-PIXMA-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon SmartBase MP700" driver="bjc-SmartBase-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MultiPASS MP700" driver="bjc-MULTIPASS-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- introduced the MultiPASS entry so changed previous PIXMA MP700 entry to reflect proper brand name --> + <!-- Canon MP710 family (PIXMA MP710 does not exit) --> + <printer translate="name" name="Canon MP710 series" driver="bjc-MP710-series" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP710" driver="bjc-MULTIPASS-MP710" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP710" driver="bjc-PIXUS-MP710" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP730 family --> + <printer translate="name" name="Canon MP730 series" driver="bjc-MP730-series" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP730" driver="bjc-PIXMA-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon SmartBase MP730" driver="bjc-SmartBasw-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MultiPASS MP730" driver="bjc-MULTIPASS-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- introduced the MultiPASS entry so changed previous PIXMA MP730 entry to reflect proper brand name --> + <!-- Canon MP740 family (PIXMA MP740 does not exit) --> + <printer translate="name" name="Canon MP740 series" driver="bjc-MP740-series" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP740" driver="bjc-MULTIPASS-MP740" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP740" driver="bjc-PIXUS-MP740" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP750 family --> + <printer translate="name" name="Canon MP750 series" driver="bjc-MP750-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP750" driver="bjc-MULTIPASS-MP750" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP760" driver="bjc-MULTIPASS-MP760" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP770" driver="bjc-MULTIPASS-MP770" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP770" driver="bjc-PIXUS-MP770" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP780 family --> + <printer translate="name" name="Canon MP780 series" driver="bjc-MP780-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP780" driver="bjc-MULTIPASS-MP780" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <!-- Canon MP790 family (PIXMA MP790 does not exist) --> + <printer translate="name" name="Canon MP790 series" driver="bjc-MP790-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP790" driver="bjc-MULTIPASS-MP790" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP790" driver="bjc-PIXUS-MP790" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP800 family --> + <printer translate="name" name="Canon MP800 series" driver="bjc-MP800-series" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP800" driver="bjc-MULTIPASS-MP800" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP800" driver="bjc-PIXUS-MP800" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP800R" driver="bjc-MULTIPASS-MP800R" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP810" driver="bjc-MULTIPASS-MP810" manufacturer="Canon" model="5000810" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP810" driver="bjc-PIXUS-MP810" manufacturer="Canon" model="5000810" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP830 family --> + <printer translate="name" name="Canon MP830 series" driver="bjc-MP830-series" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP830" driver="bjc-MULTIPASS-MP830" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP830" driver="bjc-PIXUS-MP830" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP900 family --> + <printer translate="name" name="Canon MP900 series" driver="bjc-MP900-series" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP900" driver="bjc-MULTIPASS-MP900" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP900" driver="bjc-PIXUS-MP900" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP950 family --> + <printer translate="name" name="Canon MP950 series" driver="bjc-MP950-series" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP950" driver="bjc-MULTIPASS-MP950" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP950" driver="bjc-PIXUS-MP950" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP960 family --> + <printer translate="name" name="Canon MP960 series" driver="bjc-MP960-series" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP960" driver="bjc-MULTIPASS-MP960" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP960" driver="bjc-PIXUS-MP960" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP970 family --> + <printer translate="name" name="Canon MP970 series" driver="bjc-MP970-series" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP970" driver="bjc-MULTIPASS-MP970" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP970" driver="bjc-PIXUS-MP970" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP980 family --> + <printer translate="name" name="Canon MP980 series" driver="bjc-MP980-series" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP980" driver="bjc-MULTIPASS-MP980" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP980" driver="bjc-PIXUS-MP980" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP988" driver="bjc-PIXMA-MP988" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MP990 family --> + <printer translate="name" name="Canon MP990 series" driver="bjc-MP990-series" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP990" driver="bjc-MULTIPASS-MP990" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MP990" driver="bjc-PIXUS-MP990" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MP996" driver="bjc-PIXMA-MP996" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MG2100 family --> + <printer translate="name" name="Canon MG2100 series" driver="bjc-MG2100-series" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG2100" driver="bjc-PIXMA-MG2100" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG2110" driver="bjc-PIXMA-MG2110" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG2120" driver="bjc-PIXMA-MG2120" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG2130" driver="bjc-PIXUS-MG2130" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG2140" driver="bjc-PIXMA-MG2140" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG2150" driver="bjc-PIXMA-MG2150" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG2160" driver="bjc-PIXMA-MG2160" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG2170" driver="bjc-PIXMA-MG2170" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG2180" driver="bjc-PIXMA-MG2180" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG2200 family --> + <printer translate="name" name="Canon MG2200 series" driver="bjc-MG2200-series" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG2210" driver="bjc-PIXMA-MG2210" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG2220" driver="bjc-PIXMA-MG2220" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG2240" driver="bjc-PIXMA-MG2240" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG2250" driver="bjc-PIXMA-MG2250" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG2260" driver="bjc-PIXMA-MG2260" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG2270" driver="bjc-PIXMA-MG2270" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG2280" driver="bjc-PIXMA-MG2280" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG2400 family --> + <printer translate="name" name="Canon MG2400 series" driver="bjc-MG2400-series" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2400" driver="bjc-PIXMA-MG2400" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2410" driver="bjc-PIXMA-MG2410" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2420" driver="bjc-PIXMA-MG2420" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2440" driver="bjc-PIXMA-MG2440" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2450" driver="bjc-PIXMA-MG2450" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2460" driver="bjc-PIXMA-MG2460" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2470" driver="bjc-PIXMA-MG2470" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2490" driver="bjc-PIXMA-MG2490" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <!-- Canon MG2500 family --> + <printer translate="name" name="Canon MG2500 series" driver="bjc-MG2500-series" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2510" driver="bjc-PIXMA-MG2510" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2520" driver="bjc-PIXMA-MG2520" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2522" driver="bjc-PIXMA-MG2522" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2525" driver="bjc-PIXMA-MG2525" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2540" driver="bjc-PIXMA-MG2540" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2540S" driver="bjc-PIXMA-MG2540S" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2545S" driver="bjc-PIXMA-MG2545S" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2550" driver="bjc-PIXMA-MG2550" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2550S" driver="bjc-PIXMA-MG2550S" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2555S" driver="bjc-PIXMA-MG2555S" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2560" driver="bjc-PIXMA-MG2560" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2570" driver="bjc-PIXMA-MG2570" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2570S" driver="bjc-PIXMA-MG2570S" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2580" driver="bjc-PIXMA-MG2580" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2580S" driver="bjc-PIXMA-MG2580S" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2590" driver="bjc-PIXMA-MG2590" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <!-- Canon MG2900 family --> + <printer translate="name" name="Canon MG2900 series" driver="bjc-MG2900-series" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2910" driver="bjc-PIXMA-MG2910" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2920" driver="bjc-PIXMA-MG2920" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2922" driver="bjc-PIXMA-MG2922" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2924" driver="bjc-PIXMA-MG2924" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2940" driver="bjc-PIXMA-MG2940" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2950" driver="bjc-PIXMA-MG2950" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2960" driver="bjc-PIXMA-MG2960" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2970" driver="bjc-PIXMA-MG2970" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2980" driver="bjc-PIXMA-MG2980" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <printer translate="name" name="Canon PIXMA MG2990" driver="bjc-PIXMA-MG2990" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer> + <!-- Canon MG3000 family --> + <printer translate="name" name="Canon MG3000 series" driver="bjc-MG3000-series" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3010" driver="bjc-PIXMA-MG3010" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3020" driver="bjc-PIXMA-MG3020" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3022" driver="bjc-PIXMA-MG3022" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3030" driver="bjc-PIXMA-MG3030" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3040" driver="bjc-PIXMA-MG3040" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3050" driver="bjc-PIXMA-MG3050" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- black model --> + <printer translate="name" name="Canon PIXMA MG3051" driver="bjc-PIXMA-MG3051" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- white model --> + <printer translate="name" name="Canon PIXMA MG3052" driver="bjc-PIXMA-MG3052" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- grey model --> + <printer translate="name" name="Canon PIXMA MG3053" driver="bjc-PIXMA-MG3053" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- blue/white model --> + <printer translate="name" name="Canon PIXMA MG3060" driver="bjc-PIXMA-MG3060" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3070" driver="bjc-PIXMA-MG3070" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3077" driver="bjc-PIXMA-MG3077" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3080" driver="bjc-PIXMA-MG3080" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3090" driver="bjc-PIXMA-MG3090" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MG3100 family --> + <printer translate="name" name="Canon MG3100 series" driver="bjc-MG3100-series" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3100" driver="bjc-PIXMA-MG3100" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3110" driver="bjc-PIXMA-MG3110" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3120" driver="bjc-PIXMA-MG3120" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3122" driver="bjc-PIXMA-MG3122" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG3130" driver="bjc-PIXUS-MG3130" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3140" driver="bjc-PIXMA-MG3140" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3150" driver="bjc-PIXMA-MG3150" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3160" driver="bjc-PIXMA-MG3160" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3170" driver="bjc-PIXMA-MG3170" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3180" driver="bjc-PIXMA-MG3180" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG3200 family --> + <printer translate="name" name="Canon MG3200 series" driver="bjc-MG3200-series" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3210" driver="bjc-PIXMA-MG3210" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3220" driver="bjc-PIXMA-MG3220" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3222" driver="bjc-PIXMA-MG3222" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG3230" driver="bjc-PIXUS-MG3230" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3240" driver="bjc-PIXMA-MG3240" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3250" driver="bjc-PIXMA-MG3250" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3260" driver="bjc-PIXMA-MG3260" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3270" driver="bjc-PIXMA-MG3270" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG3500 family --> + <printer translate="name" name="Canon MG3500 series" driver="bjc-MG3500-series" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3510" driver="bjc-PIXMA-MG3510" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3520" driver="bjc-PIXMA-MG3520" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3522" driver="bjc-PIXMA-MG3522" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG3530" driver="bjc-PIXUS-MG3530" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3540" driver="bjc-PIXMA-MG3540" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3550" driver="bjc-PIXMA-MG3550" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3560" driver="bjc-PIXMA-MG3560" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3570" driver="bjc-PIXMA-MG3570" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3580" driver="bjc-PIXMA-MG3580" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG3600 family --> + <printer translate="name" name="Canon MG3600 series" driver="bjc-MG3600-series" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3610" driver="bjc-PIXMA-MG3610" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3620" driver="bjc-PIXMA-MG3620" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG3630" driver="bjc-PIXUS-MG3630" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3640" driver="bjc-PIXMA-MG3640" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3650" driver="bjc-PIXMA-MG3650" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3670" driver="bjc-PIXMA-MG3670" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3680" driver="bjc-PIXMA-MG3680" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG4100 family --> + <printer translate="name" name="Canon MG4100 series" driver="bjc-MG4100-series" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG4100" driver="bjc-PIXMA-MG4100" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG4110" driver="bjc-PIXMA-MG4110" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG4120" driver="bjc-PIXMA-MG4120" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG4130" driver="bjc-PIXUS-MG4130" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG4140" driver="bjc-PIXMA-MG4140" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG4150" driver="bjc-PIXMA-MG4150" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG4160" driver="bjc-PIXMA-MG4160" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG4170" driver="bjc-PIXMA-MG4170" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG4180" driver="bjc-PIXMA-MG4180" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG4200 family --> + <printer translate="name" name="Canon MG4200 series" driver="bjc-MG4200-series" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG4210" driver="bjc-PIXMA-MG4210" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG4220" driver="bjc-PIXMA-MG4220" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG4230" driver="bjc-PIXUS-MG4230" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG4240" driver="bjc-PIXMA-MG4240" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG4250" driver="bjc-PIXMA-MG4250" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG4260" driver="bjc-PIXMA-MG4260" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG4270" driver="bjc-PIXMA-MG4270" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG4280" driver="bjc-PIXMA-MG4280" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG5100 family --> + <printer translate="name" name="Canon MG5100 series" driver="bjc-MG5100-series" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5100" driver="bjc-PIXMA-MG5100" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5120" driver="bjc-PIXMA-MG5120" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG5130" driver="bjc-PIXUS-MG5130" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5140" driver="bjc-PIXMA-MG5140" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5150" driver="bjc-PIXMA-MG5150" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5170" driver="bjc-PIXMA-MG5170" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5180" driver="bjc-PIXMA-MG5180" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG5200 family --> + <printer translate="name" name="Canon MG5200 series" driver="bjc-MG5200-series" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5200" driver="bjc-PIXMA-MG5200" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5210" driver="bjc-PIXMA-MG5210" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5220" driver="bjc-PIXMA-MG5220" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG5230" driver="bjc-PIXUS-MG5230" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5240" driver="bjc-PIXMA-MG5240" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5250" driver="bjc-PIXMA-MG5250" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5270" driver="bjc-PIXMA-MG5270" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5280" driver="bjc-PIXMA-MG5280" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG5300 family --> + <printer translate="name" name="Canon MG5300 series" driver="bjc-MG5300-series" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5300" driver="bjc-PIXMA-MG5300" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5310" driver="bjc-PIXMA-MG5310" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5320" driver="bjc-PIXMA-MG5320" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG5330" driver="bjc-PIXUS-MG5330" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5340" driver="bjc-PIXMA-MG5340" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5350" driver="bjc-PIXMA-MG5350" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5370" driver="bjc-PIXMA-MG5370" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5380" driver="bjc-PIXMA-MG5380" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG5400 family --> + <printer translate="name" name="Canon MG5400 series" deviceid="MFG:Canon;MDL:MG5400 series;CMD:URF;" driver="bjc-MG5400-series" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5410" driver="bjc-PIXMA-MG5410" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5420" driver="bjc-PIXMA-MG5420" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5422" driver="bjc-PIXMA-MG5422" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG5430" driver="bjc-PIXUS-MG5430" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5440" driver="bjc-PIXMA-MG5440" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5450" driver="bjc-PIXMA-MG5450" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5460" driver="bjc-PIXMA-MG5460" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5470" driver="bjc-PIXMA-MG5470" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5480" driver="bjc-PIXMA-MG5480" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG5500 family --> + <printer translate="name" name="Canon MG5500 series" driver="bjc-MG5500-series" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5510" driver="bjc-PIXMA-MG5510" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5520" driver="bjc-PIXMA-MG5520" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5522" driver="bjc-PIXMA-MG5522" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG5530" driver="bjc-PIXUS-MG5530" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5540" driver="bjc-PIXMA-MG5540" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5550" driver="bjc-PIXMA-MG5550" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5560" driver="bjc-PIXMA-MG5560" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5570" driver="bjc-PIXMA-MG5570" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5580" driver="bjc-PIXMA-MG5580" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG5600 family --> + <printer translate="name" name="Canon MG5600 series" driver="bjc-MG5600-series" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5610" driver="bjc-PIXMA-MG5610" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5620" driver="bjc-PIXMA-MG5620" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5622" driver="bjc-PIXMA-MG5622" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG5630" driver="bjc-PIXUS-MG5630" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5640" driver="bjc-PIXMA-MG5640" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5650" driver="bjc-PIXMA-MG5650" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5660" driver="bjc-PIXMA-MG5660" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5670" driver="bjc-PIXMA-MG5670" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon Mommy Photo MG5670" driver="bjc-Mommy-Photo-MG5670" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5680" driver="bjc-PIXMA-MG5680" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG5700 family --> + <printer translate="name" name="Canon MG5700 series" driver="bjc-MG5700-series" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5710" driver="bjc-PIXMA-MG5710" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5720" driver="bjc-PIXMA-MG5720" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- black model --> + <printer translate="name" name="Canon PIXMA MG5721" driver="bjc-PIXMA-MG5721" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/black model --> + <printer translate="name" name="Canon PIXMA MG5722" driver="bjc-PIXMA-MG5722" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/white model --> + <printer translate="name" name="Canon PIXUS MG5730" driver="bjc-PIXUS-MG5730" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5740" driver="bjc-PIXMA-MG5740" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5750" driver="bjc-PIXMA-MG5750" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- black model --> + <printer translate="name" name="Canon PIXMA MG5751" driver="bjc-PIXMA-MG5751" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- white model --> + <printer translate="name" name="Canon PIXMA MG5752" driver="bjc-PIXMA-MG5752" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/black model --> + <printer translate="name" name="Canon PIXMA MG5753" driver="bjc-PIXMA-MG5753" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/white model --> + <printer translate="name" name="Canon PIXMA MG5770" driver="bjc-PIXMA-MG5770" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5780" driver="bjc-PIXMA-MG5780" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5790" driver="bjc-PIXMA-MG5790" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon Mommy Photo MG5790" driver="bjc-Mommy-Photo-MG5790" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5795" driver="bjc-PIXMA-MG5795" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG6100 family --> + <printer translate="name" name="Canon MG6100 series" driver="bjc-MG6100-series" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6100" driver="bjc-PIXMA-MG6100" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6110" driver="bjc-PIXMA-MG6110" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6120" driver="bjc-PIXMA-MG6120" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG6130" driver="bjc-PIXUS-MG6130" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6140" driver="bjc-PIXMA-MG6140" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6150" driver="bjc-PIXMA-MG6150" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6170" driver="bjc-PIXMA-MG6170" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6180" driver="bjc-PIXMA-MG6180" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG6200 family --> + <printer translate="name" name="Canon MG6200 series" driver="bjc-MG6200-series" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6200" driver="bjc-PIXMA-MG6200" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6210" driver="bjc-PIXMA-MG6210" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6220" driver="bjc-PIXMA-MG6220" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG6230" driver="bjc-PIXUS-MG6230" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6240" driver="bjc-PIXMA-MG6240" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6250" driver="bjc-PIXMA-MG6250" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6270" driver="bjc-PIXMA-MG6270" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6280" driver="bjc-PIXMA-MG6280" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG6300 family --> + <printer translate="name" name="Canon MG6300 series" driver="bjc-MG6300-series" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6310" driver="bjc-PIXMA-MG6310" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6320" driver="bjc-PIXMA-MG6320" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG6330" driver="bjc-PIXUS-MG6330" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6340" driver="bjc-PIXMA-MG6340" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6350" driver="bjc-PIXMA-MG6350" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6360" driver="bjc-PIXMA-MG6360" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6370" driver="bjc-PIXMA-MG6370" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6380" driver="bjc-PIXMA-MG6380" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG6400 family --> + <printer translate="name" name="Canon MG6400 series" driver="bjc-MG6400-series" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6400" driver="bjc-PIXMA-MG6400" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6410" driver="bjc-PIXMA-MG6410" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6420" driver="bjc-PIXMA-MG6420" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6440" driver="bjc-PIXMA-MG6440" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6450" driver="bjc-PIXMA-MG6450" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6470" driver="bjc-PIXMA-MG6470" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG6500 family --> + <printer translate="name" name="Canon MG6500 series" driver="bjc-MG6500-series" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG6530" driver="bjc-PIXUS-MG6530" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG6600 family --> + <printer translate="name" name="Canon MG6600 series" driver="bjc-MG6600-series" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6610" driver="bjc-PIXMA-MG6610" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6620" driver="bjc-PIXMA-MG6620" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6622" driver="bjc-PIXMA-MG6622" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6640" driver="bjc-PIXMA-MG6640" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6650" driver="bjc-PIXMA-MG6650" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6660" driver="bjc-PIXMA-MG6660" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6670" driver="bjc-PIXMA-MG6670" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon Mommy Photo MG6670" driver="bjc-Mommy-Photo-MG6670" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6680" driver="bjc-PIXMA-MG6680" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG6700 family --> + <printer translate="name" name="Canon MG6700 series" driver="bjc-MG6700-series" manufacturer="Canon" model="8006700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG6730" driver="bjc-PIXUS-MG6730" manufacturer="Canon" model="8006700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG6800 family --> + <printer translate="name" name="Canon MG6800 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe,NCCe,IVEC,IVECPLI;SOJ:BJNP2,BJNPe;MDL:MG6800 series;CLS:PRINTER;DES:Canon MG6800 series;VER:2.020;STA:10;FSI:00;HRI:2;MSI:AOFF,B240,DAT,E3,HFSF,JOFF,K21000700,LOFF;PDR:3;PSE:AEEJ21507;CID:CA_IVEC1TYPE4_IJP;" driver="bjc-MG6800-series" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6810" driver="bjc-PIXMA-MG6810" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6820" driver="bjc-PIXMA-MG6820" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- black model --> + <printer translate="name" name="Canon PIXMA MG6821" driver="bjc-PIXMA-MG6821" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/black model --> + <printer translate="name" name="Canon PIXMA MG6822" driver="bjc-PIXMA-MG6822" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/white model --> + <printer translate="name" name="Canon PIXMA MG6840" driver="bjc-PIXMA-MG6840" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6850" driver="bjc-PIXMA-MG6850" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- black model --> + <printer translate="name" name="Canon PIXMA MG6851" driver="bjc-PIXMA-MG6851" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- white model --> + <printer translate="name" name="Canon PIXMA MG6852" driver="bjc-PIXMA-MG6852" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/black model --> + <printer translate="name" name="Canon PIXMA MG6853" driver="bjc-PIXMA-MG6853" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- silver/white model --> + <printer translate="name" name="Canon PIXMA MG6870" driver="bjc-PIXMA-MG6870" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6880" driver="bjc-PIXMA-MG6880" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG6900 family --> + <printer translate="name" name="Canon MG6900 series" driver="bjc-MG6900-series" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG6930" driver="bjc-PIXUS-MG6930" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG7100 family --> + <printer translate="name" name="Canon MG7100 series" driver="bjc-MG7100-series" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7110" driver="bjc-PIXMA-MG7110" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7120" driver="bjc-PIXMA-MG7120" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG7130" driver="bjc-PIXUS-MG7130" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7140" driver="bjc-PIXMA-MG7140" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7150" driver="bjc-PIXMA-MG7150" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7170" driver="bjc-PIXMA-MG7170" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7180" driver="bjc-PIXMA-MG7180" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG7500 family --> + <printer translate="name" name="Canon MG7500 series" driver="bjc-MG7500-series" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7510" driver="bjc-PIXMA-MG7510" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7520" driver="bjc-PIXMA-MG7520" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG7530" driver="bjc-PIXUS-MG7530" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG7530F" driver="bjc-PIXUS-MG7530F" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7540" driver="bjc-PIXMA-MG7540" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7550" driver="bjc-PIXMA-MG7550" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7560" driver="bjc-PIXMA-MG7560" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7570" driver="bjc-PIXMA-MG7570" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon Mommy Photo MG7570" driver="bjc-Mommy-Photo-MG7570" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7580" driver="bjc-PIXMA-MG7580" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG7700 family --> + <printer translate="name" name="Canon MG7700 series" driver="bjc-MG7700-series" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7710" driver="bjc-PIXMA-MG7710" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7720" driver="bjc-PIXMA-MG7720" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG7730" driver="bjc-PIXUS-MG7730" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG7730F" driver="bjc-PIXUS-MG7730F" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7740" driver="bjc-PIXMA-MG7740" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7750" driver="bjc-PIXMA-MG7750" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- black model --> + <printer translate="name" name="Canon PIXMA MG7751" driver="bjc-PIXMA-MG7751" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- white model --> + <printer translate="name" name="Canon PIXMA MG7752" driver="bjc-PIXMA-MG7752" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- red model --> + <printer translate="name" name="Canon PIXMA MG7753" driver="bjc-PIXMA-MG7753" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer><!-- gold model --> + <printer translate="name" name="Canon PIXMA MG7770" driver="bjc-PIXMA-MG7770" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7780" driver="bjc-PIXMA-MG7780" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7790" driver="bjc-PIXMA-MG7790" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG8100 family --> + <printer translate="name" name="Canon MG8100 series" driver="bjc-MG8100-series" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG8100" driver="bjc-PIXMA-MG8100" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG8120" driver="bjc-PIXMA-MG8120" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG8120B" driver="bjc-PIXMA-MG8120B" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG8130" driver="bjc-PIXUS-MG8130" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG8140" driver="bjc-PIXMA-MG8140" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG8150" driver="bjc-PIXMA-MG8150" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG8170" driver="bjc-PIXMA-MG8170" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG8180" driver="bjc-PIXMA-MG8180" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MG8200 family --> + <printer translate="name" name="Canon MG8200 series" driver="bjc-MG8200-series" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG8200" driver="bjc-PIXMA-MG8200" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG8220" driver="bjc-PIXMA-MG8220" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG8230" driver="bjc-PIXUS-MG8230" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG8240" driver="bjc-PIXMA-MG8240" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG8250" driver="bjc-PIXMA-MG8250" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG8270" driver="bjc-PIXMA-MG8270" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG8280" driver="bjc-PIXMA-MG8280" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params">EXPERIMENTAL</printer> + <!-- Canon MX300 family --> + <printer translate="name" name="Canon MX300 series" driver="bjc-MX300-series" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX300" driver="bjc-MULTIPASS-MX300" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MX308" driver="bjc-PIXMA-MX308" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX310 family--> + <printer translate="name" name="Canon MX310 series" driver="bjc-MX310-series" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX310" driver="bjc-MULTIPASS-MX310" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MX318" driver="bjc-PIXMA-MX318" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX320 family--> + <printer translate="name" name="Canon MX320 series" driver="bjc-MX320-series" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX320" driver="bjc-MULTIPASS-MX320" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MX328" driver="bjc-PIXMA-MX328" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX330 family--> + <printer translate="name" name="Canon MX330 series" driver="bjc-MX330-series" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX330" driver="bjc-MULTIPASS-MX330" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MX338" driver="bjc-PIXMA-MX338" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX340 family --> + <printer translate="name" name="Canon MX340 series" driver="bjc-MX340-series" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX340" driver="bjc-MULTIPASS-MX340" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MX347" driver="bjc-PIXMA-MX347" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX348" driver="bjc-PIXMA-MX348" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX350 family --> + <printer translate="name" name="Canon MX350 series" driver="bjc-MX350-series" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX350" driver="bjc-MULTIPASS-MX350" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MX350" driver="bjc-PIXUS-MX350" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX357" driver="bjc-PIXMA-MX357" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX358" driver="bjc-PIXMA-MX358" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX360 family --> + <printer translate="name" name="Canon MX360 series" driver="bjc-MX360-series" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX360" driver="bjc-MULTIPASS-MX360" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MX366" driver="bjc-PIXMA-MX366" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX368" driver="bjc-PIXMA-MX368" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX370 family --> + <printer translate="name" name="Canon MX370 series" driver="bjc-MX370-series" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX370" driver="bjc-MULTIPASS-MX370" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MX371" driver="bjc-PIXMA-MX371" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX372" driver="bjc-PIXMA-MX372" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX374" driver="bjc-PIXMA-MX374" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX375" driver="bjc-PIXMA-MX375" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX376" driver="bjc-PIXMA-MX376" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX377" driver="bjc-PIXMA-MX377" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX378" driver="bjc-PIXMA-MX378" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX390 family --> + <printer translate="name" name="Canon MX390 series" driver="bjc-MX390-series" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX391" driver="bjc-PIXMA-MX391" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX392" driver="bjc-PIXMA-MX392" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX394" driver="bjc-PIXMA-MX394" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX395" driver="bjc-PIXMA-MX395" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX396" driver="bjc-PIXMA-MX396" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX397" driver="bjc-PIXMA-MX397" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX398" driver="bjc-PIXMA-MX398" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX410 family --> + <printer translate="name" name="Canon MX410 series" driver="bjc-MX410-series" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX410" driver="bjc-MULTIPASS-MX410" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MX416" driver="bjc-PIXMA-MX416" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX418" driver="bjc-PIXMA-MX418" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX420 family --> + <printer translate="name" name="Canon MX420 series" driver="bjc-MX420-series" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX420" driver="bjc-MULTIPASS-MX420" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MX420" driver="bjc-PIXUS-MX420" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX426" driver="bjc-PIXMA-MX426" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX428" driver="bjc-PIXMA-MX428" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX430 family --> + <printer translate="name" name="Canon MX430 series" driver="bjc-MX430-series" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX430" driver="bjc-MULTIPASS-MX430" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MX431" driver="bjc-PIXMA-MX431" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX432" driver="bjc-PIXMA-MX432" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX434" driver="bjc-PIXMA-MX434" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX435" driver="bjc-PIXMA-MX435" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX436" driver="bjc-PIXMA-MX436" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX437" driver="bjc-PIXMA-MX437" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX438" driver="bjc-PIXMA-MX438" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX439" driver="bjc-PIXMA-MX439" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX450 family --> + <printer translate="name" name="Canon MX450 series" driver="bjc-MX450-series" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX451" driver="bjc-PIXMA-MX451" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX452" driver="bjc-PIXMA-MX452" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX454" driver="bjc-PIXMA-MX454" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX455" driver="bjc-PIXMA-MX455" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX456" driver="bjc-PIXMA-MX456" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX457" driver="bjc-PIXMA-MX457" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX458" driver="bjc-PIXMA-MX458" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX459" driver="bjc-PIXMA-MX459" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX470 family --> + <printer translate="name" name="Canon MX470 series" driver="bjc-MX470-series" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX471" driver="bjc-PIXMA-MX471" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX472" driver="bjc-PIXMA-MX472" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX474" driver="bjc-PIXMA-MX474" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX475" driver="bjc-PIXMA-MX475" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX476" driver="bjc-PIXMA-MX476" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX477" driver="bjc-PIXMA-MX477" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX478" driver="bjc-PIXMA-MX478" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX479" driver="bjc-PIXMA-MX479" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX490 family --> + <printer translate="name" name="Canon MX490 series" driver="bjc-MX490-series" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX490" driver="bjc-PIXMA-MX490" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX492" driver="bjc-PIXMA-MX492" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX494" driver="bjc-PIXMA-MX494" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX495" driver="bjc-PIXMA-MX495" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX496" driver="bjc-PIXMA-MX496" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX497" driver="bjc-PIXMA-MX497" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX498" driver="bjc-PIXMA-MX498" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX499" driver="bjc-PIXMA-MX499" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX510 family --> + <printer translate="name" name="Canon MX510 series" driver="bjc-MX510-series" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX510" driver="bjc-MULTIPASS-MX510" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MX511" driver="bjc-PIXMA-MX511" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX512" driver="bjc-PIXMA-MX512" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MX513" driver="bjc-PIXUS-MX513" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX514" driver="bjc-PIXMA-MX514" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX515" driver="bjc-PIXMA-MX515" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX516" driver="bjc-PIXMA-MX516" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX517" driver="bjc-PIXMA-MX517" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX518" driver="bjc-PIXMA-MX518" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX520 family --> + <printer translate="name" name="Canon MX520 series" driver="bjc-MX520-series" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX521" driver="bjc-PIXMA-MX521" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX522" driver="bjc-PIXMA-MX522" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MX523" driver="bjc-PIXUS-MX523" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX524" driver="bjc-PIXMA-MX524" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX525" driver="bjc-PIXMA-MX525" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX526" driver="bjc-PIXMA-MX526" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX527" driver="bjc-PIXMA-MX527" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX528" driver="bjc-PIXMA-MX528" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX530 family --> + <printer translate="name" name="Canon MX530 series" driver="bjc-MX530-series" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX531" driver="bjc-PIXMA-MX531" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX532" driver="bjc-PIXMA-MX532" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX534" driver="bjc-PIXMA-MX534" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX535" driver="bjc-PIXMA-MX535" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX536" driver="bjc-PIXMA-MX536" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX537" driver="bjc-PIXMA-MX537" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX538" driver="bjc-PIXMA-MX538" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX700 family --> + <printer translate="name" name="Canon MX700 series" driver="bjc-MX700-series" manufacturer="Canon" model="9000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX700" driver="bjc-MULTIPASS-MX700" manufacturer="Canon" model="9000700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX710" driver="bjc-MULTIPASS-MX710" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MX711" driver="bjc-PIXMA-MX711" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX712" driver="bjc-PIXMA-MX712" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX714" driver="bjc-PIXMA-MX714" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX715" driver="bjc-PIXMA-MX715" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX720 family --> + <printer translate="name" name="Canon MX720 series" driver="bjc-MX720-series" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX721" driver="bjc-PIXMA-MX721" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX722" driver="bjc-PIXMA-MX722" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX725" driver="bjc-PIXMA-MX725" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX726" driver="bjc-PIXMA-MX726" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX727" driver="bjc-PIXMA-MX727" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX728" driver="bjc-PIXMA-MX728" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX850 family--> + <printer translate="name" name="Canon MX850 series" driver="bjc-MX850-series" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX850" driver="bjc-MULTIPASS-MX850" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MX850" driver="bjc-PIXUS-MX850" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX860 family --> + <printer translate="name" name="Canon MX860 series" driver="bjc-MX860-series" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX860" driver="bjc-MULTIPASS-MX860" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MX860" driver="bjc-PIXUS-MX860" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX868" driver="bjc-PIXMA-MX868" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX870 family --> + <printer translate="name" name="Canon MX870 series" driver="bjc-MX870-series" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX870" driver="bjc-MULTIPASS-MX870" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MX870" driver="bjc-PIXUS-MX870" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX876" driver="bjc-PIXMA-MX876" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX880 family --> + <printer translate="name" name="Canon MX880 series" driver="bjc-MX880-series" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX880" driver="bjc-MULTIPASS-MX880" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MX882" driver="bjc-PIXMA-MX882" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MX883" driver="bjc-PIXUS-MX883" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX884" driver="bjc-PIXMA-MX884" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX885" driver="bjc-PIXMA-MX885" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX886" driver="bjc-PIXMA-MX886" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX888" driver="bjc-PIXMA-MX888" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX890 family --> + <printer translate="name" name="Canon MX890 series" driver="bjc-MX890-series" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX890" driver="bjc-MULTIPASS-MX890" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA MX892" driver="bjc-PIXMA-MX892" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MX893" driver="bjc-PIXUS-MX893" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX894" driver="bjc-PIXMA-MX894" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX895" driver="bjc-PIXMA-MX895" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX897" driver="bjc-PIXMA-MX897" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX898" driver="bjc-PIXMA-MX898" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX920 family --> + <printer translate="name" name="Canon MX920 series" driver="bjc-MX920-series" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX922" driver="bjc-PIXMA-MX922" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MX923" driver="bjc-PIXUS-MX923" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX924" driver="bjc-PIXMA-MX924" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX925" driver="bjc-PIXMA-MX925" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX926" driver="bjc-PIXMA-MX926" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX927" driver="bjc-PIXMA-MX927" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX928" driver="bjc-PIXMA-MX928" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MX7600 family --> + <printer translate="name" name="Canon MX7600 series" driver="bjc-MX7600-series" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MX7600" driver="bjc-MULTIPASS-MX7600" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXUS MX7600" driver="bjc-PIXUS-MX7600" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon E400 family --> + <printer translate="name" name="Canon E400 series" driver="bjc-E400-series" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E400" driver="bjc-PIXMA-E400" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E401" driver="bjc-PIXMA-E401" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E404" driver="bjc-PIXMA-E404" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E408" driver="bjc-PIXMA-E408" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E409" driver="bjc-PIXMA-E409" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon E410 family --> + <printer translate="name" name="Canon E410 series" driver="bjc-E410-series" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E410" driver="bjc-PIXMA-E410" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E414" driver="bjc-PIXMA-E414" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E417" driver="bjc-PIXMA-E417" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E418" driver="bjc-PIXMA-E418" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon E460 family --> + <printer translate="name" name="Canon E460 series" driver="bjc-E460-series" manufacturer="Canon" model="12000460" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E460" driver="bjc-PIXMA-E460" manufacturer="Canon" model="12000460" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E461" driver="bjc-PIXMA-E461" manufacturer="Canon" model="12000460" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E464" driver="bjc-PIXMA-E464" manufacturer="Canon" model="12000460" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E468" driver="bjc-PIXMA-E468" manufacturer="Canon" model="12000460" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon E470 family --> + <printer translate="name" name="Canon E470 series" driver="bjc-E470-series" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E470" driver="bjc-PIXMA-E470" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E471" driver="bjc-PIXMA-E471" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E474" driver="bjc-PIXMA-E474" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E477" driver="bjc-PIXMA-E477" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E478" driver="bjc-PIXMA-E478" manufacturer="Canon" model="12000470" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon E480 family --> + <printer translate="name" name="Canon E480 series" driver="bjc-E480-series" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E480" driver="bjc-PIXMA-E480" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E481" driver="bjc-PIXMA-E481" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E484" driver="bjc-PIXMA-E484" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E488" driver="bjc-PIXMA-E488" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E489" driver="bjc-PIXMA-E489" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon E500 family --> + <printer translate="name" name="Canon E500 series" driver="bjc-E500-series" manufacturer="Canon" model="12000500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E500" driver="bjc-MULTIPASS-E500" manufacturer="Canon" model="12000500" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver 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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E510" driver="bjc-PIXMA-E510" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E514" driver="bjc-PIXMA-E514" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E518" driver="bjc-PIXMA-E518" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon E560 family --> + <printer translate="name" name="Canon E560 series" driver="bjc-E560-series" manufacturer="Canon" model="12000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E560" driver="bjc-PIXMA-E560" manufacturer="Canon" model="12000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E568" driver="bjc-PIXMA-E568" manufacturer="Canon" model="12000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E569" driver="bjc-PIXMA-E569" manufacturer="Canon" model="12000560" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon E600 family --> + <printer translate="name" name="Canon E600 series" driver="bjc-E600-series" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E600" driver="bjc-MULTIPASS-E600" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- driver legacy names used --> + <printer translate="name" name="Canon PIXMA E608" driver="bjc-PIXMA-E608" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon E610 family --> + <printer translate="name" name="Canon E610 series" driver="bjc-E610-series" manufacturer="Canon" model="12000610" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E610" driver="bjc-PIXMA-E610" manufacturer="Canon" model="12000610" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E618" driver="bjc-PIXMA-E618" manufacturer="Canon" model="12000610" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon E3100 family --> + <printer translate="name" name="Canon E3100 series" driver="bjc-E3100-series" manufacturer="Canon" model="12003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA E3170" driver="bjc-PIXMA-E3170" manufacturer="Canon" model="12003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon PIXMA G1000 family --> + <printer translate="name" name="Canon G1000 series" driver="bjc-G1000-series" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G1000" driver="bjc-PIXMA-G1000" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G1100" driver="bjc-PIXMA-G1100" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G1200" driver="bjc-PIXMA-G1200" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G1400" driver="bjc-PIXMA-G1400" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G1500" driver="bjc-PIXMA-G1500" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G1800" driver="bjc-PIXMA-G1800" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G1900" driver="bjc-PIXMA-G1900" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon PIXMA G2000 family --> + <printer translate="name" name="Canon G2000 series" driver="bjc-G2000-series" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G2000" driver="bjc-PIXMA-G2000" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G2002" driver="bjc-PIXMA-G2002" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G2100" driver="bjc-PIXMA-G2100" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G2200" driver="bjc-PIXMA-G2200" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G2400" driver="bjc-PIXMA-G2400" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G2500" driver="bjc-PIXMA-G2500" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G2600" driver="bjc-PIXMA-G2600" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G2800" driver="bjc-PIXMA-G2800" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G2900" driver="bjc-PIXMA-G2900" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon PIXMA G3000 family --> + <printer translate="name" name="Canon G3000 series" driver="bjc-G3000-series" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G3000" driver="bjc-PIXMA-G3000" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G3100" driver="bjc-PIXMA-G3100" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G3200" driver="bjc-PIXMA-G3200" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G3400" driver="bjc-PIXMA-G3400" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G3500" driver="bjc-PIXMA-G3500" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G3600" driver="bjc-PIXMA-G3600" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G3800" driver="bjc-PIXMA-G3800" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G3900" driver="bjc-PIXMA-G3900" manufacturer="Canon" model="17001000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon PIXMA G4000 family --> + <printer translate="name" name="Canon G4000 series" driver="bjc-G4000-series" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G4000" driver="bjc-PIXMA-G4000" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G4100" driver="bjc-PIXMA-G4100" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G4200" driver="bjc-PIXMA-G4200" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G4400" driver="bjc-PIXMA-G4400" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G4500" driver="bjc-PIXMA-G4500" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G4600" driver="bjc-PIXMA-G4600" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G4800" driver="bjc-PIXMA-G4800" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA G4900" driver="bjc-PIXMA-G4900" manufacturer="Canon" model="17004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon PIXMA P200 --> + <printer translate="name" name="Canon PIXMA P200" driver="bjc-PIXMA-P200" manufacturer="Canon" model="13000200" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon TS3100 family --> + <printer translate="name" name="Canon TS3100 series" driver="bjc-TS3100-series" manufacturer="Canon" model="12003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS3110" driver="bjc-PIXMA-TS3110" manufacturer="Canon" model="12003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS3120" driver="bjc-PIXMA-TS3120" manufacturer="Canon" model="12003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS3130" driver="bjc-PIXMA-TS3130" manufacturer="Canon" model="12003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS3140" driver="bjc-PIXMA-TS3140" manufacturer="Canon" model="12003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS3150" driver="bjc-PIXMA-TS3150" manufacturer="Canon" model="12003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS3160" driver="bjc-PIXMA-TS3160" manufacturer="Canon" model="12003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS3170" driver="bjc-PIXMA-TS3170" manufacturer="Canon" model="12003100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon TS5000 family --> + <printer translate="name" name="Canon TS5000 series" driver="bjc-TS5000-series" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS5010" driver="bjc-PIXMA-TS5010" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS5020" driver="bjc-PIXMA-TS5020" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS5030" driver="bjc-PIXMA-TS5030" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS5040" driver="bjc-PIXMA-TS5040" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS5050" driver="bjc-PIXMA-TS5050" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- black model --> + <printer translate="name" name="Canon PIXMA TS5051" driver="bjc-PIXMA-TS5051" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- white model --> + <printer translate="name" name="Canon PIXMA TS5053" driver="bjc-PIXMA-TS5053" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- grey model --> + <printer translate="name" name="Canon PIXMA TS5055" driver="bjc-PIXMA-TS5055" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- black model --> + <printer translate="name" name="Canon PIXMA TS5060" driver="bjc-PIXMA-TS5060" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS5070" driver="bjc-PIXMA-TS5070" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS5080" driver="bjc-PIXMA-TS5080" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS5090" driver="bjc-PIXMA-TS5090" manufacturer="Canon" model="18005000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon TS6000 family --> + <printer translate="name" name="Canon TS6000 series" driver="bjc-TS6000-series" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS6010" driver="bjc-PIXMA-TS6010" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS6020" driver="bjc-PIXMA-TS6020" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS6030" driver="bjc-PIXMA-TS6030" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS6040" driver="bjc-PIXMA-TS6040" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS6050" driver="bjc-PIXMA-TS6050" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- black model --> + <printer translate="name" name="Canon PIXMA TS6051" driver="bjc-PIXMA-TS6051" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- white model --> + <printer translate="name" name="Canon PIXMA TS6052" driver="bjc-PIXMA-TS6052" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- grey model --> + <printer translate="name" name="Canon PIXMA TS6060" driver="bjc-PIXMA-TS6060" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS6070" driver="bjc-PIXMA-TS6070" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS6080" driver="bjc-PIXMA-TS6080" manufacturer="Canon" model="18006000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon TS8000 family --> + <printer translate="name" name="Canon TS8000 series" driver="bjc-TS8000-series" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS8010" driver="bjc-PIXMA-TS8010" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS8020" driver="bjc-PIXMA-TS8020" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS8030" driver="bjc-PIXMA-TS8030" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS8040" driver="bjc-PIXMA-TS8040" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS8050" driver="bjc-PIXMA-TS8050" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- black model --> + <printer translate="name" name="Canon PIXMA TS8051" driver="bjc-PIXMA-TS8051" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- white model --> + <printer translate="name" name="Canon PIXMA TS8052" driver="bjc-PIXMA-TS8052" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- red model --> + <printer translate="name" name="Canon PIXMA TS8053" driver="bjc-PIXMA-TS8053" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- brown model --> + <printer translate="name" name="Canon PIXMA TS8060" driver="bjc-PIXMA-TS8060" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS8070" driver="bjc-PIXMA-TS8070" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS8080" driver="bjc-PIXMA-TS8080" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS8090" driver="bjc-PIXMA-TS8090" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon TS9000 family --> + <printer translate="name" name="Canon TS9000 series" driver="bjc-TS9000-series" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS9010" driver="bjc-PIXMA-TS9010" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS9020" driver="bjc-PIXMA-TS9020" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS9030" driver="bjc-PIXMA-TS9030" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS9040" driver="bjc-PIXMA-TS9040" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS9050" driver="bjc-PIXMA-TS9050" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- white model --> + <printer translate="name" name="Canon PIXMA TS9055" driver="bjc-PIXMA-TS9055" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer><!-- red model --> + <printer translate="name" name="Canon PIXMA TS9060" driver="bjc-PIXMA-TS9060" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA TS9080" driver="bjc-PIXMA-TS9080" manufacturer="Canon" model="18008000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MAXIFY iB4000 family --> + <printer translate="name" name="Canon iB4000 series" driver="bjc-iB4000-series" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4010" driver="bjc-MAXIFY-iB4010" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4020" driver="bjc-MAXIFY-iB4020" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4030" driver="bjc-MAXIFY-iB4030" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4040" driver="bjc-MAXIFY-iB4040" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4050" driver="bjc-MAXIFY-iB4050" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4060" driver="bjc-MAXIFY-iB4060" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4070" driver="bjc-MAXIFY-iB4070" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4080" driver="bjc-MAXIFY-iB4080" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4090" driver="bjc-MAXIFY-iB4090" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MAXIFY iB4100 family --> + <printer translate="name" name="Canon iB4100 series" driver="bjc-iB4100-series" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4110" driver="bjc-MAXIFY-iB4110" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4120" driver="bjc-MAXIFY-iB4120" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4130" driver="bjc-MAXIFY-iB4130" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4140" driver="bjc-MAXIFY-iB4140" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4150" driver="bjc-MAXIFY-iB4150" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4170" driver="bjc-MAXIFY-iB4170" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4180" driver="bjc-MAXIFY-iB4180" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY iB4190" driver="bjc-MAXIFY-iB4190" manufacturer="Canon" model="14004100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MAXIFY MB2000 family --> + <printer translate="name" name="Canon MB2000 series" driver="bjc-MB2000-series" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2010" driver="bjc-MAXIFY-MB2010" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2020" driver="bjc-MAXIFY-MB2020" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2030" driver="bjc-MAXIFY-MB2030" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2040" driver="bjc-MAXIFY-MB2040" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2050" driver="bjc-MAXIFY-MB2050" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2060" driver="bjc-MAXIFY-MB2060" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MAXIFY MB2100 family --> + <printer translate="name" name="Canon MB2100 series" driver="bjc-MB2100-series" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2110" driver="bjc-MAXIFY-MB2110" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2120" driver="bjc-MAXIFY-MB2120" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2130" driver="bjc-MAXIFY-MB2130" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2140" driver="bjc-MAXIFY-MB2140" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2150" driver="bjc-MAXIFY-MB2150" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2160" driver="bjc-MAXIFY-MB2160" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MAXIFY MB2300 family --> + <printer translate="name" name="Canon MB2300 series" driver="bjc-MB2300-series" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2320" driver="bjc-MAXIFY-MB2320" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2330" driver="bjc-MAXIFY-MB2330" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2340" driver="bjc-MAXIFY-MB2340" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2350" driver="bjc-MAXIFY-MB2350" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2360" driver="bjc-MAXIFY-MB2360" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2390" driver="bjc-MAXIFY-MB2390" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MAXIFY MB2700 family --> + <printer translate="name" name="Canon MB2700 series" driver="bjc-MB2700-series" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2710" driver="bjc-MAXIFY-MB2710" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2720" driver="bjc-MAXIFY-MB2720" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2730" driver="bjc-MAXIFY-MB2730" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2740" driver="bjc-MAXIFY-MB2740" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2750" driver="bjc-MAXIFY-MB2750" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2760" driver="bjc-MAXIFY-MB2760" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB2790" driver="bjc-MAXIFY-MB2790" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MAXIFY MB5000 family --> + <printer translate="name" name="Canon MB5000 series" driver="bjc-MB5000-series" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5020" driver="bjc-MAXIFY-MB5020" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5030" driver="bjc-MAXIFY-MB5030" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5040" driver="bjc-MAXIFY-MB5040" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5050" driver="bjc-MAXIFY-MB5050" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5060" driver="bjc-MAXIFY-MB5060" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5070" driver="bjc-MAXIFY-MB5070" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5080" driver="bjc-MAXIFY-MB5080" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5090" driver="bjc-MAXIFY-MB5090" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MAXIFY MB5100 family --> + <printer translate="name" name="Canon MB5100 series" driver="bjc-MB5100-series" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5110" driver="bjc-MAXIFY-MB5110" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5120" driver="bjc-MAXIFY-MB5120" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5130" driver="bjc-MAXIFY-MB5130" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5140" driver="bjc-MAXIFY-MB5140" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5150" driver="bjc-MAXIFY-MB5150" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5160" driver="bjc-MAXIFY-MB5160" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5170" driver="bjc-MAXIFY-MB5170" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5180" driver="bjc-MAXIFY-MB5180" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5190" driver="bjc-MAXIFY-MB5190" manufacturer="Canon" model="15002100" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MAXIFY MB5300 family --> + <printer translate="name" name="Canon MB5300 series" driver="bjc-MB5300-series" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5310" driver="bjc-MAXIFY-MB5310" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5320" driver="bjc-MAXIFY-MB5320" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5330" driver="bjc-MAXIFY-MB5330" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5340" driver="bjc-MAXIFY-MB5340" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5350" driver="bjc-MAXIFY-MB5350" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5360" driver="bjc-MAXIFY-MB5360" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5370" driver="bjc-MAXIFY-MB5370" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5390" driver="bjc-MAXIFY-MB5390" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- Canon MAXIFY MB5400 family --> + <printer translate="name" name="Canon MB5400 series" driver="bjc-MB5400-series" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5410" driver="bjc-MAXIFY-MB5410" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5420" driver="bjc-MAXIFY-MB5420" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5430" driver="bjc-MAXIFY-MB5430" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5440" driver="bjc-MAXIFY-MB5440" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5450" driver="bjc-MAXIFY-MB5450" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5460" driver="bjc-MAXIFY-MB5460" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5470" driver="bjc-MAXIFY-MB5470" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5480" driver="bjc-MAXIFY-MB5480" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon MAXIFY MB5490" driver="bjc-MAXIFY-MB5490" manufacturer="Canon" model="15002700" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <!-- --> + <printer translate="name" name="Canon PIXUS 50i" driver="bjc-50i" manufacturer="Canon" model="2000050" parameters="density_800_params" /> + <printer translate="name" name="Canon PIXUS 80i" driver="bjc-80i" manufacturer="Canon" model="2000080" parameters="density_800_params" /> + <printer translate="name" name="Canon PIXUS 450i" driver="bjc-450i" manufacturer="Canon" model="2000450" parameters="density_800_params" /> + <printer translate="name" name="Canon PIXUS 455i" driver="bjc-455i" manufacturer="Canon" model="2000455" parameters="density_800_params" /> + <printer translate="name" name="Canon PIXUS 470PD" driver="bjc-470PD" manufacturer="Canon" model="2000450" parameters="density_800_params" /> + <printer translate="name" name="Canon PIXUS 475PD" driver="bjc-475PD" manufacturer="Canon" model="2000455" parameters="density_800_params" /> + <printer translate="name" name="Canon PIXUS 550i" driver="bjc-550i" manufacturer="Canon" model="2000550" parameters="density_800_params" /> + <printer translate="name" name="Canon PIXUS 560i" driver="bjc-560i" manufacturer="Canon" model="2000560" parameters="gamma_6_density_800_params" /> + <printer translate="name" name="Canon PIXUS 850i" driver="bjc-850i" manufacturer="Canon" model="2000850" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXUS 860i" driver="bjc-860i" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXUS 865R" driver="bjc-865R" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXUS 900PD" driver="bjc-900PD" manufacturer="Canon" model="2000900" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXUS 950i" driver="bjc-950i" manufacturer="Canon" model="2000950" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXUS 960i" driver="bjc-960i" manufacturer="Canon" model="2000960" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXUS 990i" driver="bjc-990i" manufacturer="Canon" model="2000990" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXUS 6100i" driver="bjc-6100i" manufacturer="Canon" model="2006100" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXUS 6500i" driver="bjc-6500i" manufacturer="Canon" model="2006100" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXUS 9100i" driver="bjc-9100i" manufacturer="Canon" model="2009100" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon PIXUS 9900i" driver="bjc-9900i" manufacturer="Canon" model="2009900" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon i70" driver="bjc-i70" manufacturer="Canon" model="2000050" parameters="density_800_params" /> + <printer translate="name" name="Canon i80" driver="bjc-i80" manufacturer="Canon" model="2000080" parameters="density_800_params" /> + <printer translate="name" name="Canon i450" driver="bjc-i450" manufacturer="Canon" model="2000450" parameters="density_800_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i450X" driver="bjc-i450X" manufacturer="Canon" model="2000450" parameters="density_800_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i455" driver="bjc-i455" manufacturer="Canon" model="2000455" parameters="density_800_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i455X" driver="bjc-i455X" manufacturer="Canon" model="2000455" parameters="density_800_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i470D" driver="bjc-i470D" manufacturer="Canon" model="2000450" parameters="density_800_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i475D" driver="bjc-i475D" manufacturer="Canon" model="2000455" parameters="density_800_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i550" driver="bjc-i550" manufacturer="Canon" model="2000550" parameters="density_800_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i550X" driver="bjc-i550X" manufacturer="Canon" model="2000550" parameters="density_800_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i560" driver="bjc-i560" manufacturer="Canon" model="2000560" parameters="gamma_6_density_800_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i560X" driver="bjc-i560X" manufacturer="Canon" model="2000560" parameters="gamma_6_density_800_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i850old" driver="bjc-i850old" manufacturer="Canon" model="3003000" parameters="PIXMA_iP4000_params">Original printers are named with "old" appended</printer> + <printer translate="name" name="Canon i850" driver="bjc-i850" manufacturer="Canon" model="2000850" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i860old" driver="bjc-i860old" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params">Original printers are named with "old" appended</printer> + <printer translate="name" name="Canon i860" driver="bjc-i860" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i865old" driver="bjc-i865old" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params">Original printers are named with "old" appended</printer> + <printer translate="name" name="Canon i865" driver="bjc-i865" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i900D" driver="bjc-i900D" manufacturer="Canon" model="2000900" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i905D" driver="bjc-i905D" manufacturer="Canon" model="2000900" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i950" driver="bjc-i950" manufacturer="Canon" model="2000950" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i960" driver="bjc-i960" manufacturer="Canon" model="2000960" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i965" driver="bjc-i965" manufacturer="Canon" model="2000960" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i990" driver="bjc-i990" manufacturer="Canon" model="2000990" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i6100" driver="bjc-i6100" manufacturer="Canon" model="2006100" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon i6500" driver="bjc-i6500" manufacturer="Canon" model="2006100" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon i9100" driver="bjc-i9100" manufacturer="Canon" model="2009100" parameters="PIXMA_iP4000_params" /> + <printer translate="name" name="Canon i9900" driver="bjc-i9900" manufacturer="Canon" model="2009900" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon i9950" driver="bjc-i9950" manufacturer="Canon" model="2009900" parameters="PIXMA_iP4000_params">EXPERIMENTAL</printer> + </family> + </printdef> +</gutenprint> diff --git a/src/xml/printers/check_duplicate_printers.c b/src/xml/printers/check_duplicate_printers.c new file mode 100644 index 0000000..52c46e6 --- /dev/null +++ b/src/xml/printers/check_duplicate_printers.c @@ -0,0 +1,44 @@ +/* + * Check for duplicate printers (at build time). + * + * Copyright 2018 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, see <https://www.gnu.org/licenses/>. + */ + +#include <gutenprint/gutenprint.h> +#include <stdlib.h> +#include <stdio.h> +#include <fcntl.h> +#include <unistd.h> +#include <string.h> +#include <limits.h> + +int +main(int argc, char **argv) +{ + if (getenv("STP_TEST_LOG_PREFIX")) + { + char path[PATH_MAX+1]; + if (getenv("BUILD_VERBOSE")) + dup2(2, 3); + (void) snprintf(path, PATH_MAX, "%scheck_duplicate_printers_%d.log", getenv("STP_TEST_LOG_PREFIX"), getpid()); + stdout = freopen(path, "w", stdout); + dup2(1, 2); + } + setenv("STP_CHECK_DUPLICATE_PRINTERS", "TRUE", 1); + fprintf(stderr, "CHECK_DUPLICATE_PRINTERS\n"); + stp_init(); /* Aborts if duplicates are found */ + return 0; +} diff --git a/src/xml/printers/dpl.xml b/src/xml/printers/dpl.xml new file mode 100644 index 0000000..8b214ff --- /dev/null +++ b/src/xml/printers/dpl.xml @@ -0,0 +1,83 @@ +<?xml version="1.0"?> + +<!-- + + XML description of printers known to libgutenprint + You can add additional printers here, but the underlying driver has + to know about the model number. You can have different printers + with the same model number but different parameters; this means + printers that are functionally identical but have different ink + characteristics. + + Each printer must have a unique driver name (even if the underlying + driver is identical) to allow a unique mapping between driver + name and printer name (the mapping is done both ways). + + NOTE TO TRANSLATORS: Printer names should not be translated into + their equivalents (the same printer sold under a different name) + in other countries. The correct way to handle this is to add + another printer to this list. Translations should be done for + e. g. character sets. + + For example, a Japanese printer will have the same model name wherever + it is used and with whatever language the user speaks. +--> + +<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, see https://www.gnu.org/licenses/. +</copyright> + <printdef> + <family name="dpl"> + <parameters name="dpl_params"> + <parameter type="float" name="Gamma">1.000</parameter> + <parameter type="float" name="Density">1.000</parameter> + </parameters> + <printer translate="name" name="Datamax-ONeil I4212e Mark II" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:I4212e Mark II;" color="false" driver="datamax_oneil_I4212e" manufacturer="DatamaxONeil" model="10017" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil I4310e Mark II" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:I4310e Mark II;" color="false" driver="datamax_oneil_I4310e" manufacturer="DatamaxONeil" model="10018" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil I4606e Mark II" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:I4606e Mark II;" color="false" driver="datamax_oneil_I4606e" manufacturer="DatamaxONeil" model="10020" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil E4204B Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4204B Mark III;" color="false" driver="datamax_oneil_E4204B" manufacturer="DatamaxONeil" model="10021" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil E4304B Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4304B Mark III;" color="false" driver="datamax_oneil_E4304B" manufacturer="DatamaxONeil" model="10022" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil E4205A Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4205A Mark III;" color="false" driver="datamax_oneil_E4205A" manufacturer="DatamaxONeil" model="10023" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil E4305A Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4305A Mark III;" color="false" driver="datamax_oneil_E4305A" manufacturer="DatamaxONeil" model="10024" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil E4206P Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4206P Mark III;" color="false" driver="datamax_oneil_E4206P" manufacturer="DatamaxONeil" model="10025" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil E4305P Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4305P Mark III;" color="false" driver="datamax_oneil_E4305P" manufacturer="DatamaxONeil" model="10026" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil E4206L Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4206L Mark III;" color="false" driver="datamax_oneil_E4206L" manufacturer="DatamaxONeil" model="10027" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil E4305L Mark III" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:E4305L Mark III;" color="false" driver="datamax_oneil_E4305L" manufacturer="DatamaxONeil" model="10028" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil RL3e" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:RL3e;" color="false" driver="datamax_oneil_RL3e" manufacturer="DatamaxONeil" model="10029" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil RL4e" deviceid="MFG:Datamax-O'Neil;CMD:DPL;MDL:RL4e;" color="false" driver="datamax_oneil_RL4e" manufacturer="DatamaxONeil" model="10030" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil H4212" deviceid="MFG:Datamax;CMD:DPL;MDL:H4212;" color="false" driver="datamax_oneil_H4212" manufacturer="DatamaxONeil" model="10031" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil H4212X" deviceid="MFG:Datamax;CMD:DPL;MDL:H4212X;" color="false" driver="datamax_oneil_H4212X" manufacturer="DatamaxONeil" model="10032" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil H4310" deviceid="MFG:Datamax;CMD:DPL;MDL:H4310;" color="false" driver="datamax_oneil_H4310" manufacturer="DatamaxONeil" model="10033" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil H4310X" deviceid="MFG:Datamax;CMD:DPL;MDL:H4310X;" color="false" driver="datamax_oneil_H4310X" manufacturer="DatamaxONeil" model="10034" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil H4408" deviceid="MFG:Datamax;CMD:DPL;MDL:H4408;" color="false" driver="datamax_oneil_H4408" manufacturer="DatamaxONeil" model="10035" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil H4606" deviceid="MFG:Datamax;CMD:DPL;MDL:H4606;" color="false" driver="datamax_oneil_H4606" manufacturer="DatamaxONeil" model="10036" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil H4606X" deviceid="MFG:Datamax;CMD:DPL;MDL:H4606X;" color="false" driver="datamax_oneil_H4606X" manufacturer="DatamaxONeil" model="10037" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil H6210" deviceid="MFG:Datamax;CMD:DPL;MDL:H6210;" color="false" driver="datamax_oneil_H6210" manufacturer="DatamaxONeil" model="10038" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil H6210X" deviceid="MFG:Datamax;CMD:DPL;MDL:H6210X;" color="false" driver="datamax_oneil_H6210X" manufacturer="DatamaxONeil" model="10039" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil H6212" deviceid="MFG:Datamax;CMD:DPL;MDL:H6212;" color="false" driver="datamax_oneil_H6212" manufacturer="DatamaxONeil" model="10040" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil H6212X" deviceid="MFG:Datamax;CMD:DPL;MDL:H6212X;" color="false" driver="datamax_oneil_H6212X" manufacturer="DatamaxONeil" model="10041" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil H6308" deviceid="MFG:Datamax;CMD:DPL;MDL:H6308;" color="false" driver="datamax_oneil_H6308" manufacturer="DatamaxONeil" model="10042" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil H6310X" deviceid="MFG:Datamax;CMD:DPL;MDL:H6310X;" color="false" driver="datamax_oneil_H6310X" manufacturer="DatamaxONeil" model="10043" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil H8308" deviceid="MFG:Datamax;CMD:DPL;MDL:H8308;" color="false" driver="datamax_oneil_H8308" manufacturer="DatamaxONeil" model="10044" parameters="dpl_params" /> + <printer translate="name" name="Datamax-ONeil H8308X" deviceid="MFG:Datamax;CMD:DPL;MDL:H8308X;" color="false" driver="datamax_oneil_H8308X" manufacturer="DatamaxONeil" model="10045" parameters="dpl_params" /> + <printer translate="name" name="Honeywell RP2" deviceid="MFG:Honeywell ;CMD:DPL;MDL:RP2;" color="false" driver="honeywell_rp2" manufacturer="Honeywell" model="10046" parameters="dpl_params" /> + <printer translate="name" name="Honeywell RP4" deviceid="MFG:Honeywell ;CMD:DPL;MDL:RP4;" color="false" driver="honeywell_rp4" manufacturer="Honeywell" model="10047" parameters="dpl_params" /> + </family> + </printdef> +</gutenprint> diff --git a/src/xml/printers/dyesub.xml b/src/xml/printers/dyesub.xml new file mode 100644 index 0000000..d1d0e73 --- /dev/null +++ b/src/xml/printers/dyesub.xml @@ -0,0 +1,186 @@ +<?xml version="1.0"?> + +<!-- + + XML description of printers known to libgutenprint + You can add additional printers here, but the underlying driver has + to know about the model number. You can have different printers + with the same model number but different parameters; this means + printers that are functionally identical but have different ink + characteristics. + + Each printer must have a unique driver name (even if the underlying + driver is identical) to allow a unique mapping between driver + name and printer name (the mapping is done both ways). + + NOTE TO TRANSLATORS: Printer names should not be translated into + their equivalents (the same printer sold under a different name) + in other countries. The correct way to handle this is to add + another printer to this list. Translations should be done for + e. g. character sets. + + For example, a Japanese printer will have the same model name wherever + it is used and with whatever language the user speaks. +--> + +<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, see https://www.gnu.org/licenses/. +</copyright> + <printdef> + <family name="dyesub"> + <printer translate="name" name="Olympus P-10" driver="olympus-p10" manufacturer="Olympus" model="2" /> + <printer translate="name" name="Olympus P-11" driver="olympus-p11" manufacturer="Olympus" model="2" /> + <printer translate="name" name="Olympus P-200" driver="olympus-p200" manufacturer="Olympus" model="4" /> + <printer translate="name" name="Olympus P-300" driver="olympus-p300" manufacturer="Olympus" model="0" /> + <printer translate="name" name="Olympus P-300E" driver="olympus-p300e" manufacturer="Olympus" model="0" /> + <printer translate="name" name="Olympus P-300U" driver="olympus-p300u" manufacturer="Olympus" model="0" /> + <printer translate="name" name="Olympus P-330E" driver="olympus-p330e" manufacturer="Olympus" model="0" /> + <printer translate="name" name="Olympus P-330NE" driver="olympus-p330ne" manufacturer="Olympus" model="0" /> + <printer translate="name" name="Olympus P-400" driver="olympus-p400" manufacturer="Olympus" model="1" /> + <printer translate="name" name="Olympus P-440" driver="olympus-p440" manufacturer="Olympus" model="3" /> + <printer translate="name" name="Olympus P-S100" driver="olympus-ps100" manufacturer="Olympus" model="20" /> + <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" /> + <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" /> + <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" /> + <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" /> + <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" /> + <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" /> + <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" /> + <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" /> + <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" /> + <printer translate="name" name="Canon SELPHY CP520" driver="canon-cp520" manufacturer="Canon" model="1001" /> + <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" /> + <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" /> + <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" /> + <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" /> + <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" /> + <printer translate="name" name="Canon SELPHY CP740" driver="canon-cp740" manufacturer="Canon" model="1001" /> + <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" /> + <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" /> + <printer translate="name" name="Canon SELPHY CP770" driver="canon-cp770" manufacturer="Canon" model="1001" /> + <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" /> + <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" /> + <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" /> + <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" /> + <printer translate="name" name="Canon SELPHY CP820" deviceid="MFG:Canon;CMD:Raster3;MDL:CP820;CLS:PRINTER;DES:Canon CP820;VER:1.00;CID:1284_CID_CA_YCC_ICP;" driver="canon-cp820" manufacturer="Canon" model="1011" /> + <printer translate="name" name="Canon SELPHY CP900" deviceid="MFG:Canon;CMD:Raster3;MDL:CP900;CLS:PRINTER;DES:Canon CP900;VER:5.77;" driver="canon-cp900" manufacturer="Canon" model="1010" /> + <printer translate="name" name="Canon SELPHY CP910" deviceid="MFG:Canon;CMD:Raster3;MDL:CP910;CLS:PRINTER;DES:Canon CP910;VER:1.00;CID:CA_YCC_ICP;" driver="canon-cp910" manufacturer="Canon" model="1011" /> + <printer translate="name" name="Canon SELPHY CP1000" deviceid="MFG:Canon;CMD:Raster3;MDL:CP1000;CLS:PRINTER;DES:Canon CP1000;VER:1.00;CID:CA_YCC_ICP;" driver="canon-cp1000" manufacturer="Canon" model="1011" /> + <printer translate="name" name="Canon SELPHY CP1200" deviceid="MFG:Canon;CMD:Raster3;MDL:SELPHY CP1200;CLS:PRINTER;DES:Canon SELPHY CP1200;VER:1.00;CID:CA_YCC_ICP;" driver="canon-cp1200" manufacturer="Canon" model="1011"/> + <printer translate="name" name="Canon SELPHY CP1300" deviceid="MFG:Canon;CMD:Raster3;MDL:SELPHY CP1300;CLS:PRINTER;DES:Canon SELPHY CP1300;VER:1.00;CID:CA_YCC_ICP;" driver="canon-cp1300" manufacturer="Canon" model="1011"/> + <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" /> + <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" /> + <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" /> + <printer translate="name" name="Canon SELPHY ES20" driver="canon-es20" manufacturer="Canon" model="1005" /> + <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" /> + <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" /> + <printer translate="name" name="CIAAT Brava 21" deviceid="MFG:CIAAT;CMD:SUPCC;MDL:BRAVA21;CLS:PRINTER;DES:Thermal Dye Photo Printer;" driver="ciaat-brava-21" manufacturer="CIAAT" model="5005" /> + <printer translate="name" name="Citizen CW-01" driver="citizen-cw-01" manufacturer="Citizen" model="6005" /> + <printer translate="name" name="Citizen CW-02" driver="citizen-cw-02" manufacturer="Citizen" model="6000" /> + <printer translate="name" name="Citizen CX" driver="citizen-cx" deviceid="MANUFACTURER:CITIZEN SYSTEMS ;MODEL:CX;" manufacturer="Citizen" model="6000" /> + <printer translate="name" name="Citizen CX-02" driver="citizen-cx-02" manufacturer="Citizen" model="6003" /> + <printer translate="name" name="Citizen CX-W" driver="citizen-cx-w" manufacturer="Citizen" model="6001" /> + <printer translate="name" name="Citizen CY" driver="citizen-cy" manufacturer="Citizen" model="6002" /> + <printer translate="name" name="Citizen CY-02" driver="citizen-cy-02" manufacturer="Citizen" model="6002" /> + <printer translate="name" name="Citizen OP900" driver="citizen-op900" manufacturer="Citizen" model="6005" /> + <printer translate="name" name="Citizen OP900II" driver="citizen-op900ii" manufacturer="Citizen" model="6000" /> + <printer translate="name" name="Dai Nippon Printing DS40" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DS40;" driver="dnp-ds40" manufacturer="Dai Nippon Printing" model="6000" /> + <printer translate="name" name="Dai Nippon Printing DS80" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DS80;" driver="dnp-ds80" manufacturer="Dai Nippon Printing" model="6001" /> + <printer translate="name" name="Dai Nippon Printing DS80DX" driver="dnp-ds80dx" manufacturer="Dai Nippon Printing" model="6006">EXPERIMENTAL</printer> + <printer translate="name" name="Dai Nippon Printing DS620" driver="dnp-ds620" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DP-DS620;" manufacturer="Dai Nippon Printing" model="6003" /> + <printer translate="name" name="Dai Nippon Printing DS820" driver="dnp-ds820" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DP-DS820;" manufacturer="Dai Nippon Printing" model="6007" /> + <printer translate="name" name="Dai Nippon Printing DSRX1" driver="dnp-dsrx1" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DS-RX1;" manufacturer="Dai Nippon Printing" model="6002" /> + <printer translate="name" name="Dai Nippon Printing SL10" driver="dnp-sl10" manufacturer="Dai Nippon Printing" model="2005">EXPERIMENTAL</printer> + <printer translate="name" name="Fujifilm ASK-300" deviceid="MFG:FUJIFILM;CMD:ASK-300;MDL:ASK Printer;CLS:FUJIFILM USB Printer;DES:FUJIFILM ASK Printer" driver="fujifilm-ask-300" manufacturer="Fujifilm" model="4112" /> + <printer translate="name" name="Fujifilm ASK-2000" driver="fujifilm-ask-2000" manufacturer="Fujifilm" model="4200">EXPERIMENTAL</printer> + <printer translate="name" name="Fujifilm ASK-2500" driver="fujifilm-ask-2500" manufacturer="Fujifilm" model="4200">EXPERIMENTAL</printer> + <printer translate="name" name="Fujifilm ASK-4000" driver="fujifilm-ask-4000" manufacturer="Fujifilm" model="4201">EXPERIMENTAL</printer> + <printer translate="name" name="Fujifilm FinePix-NX-500" driver="fujifilm-nx500" manufacturer="Fujifilm" model="3002" /> + <printer translate="name" name="Fujifilm Printpix-CX-400" driver="fujifilm-cx400" manufacturer="Fujifilm" model="3000" /> + <printer translate="name" name="Fujifilm Printpix-CX-550" driver="fujifilm-cx550" manufacturer="Fujifilm" model="3001" /> + <printer translate="name" name="Kodak 305" deviceid="MFG:KODAK;CMD:KODAK305;MDL:305 Photo Printer;CLS:PRINTER;DES:KODAK 305 Photo Printer" driver="kodak-305" manufacturer="Kodak" model="4108" /> + <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" /> + <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" /> + <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" /> + <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" /> + <printer translate="name" name="Kodak 7000" driver="kodak-7000" manufacturer="Kodak" model="4008">EXPERIMENTAL</printer> + <printer translate="name" name="Kodak 7010" driver="kodak-7010" manufacturer="Kodak" model="4008">EXPERIMENTAL</printer> + <printer translate="name" name="Kodak 7015" driver="kodak-7015" manufacturer="Kodak" model="4009">EXPERIMENTAL</printer> + <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" /> + <printer translate="name" name="Kodak 8500" driver="kodak-8500" manufacturer="Kodak" model="4100">EXPERIMENTAL</printer> + <printer translate="name" name="Kodak 8800" driver="kodak-8800" manufacturer="Kodak" model="4006">EXPERIMENTAL</printer> + <printer translate="name" name="Kodak 8810" driver="kodak-8810" manufacturer="Kodak" model="4007">EXPERIMENTAL</printer> + <printer translate="name" name="Kodak 9810" driver="kodak-9810" manufacturer="Kodak" model="4006">EXPERIMENTAL</printer> + <printer translate="name" name="Kodak EasyShare-G600-Printer-Dock" driver="kodak-g600-dock" manufacturer="Kodak" model="4000" /> + <printer translate="name" name="Kodak Easyshare-Printer-Dock" driver="kodak-dock" manufacturer="Kodak" model="4000" /> + <printer translate="name" name="Kodak PD-4000" driver="kodak-pd-4000" manufacturer="Kodak" model="4000" /> + <printer translate="name" name="Kodak PD-6000" driver="kodak-pd-6000" manufacturer="Kodak" model="4000" /> + <printer translate="name" name="Kodak Photo-Printer" driver="kodak-photo-printer" manufacturer="Kodak" model="4000" /> + <printer translate="name" name="Kodak Photo-Printer-500" driver="kodak-photo-printer-500" manufacturer="Kodak" model="4000" /> + <printer translate="name" name="Kodak Printer-Dock-Plus" driver="kodak-dock-plus" manufacturer="Kodak" model="4000" /> + <printer translate="name" name="Kodak Printer-Dock-Plus-S3" driver="kodak-dock-plus-s3" manufacturer="Kodak" model="4000" /> + <printer translate="name" name="Magicard Tango 2E" deviceid="MFG:Magicard ; CMD:PCL,MPL;MDL:RioTango2D" driver="magicard-tango-2e" manufacturer="Magicard" model="7000">EXPERIMENTAL</printer> + <printer translate="name" name="Magicard Rio 2E" driver="magicard-rio-2e" manufacturer="Magicard" model="7001">EXPERIMENTAL</printer> + <printer translate="name" name="Mitsubishi CP-3020D" driver="mitsubishi-3020d" manufacturer="Mitsubishi" model="4101">EXPERIMENTAL</printer> + <printer translate="name" name="Mitsubishi CP-3020DA" driver="mitsubishi-3020da" manufacturer="Mitsubishi" model="4102">EXPERIMENTAL</printer> + <printer translate="name" name="Mitsubishi CP-3020DAE" driver="mitsubishi-3020dae" manufacturer="Mitsubishi" model="4102">EXPERIMENTAL</printer> + <printer translate="name" name="Mitsubishi CP-3020DE" driver="mitsubishi-3020de" manufacturer="Mitsubishi" model="4101">EXPERIMENTAL</printer> + <printer translate="name" name="Mitsubishi CP-3020DU" driver="mitsubishi-3020du" manufacturer="Mitsubishi" model="4101">EXPERIMENTAL</printer> + <printer translate="name" name="Mitsubishi CP-3800DW" driver="mitsubishi-cp-3800dw" manufacturer="Mitsubishi" model="6001" /> + <printer translate="name" name="Mitsubishi CP-9500DW" driver="mitsubishi-9500dw" manufacturer="Mitsubishi" model="4115" /> + <printer translate="name" name="Mitsubishi CP-9550D" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP9550D ;CLS:PRINTER;DES:MITSUBISHI CP9550D" driver="mitsubishi-9550d" manufacturer="Mitsubishi" model="4103" /> + <printer translate="name" name="Mitsubishi CP-9550DW" driver="mitsubishi-9550dw" manufacturer="Mitsubishi" model="4103" /> + <printer translate="name" name="Mitsubishi CP-9550DW-S" driver="mitsubishi-9550dw-s" manufacturer="Mitsubishi" model="4111" /> + <printer translate="name" name="Mitsubishi CP-9550DZ" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP9550DZ;CLS:PRINTER;DES:MITSUBISHI CP9550DZ;" driver="mitsubishi-9550dz" manufacturer="Mitsubishi" model="4111" /> + <printer translate="name" name="Mitsubishi CP-9600DW" driver="mitsubishi-9600dw" manufacturer="Mitsubishi" model="4110" /> + <printer translate="name" name="Mitsubishi CP-9800D" driver="mitsubishi-9800d" manufacturer="Mitsubishi" model="4113" >EXPERIMENTAL</printer> + <printer translate="name" name="Mitsubishi CP-9800DW" driver="mitsubishi-9800dw" manufacturer="Mitsubishi" model="4113" >EXPERIMENTAL</printer> + <printer translate="name" name="Mitsubishi CP-9800DW-S" driver="mitsubishi-9800dw-s" manufacturer="Mitsubishi" model="4113" /> + <printer translate="name" name="Mitsubishi CP-9800DZ" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP9800DZ;CLS:PRINTER;DES:MITSUBISHI CP9800DZ;" driver="mitsubishi-9800dz" manufacturer="Mitsubishi" model="4113" /> + <printer translate="name" name="Mitsubishi CP-9810D" driver="mitsubishi-9810d" manufacturer="Mitsubishi" model="4104">EXPERIMENTAL</printer> + <printer translate="name" name="Mitsubishi CP-9810DW" driver="mitsubishi-9810dw" manufacturer="Mitsubishi" model="4104">EXPERIMENTAL</printer> + <printer translate="name" name="Mitsubishi CP-D80DW" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CPD80D;CLS:PRINTER;DES:MITSUBISHI_CPD80D" driver="mitsubishi-d80dw" manufacturer="Mitsubishi" model="4107" /> + <printer translate="name" name="Mitsubishi CP-D90DW" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CPD90D;CLS:PRINTER;DES:MITSUBISHI_CPD90D" driver="mitsubishi-d90dw" manufacturer="Mitsubishi" model="4109" /> + <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" /> + <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="4117" /> + <printer translate="name" name="Mitsubishi CP-K60DW-S" driver="mitsubishi-k60dw" manufacturer="Mitsubishi" model="4106" /> + <printer translate="name" name="Mitsubishi P93D" driverid="MFG:MITSUBISHI;CMD:MEL;MDL:P93D;CLS:PRINTER;DES:MITSUBISHI P93D;" driver="mitsubishi-p93d" manufacturer="Mitsubishi" model="4116" /> + <printer translate="name" name="Mitsubishi P95D" driverid="MFG:MITSUBISHI;CMD:MEL;MDL:P95D ;CLS:PRINTER;DES:MITSUBISHI P95D ;" driver="mitsubishi-p95d" manufacturer="Mitsubishi" model="4114" /> + <printer translate="name" name="Nidac Copal DPB-4000" driver="nidalcopac-dpb-4000" manufacturer="Nidac Copal" model="4201">EXPERIMENTAL</printer> + <printer translate="name" name="Nidac Copal DPB-6000" driver="nidalcopac-dpb-6000" manufacturer="Nidac Copal" model="4200">EXPERIMENTAL</printer> + <printer translate="name" name="Nidac Copal DPB-7000" driver="nidalcopac-dpb-7000" manufacturer="Nidac Copal" model="4200">EXPERIMENTAL</printer> + <printer translate="name" name="Shinko CHC-S1245" driver="shinko-chcs1245" manufacturer="Shinko" model="5002" /> + <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" /> + <printer translate="name" name="Shinko CHC-S6145" driver="shinko-chcs6145" manufacturer="Shinko" model="5004" /> + <printer translate="name" name="Shinko CHC-S6245" driver="shinko-chcs6245" manufacturer="Shinko" model="5003">EXPERIMENTAL</printer> + <printer translate="name" name="Shinko CHC-S9045" driver="shinko-chcs9045" manufacturer="Shinko" model="5000" /> + <printer translate="name" name="Sinfonia CHC-S1245/E1" driver="sinfonia-chcs1245" manufacturer="Sinfonia" model="5002" /> + <printer translate="name" name="Sinfonia CHC-S6145/CS2" deviceid="MFG:SINFONIA;CMD:SUPCC;MDL:CHC-S6145;CLS:PRINTER;DES:Thermal Dye Photo Printer;" driver="sinfonia-chcs6145" manufacturer="Sinfonia" model="5004" /> + <printer translate="name" name="Sinfonia CHC-S6245/CE1" driver="sinfonia-chcs6245" manufacturer="Sinfonia" model="5003">EXPERIMENTAL</printer> + <printer translate="name" name="Sinfonia S2145/S2" driver="sinfonia-chcs2145" manufacturer="Sinfonia" model="5001" /> + <printer translate="name" name="Sony UP-DP10" driver="sony-updp10" manufacturer="Sony" model="2000" /> + <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" /> + <printer translate="name" name="Sony DPP-EX5" driver="sony-dppex5" manufacturer="Sony" model="2002" /> + <printer translate="name" name="Sony DPP-EX7" driver="sony-dppex7" manufacturer="Sony" model="2002" /> + <printer translate="name" name="Sony UP-DR100" driver="sony-updr100" manufacturer="Sony" model="2003" /> + <printer translate="name" name="Sony UP-DR200" driver="sony-updr200" manufacturer="Sony" model="2004" /> + <printer translate="name" name="Sony UP-CR10L" driver="sony-upcr10l" manufacturer="Sony" model="2005">EXPERIMENTAL</printer> + </family> + </printdef> +</gutenprint> diff --git a/src/xml/printers/escp2.xml b/src/xml/printers/escp2.xml new file mode 100644 index 0000000..8481458 --- /dev/null +++ b/src/xml/printers/escp2.xml @@ -0,0 +1,655 @@ +<?xml version="1.0"?> + +<!-- + + XML description of printers known to libgutenprint + You can add additional printers here, but the underlying driver has + to know about the model number. You can have different printers + with the same model number but different parameters; this means + printers that are functionally identical but have different ink + characteristics. + + Each printer must have a unique driver name (even if the underlying + driver is identical) to allow a unique mapping between driver + name and printer name (the mapping is done both ways). + + NOTE TO TRANSLATORS: Printer names should not be translated into + their equivalents (the same printer sold under a different name) + in other countries. The correct way to handle this is to add + another printer to this list. Translations should be done for + e. g. character sets. + + For example, a Japanese printer will have the same model name wherever + it is used and with whatever language the user speaks. +--> + +<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, see https://www.gnu.org/licenses/. +</copyright> + <printdef> + <family name="escp2"> + <parameters name="standard_params"> + <parameter type="float" name="Gamma">0.470</parameter> + </parameters> + <parameters name="480_params"> + <parameter type="float" name="MagentaGamma">0.95</parameter> + <parameter type="float" name="YellowGamma">0.9</parameter> + <parameter type="float" name="Gamma">0.470</parameter> + </parameters> + <parameters name="pro_5500_params"> + <parameter type="float" name="CyanGamma">0.8</parameter> + <parameter type="float" name="Gamma">0.470</parameter> + </parameters> + <parameters name="cx3500_params"> + <parameter type="float" name="CyanGamma">0.96</parameter> + <parameter type="float" name="MagentaGamma">1.02</parameter> + <parameter type="float" name="YellowGamma">1.02</parameter> + <parameter type="float" name="Gamma">0.500</parameter> + </parameters> + <parameters name="claria_params"> + <parameter type="float" name="Gamma">0.470</parameter> + <parameter type="float" name="BlackDensity">0.8</parameter> + </parameters> + <printer translate="name" name="Epson Artisan 50" driver="escp2-artisan50" manufacturer="Epson" model="97" parameters="claria_params" /> + <printer translate="name" name="Epson Artisan 700" driver="escp2-artisan700" manufacturer="Epson" model="96" parameters="claria_params" /> + <printer translate="name" name="Epson Artisan 710" driver="escp2-artisan710" manufacturer="Epson" model="96" parameters="claria_params" /> + <printer translate="name" name="Epson Artisan 800" driver="escp2-artisan800" manufacturer="Epson" model="96" parameters="claria_params" /> + <printer translate="name" name="Epson Artisan 810" driver="escp2-artisan810" manufacturer="Epson" model="96" parameters="claria_params" /> + <printer translate="name" name="Epson Artisan 835" driver="escp2-artisan835" manufacturer="Epson" model="96" parameters="claria_params" /> + <printer translate="name" name="Epson Artisan 1430" driver="escp2-artisan1430" manufacturer="Epson" model="82" parameters="claria_params" /> + <printer translate="name" name="Epson B-300" driver="escp2-b300" manufacturer="Epson" model="87" parameters="standard_params" /> + <printer translate="name" name="Epson B-308" driver="escp2-b308" manufacturer="Epson" model="87" parameters="standard_params" /> + <printer translate="name" name="Epson B-310" driver="escp2-b310" manufacturer="Epson" model="87" parameters="standard_params" /> + <printer translate="name" name="Epson B-310N" driver="escp2-b310n" manufacturer="Epson" model="87" parameters="standard_params" /> + <printer translate="name" name="Epson B-500DN" driver="escp2-b500dn" manufacturer="Epson" model="87" parameters="standard_params" /> + <printer translate="name" name="Epson B-508DN" driver="escp2-b508dn" manufacturer="Epson" model="87" parameters="standard_params" /> + <printer translate="name" name="Epson B-510DN" driver="escp2-b510dn" manufacturer="Epson" model="87" parameters="standard_params" /> + <printer translate="name" name="Epson Expression ET-2550 EcoTank" driver="escp2-et2550" manufacturer="Epson" model="80" parameters="cx3500_params" /> + <printer translate="name" name="Epson Expression ET-2600 EcoTank" driver="escp2-et2600" manufacturer="Epson" model="80" parameters="cx3500_params" /> + <printer translate="name" name="Epson Expression ET-2650 EcoTank" driver="escp2-et2650" manufacturer="Epson" model="80" parameters="cx3500_params" /> + <printer translate="name" name="Epson Expression ET-2700 EcoTank" driver="escp2-et2700" manufacturer="Epson" model="80" parameters="cx3500_params" /> + <printer translate="name" name="Epson Expression ET-2750 EcoTank" driver="escp2-et2750" manufacturer="Epson" model="80" parameters="cx3500_params" /> + <printer translate="name" name="Epson Expression ET-2750 EcoTank Business Edition" driver="escp2-et2750be" manufacturer="Epson" model="80" parameters="cx3500_params" /> + <printer translate="name" name="Epson XP-15000 Series" deviceid="MFG:EPSON;CMD:ESCPL2,BDC,ESCPR7,END4,GENEP;MDL:XP-15000 Series;CLS:PRINTER;DES:EPSON XP-15000 Series;CID:EpsonRGB;FID:FXN,DPA,WFA,ETA,AFN,DAN,WRA;RID:20;DDS:022500;ELG:1000;SN:583436523031363416" driver="escp2-xp15000" manufacturer="Epson" model="132" parameters="standard_params" /> + <printer translate="name" name="Epson L120" driver="escp2-l120" manufacturer="Epson" model="80" parameters="cx3500_params" /> + <printer translate="name" name="Epson L210" driver="escp2-l210" manufacturer="Epson" model="80" parameters="cx3500_params" /> + <printer translate="name" name="Epson L310" driver="escp2-l310" manufacturer="Epson" model="129" parameters="cx3500_params" /> + <printer translate="name" name="Epson L1300" driver="escp2-l1300" manufacturer="Epson" model="99" parameters="standard_params" /> + <printer translate="name" name="Epson L1800" driver="escp2-l1800" manufacturer="Epson" model="122" parameters="cx3500_params" /> + <printer translate="name" name="Epson SC-P400 Series" driver="escp2-p400-s" manufacturer="Epson" model="91" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson SC-P600 Series" driver="escp2-p600-s" manufacturer="Epson" model="115" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson SC-P800 Series" driver="escp2-p800-s" manufacturer="Epson" model="130" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson SC-P6000 Series" driver="escp2-p6000-s" manufacturer="Epson" model="89" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson SC-P7000 Series" driver="escp2-p7000-s" manufacturer="Epson" model="124" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson SC-P8000 Series" driver="escp2-p8000-s" manufacturer="Epson" model="90" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson SC-P9000 Series" driver="escp2-p9000-s" manufacturer="Epson" model="125" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson SC-P10000 Series" driver="escp2-p10000-s" manufacturer="Epson" model="90" parameters="standard_params">EXPERIMENTAL; only three levels of gray supported</printer> + <printer translate="name" name="Epson SC-P20000 Series" driver="escp2-p20000-s" manufacturer="Epson" model="88" parameters="standard_params">EXPERIMENTAL; only three levels of gray supported</printer> + <printer translate="name" name="Epson Stylus C20" deviceid="MFG:EPSON;MDL:Stylus C20;DES:EPSON Stylus C20;CMD:ESCPL2,BDC,D4;" driver="escp2-c20" manufacturer="Epson" model="42" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C20SX" driver="escp2-c20sx" manufacturer="Epson" model="42" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C20UX" deviceid="MFG:EPSON;MDL:Stylus C20;DES:EPSON Stylus C20;CMD:ESCPL2,BDC,D4;" driver="escp2-c20ux" manufacturer="Epson" model="42" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C40" deviceid="MFG:EPSON;MDL:Stylus C40;DES:None;" driver="escp2-c40" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C40SX" driver="escp2-c40sx" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C40UX" driver="escp2-c40ux" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C41" driver="escp2-c41" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C41SX" driver="escp2-c41sx" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C41UX" driver="escp2-c41ux" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C42" deviceid="MFG:EPSON;MDL:Stylus C42;DES:EPSON Stylus C42;CMD:ESCPL2,BDC,D4;" driver="escp2-c42" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C42SX" driver="escp2-c42sx" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C42UX" deviceid="MFG:EPSON;MDL:Stylus C42;DES:EPSON Stylus C42;CMD:ESCPL2,BDC,D4;" driver="escp2-c42ux" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C43" deviceid="MFG:EPSON;MDL:Stylus C43;DES:EPSON Stylus C43;CMD:ESCPL2,BDC,D4;" driver="escp2-c43" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C43SX" deviceid="MFG:EPSON;MDL:Stylus C43;DES:EPSON Stylus C43;CMD:ESCPL2,BDC,D4;" driver="escp2-c43sx" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C43UX" deviceid="MFG:EPSON;MDL:Stylus C43;DES:EPSON Stylus C43;CMD:ESCPL2,BDC,D4;" driver="escp2-c43ux" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C44" deviceid="MFG:EPSON;MDL:Stylus C44;DES:EPSON Stylus C44;CMD:ESCPL2,BDC,D4;" driver="escp2-c44" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C44SX" deviceid="MFG:EPSON;MDL:Stylus C44;DES:EPSON Stylus C44;CMD:ESCPL2,BDC,D4;" driver="escp2-c44sx" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C44UX" deviceid="MFG:EPSON;MDL:Stylus C44;DES:EPSON Stylus C44;CMD:ESCPL2,BDC,D4;" driver="escp2-c44ux" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C45" deviceid="MFG:EPSON;MDL:Stylus C45;DES:EPSON Stylus C45;CMD:ESCPL2,BDC,D4;" driver="escp2-c45" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C46" deviceid="MFG:EPSON;MDL:Stylus C46;DES:EPSON Stylus C46;CMD:ESCPL2,BDC,D4;" driver="escp2-c46" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C48" deviceid="MFG:EPSON;MDL:Stylus C48;DES:EPSON Stylus C48;CMD:ESCPL2,BDC,D4;" driver="escp2-c48" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C50" driver="escp2-c50" manufacturer="Epson" model="56" parameters="480_params" /> + <printer translate="name" name="Epson Stylus C60" deviceid="MFG:EPSON;MDL:Stylus C60;DES:EPSON Stylus C60;CMD:ESCPL2,BDC,D4;" driver="escp2-c60" manufacturer="Epson" model="32" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus C61" driver="escp2-c61" manufacturer="Epson" model="52" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus C62" deviceid="MFG:EPSON;MDL:Stylus C62;DES:EPSON Stylus C62;CMD:ESCPL2,BDC,D4;" driver="escp2-c62" manufacturer="Epson" model="52" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus C63" driver="escp2-c63" manufacturer="Epson" model="61" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus C64" driver="escp2-c64" manufacturer="Epson" model="61" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus C65" deviceid="MFG:EPSON;MDL:Stylus C65;DES:EPSON Stylus C65;CMD:ESCPL2,BDC,D4;" driver="escp2-c65" manufacturer="Epson" model="66" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus C66" deviceid="MFG:EPSON;MDL:Stylus C66;DES:EPSON Stylus C66;CMD:ESCPL2,BDC,D4;" driver="escp2-c66" manufacturer="Epson" model="66" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus C68" deviceid="MFG:EPSON;MDL:Stylus C68;DES:EPSON Stylus C68;CMD:ESCPL2,BDC,D4;" driver="escp2-c68" manufacturer="Epson" model="66" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus C70" driver="escp2-c70" manufacturer="Epson" model="44" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus C79" driver="escp2-c79" manufacturer="Epson" model="66" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus C80" deviceid="MFG:EPSON;MDL:Stylus C80;DES:EPSON Stylus C80;CMD:ESCPL2,BDC,D4;" driver="escp2-c80" manufacturer="Epson" model="44" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus C82" deviceid="MFG:EPSON;MDL:Stylus C82;DES:EPSON Stylus C82;CMD:ESCPL2,BDC,D4;" driver="escp2-c82" manufacturer="Epson" model="55" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus C83" driver="escp2-c83" manufacturer="Epson" model="60" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus C84" deviceid="MFG:EPSON;MDL:Stylus C84;DES:EPSON Stylus C84;CMD:ESCPL2,BDC,D4;" driver="escp2-c84" manufacturer="Epson" model="60" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus C85" deviceid="MFG:EPSON;MDL:Stylus C85;DES:EPSON Stylus C85;CMD:ESCPL2,BDC,D4;" driver="escp2-c85" manufacturer="Epson" model="69" parameters="standard_params" /> + <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" /> + <printer translate="name" name="Epson Stylus C87" driver="escp2-c87" manufacturer="Epson" model="69" parameters="standard_params" /> + <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" /> + <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" /> + <printer translate="name" name="Epson Stylus C110" driver="escp2-c110" manufacturer="Epson" model="85" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus C120" driver="escp2-c120" manufacturer="Epson" model="85" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color" driver="escp2" manufacturer="Epson" model="0" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color I" driver="escp2-i" manufacturer="Epson" model="0" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color II" driver="escp2-ii" manufacturer="Epson" model="0" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color IIs" driver="escp2-iis" manufacturer="Epson" model="0" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color PRO" driver="escp2-pro" manufacturer="Epson" model="45" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro XL" driver="escp2-pro-xl" manufacturer="Epson" model="39" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 400" driver="escp2-400" manufacturer="Epson" model="1" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 440" deviceid="MFG:EPSON;MDL:Stylus COLOR 440;DES:EPSON Stylus COLOR 440;CMD:ESCPL2,BDC;" driver="escp2-440" manufacturer="Epson" model="10" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 460" deviceid="MFG:EPSON;MDL:Stylus COLOR 460;DES:EPSON Stylus COLOR 460;CMD:ESCPL2,BDC;" driver="escp2-460" manufacturer="Epson" model="10" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 480" deviceid="MFG:EPSON;MDL:Stylus COLOR 480;DES:EPSON Stylus COLOR 480;CMD:ESCPL2,BDC,D4;" driver="escp2-480" manufacturer="Epson" model="21" parameters="480_params" /> + <printer translate="name" name="Epson Stylus Color 500" driver="escp2-500" manufacturer="Epson" model="1" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 580" driver="escp2-580" manufacturer="Epson" model="38" parameters="480_params" /> + <printer translate="name" name="Epson Stylus Color 600" deviceid="MFG:EPSON;MDL:Stylus COLOR 600;CMD:ESCPL2,BDC;" driver="escp2-600" manufacturer="Epson" model="3" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 640" driver="escp2-640" manufacturer="Epson" model="11" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 660" driver="escp2-660" manufacturer="Epson" model="18" parameters="standard_params" /> + <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" /> + <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" /> + <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" /> + <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="16" parameters="standard_params" /> + <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" /> + <printer translate="name" name="Epson Stylus Color 800" deviceid="MFG:EPSON;MDL:Stylus COLOR 800;CMD:ESCPL2,PRPXL24,BDC;" driver="escp2-800" manufacturer="Epson" model="4" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 850" driver="escp2-850" manufacturer="Epson" model="5" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 860" driver="escp2-860" manufacturer="Epson" model="16" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 880" deviceid="MFG:EPSON;MDL:Stylus COLOR 880;DES:EPSON Stylus COLOR 880;CMD:ESCPL2,BDC,D4;" driver="escp2-880" manufacturer="Epson" model="32" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 8 3" driver="escp2-83" manufacturer="Epson" model="32" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 900" deviceid="MFG:EPSON;MDL:Stylus COLOR 900;DES:EPSON Stylus COLOR 900;CMD:ESCPL2,PRPXL24,BDC,D4;" driver="escp2-900" manufacturer="Epson" model="13" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 980" deviceid="MFG:Epson;MDL:Stylus Color 980;CMD:ESC/P2;" driver="escp2-980" manufacturer="Epson" model="34" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 1160" driver="escp2-1160" manufacturer="Epson" model="17" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 1500" driver="escp2-1500" manufacturer="Epson" model="2" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 1520" deviceid="MFG:EPSON;MDL:Stylus COLOR 1520;CMD:ESCP2E,PRPXL;" driver="escp2-1520" manufacturer="Epson" model="6" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Color 3000" driver="escp2-3000" manufacturer="Epson" model="24" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office B30" driver="escp2-of-b30" manufacturer="Epson" model="85" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office B33" driver="escp2-of-b33" manufacturer="Epson" model="85" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office B40W" driver="escp2-of-b40w" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office B42WD" driver="escp2-of-b42wd" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office B1100" driver="escp2-of-b1100" manufacturer="Epson" model="99" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office T30" driver="escp2-of-t30" manufacturer="Epson" model="85" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office T33" driver="escp2-of-t33" manufacturer="Epson" model="85" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office T40W" driver="escp2-of-t40w" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office T1100" driver="escp2-of-t1100" manufacturer="Epson" model="99" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office T1110" driver="escp2-of-t1110" manufacturer="Epson" model="99" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office BX300F" driver="escp2-of-bx300f" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office BX525WD" driver="escp2-of-bx525wd" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office BX535WD" driver="escp2-of-bx535wd" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office BX600FW" driver="escp2-of-bx600fw" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office BX625FWD" driver="escp2-of-bx625fwd" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office BX630FW" driver="escp2-of-bx630fw" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office BX635FWD" driver="escp2-of-bx635fwd" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office SX600FW" driver="escp2-of-sx600fw" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office SX620FW" driver="escp2-of-sx620fw" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office TX300F" driver="escp2-of-tx300f" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office TX600FW" driver="escp2-of-tx600fw" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Office TX620FWD" driver="escp2-of-tx620fwd" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo" driver="escp2-photo" manufacturer="Epson" model="9" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 700" deviceid="MFG:EPSON;MDL:Stylus Photo 700;DES:EPSON Stylus Photo 700;CMD:ESCPL2,BDC;" driver="escp2-700" manufacturer="Epson" model="7" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo EX" deviceid="MFG:EPSON;MDL:Stylus Photo EX;CMD:ESCPL2,BDC;" driver="escp2-ex" manufacturer="Epson" model="8" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo EX3" driver="escp2-ex3" manufacturer="Epson" model="54" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 720" driver="escp2-720" manufacturer="Epson" model="20" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 750" deviceid="MFG:EPSON;MDL:Stylus Photo 750;DES:EPSON Stylus Photo 750;CMD:ESCPL2,BDC,D4;" driver="escp2-750" manufacturer="Epson" model="14" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 780" driver="escp2-780" manufacturer="Epson" model="35" parameters="standard_params" /> + <!-- + Note that the 785EPX has a roll feed holder. It's more like the 890 + than the 780, despite the name. + --> + <printer translate="name" name="Epson Stylus Photo 785" deviceid="MFG:EPSON;MDL:Stylus Photo 785EPX;DES:EPSON Stylus Photo 785EPX;CMD:ESCPL2,BDC,D4;" driver="escp2-785" manufacturer="Epson" model="36" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 790" deviceid="MFG:EPSON;MDL:Stylus Photo 790;DES:EPSON Stylus Photo 790;CMD:ESCPL2,BDC,D4;" driver="escp2-790" manufacturer="Epson" model="35" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 810" driver="escp2-810" manufacturer="Epson" model="78" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 820" deviceid="MFG:EPSON;MDL:Stylus Photo 820;DES:EPSON Stylus Photo 820;CMD:ESCPL2,BDC,D4;" driver="escp2-820" manufacturer="Epson" model="78" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 825" deviceid="MFG:EPSON;MDL:Stylus Photo 825;DES:EPSON Stylus Photo 825;CMD:ESCPL2,BDC,D4;" driver="escp2-825" manufacturer="Epson" model="50" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 830" deviceid="MFG:EPSON;MDL:Stylus Photo 830U;DES:EPSON Stylus Photo 830U;CMD:ESCPL2,BDC,D4;" driver="escp2-830" manufacturer="Epson" model="50" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 830U" deviceid="MFG:EPSON;MDL:Stylus Photo 830U;DES:EPSON Stylus Photo 830U;CMD:ESCPL2,BDC,D4;" driver="escp2-830u" manufacturer="Epson" model="50" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 870" deviceid="MFG:EPSON;MDL:Stylus Photo 870;DES:EPSON Stylus Photo 870;CMD:ESCPL2,BDC,D4;" driver="escp2-870" manufacturer="Epson" model="22" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 875" driver="escp2-875" manufacturer="Epson" model="22" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 890" deviceid="MFG:EPSON;MDL:Stylus Photo 890;DES:EPSON Stylus Photo 890;CMD:ESCPL2,BDC,D4;" driver="escp2-890" manufacturer="Epson" model="36" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 895" deviceid="MFG:EPSON;MDL:Stylus Photo 895;DES:EPSON Stylus Photo 895;CMD:ESCPL2,BDC,D4;" driver="escp2-895" manufacturer="Epson" model="36" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 900" deviceid="MFG:EPSON;MDL:Stylus Photo 900;DES:EPSON Stylus Photo 900;CMD:ESCPL2,BDC,D4;" driver="escp2-ph900" manufacturer="Epson" model="62" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 915" deviceid="MFG:EPSON;MDL:Stylus Photo 915;DES:EPSON Stylus Photo 915;CMD:ESCPL2,BDC,D4;" driver="escp2-915" manufacturer="Epson" model="36" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 925" driver="escp2-925" manufacturer="Epson" model="51" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 935" deviceid="MFG:EPSON;MDL:Stylus Photo 935;DES:EPSON Stylus Photo 935;CMD:ESCPL2,BDC,D4;" driver="escp2-935" manufacturer="Epson" model="36" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 950" driver="escp2-950" manufacturer="Epson" model="46" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 960" driver="escp2-960" manufacturer="Epson" model="46" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 1200" driver="escp2-1200" manufacturer="Epson" model="15" parameters="standard_params" /> + <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" /> + <printer translate="name" name="Epson Stylus Photo 1280" driver="escp2-1280" manufacturer="Epson" model="37" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 1290" driver="escp2-1290" manufacturer="Epson" model="37" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 1290s" driver="escp2-1290s" manufacturer="Epson" model="37" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 1400" deviceid="MFG:EPSON;MDL:Stylus Photo 1400;DES:EPSON Stylus Photo 1400;CMD:ESCPL2,BDC,D4,D4PX,ESCPR1;" driver="escp2-1400" manufacturer="Epson" model="82" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo 1410" driver="escp2-1410" manufacturer="Epson" model="82" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo 2000P" driver="escp2-2000" manufacturer="Epson" model="26" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 2100" driver="escp2-2100" manufacturer="Epson" model="47" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo 2200" driver="escp2-2200" manufacturer="Epson" model="47" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo P50" driver="escp2-p50" manufacturer="Epson" model="97" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo R200" deviceid="MFG:EPSON;MDL:Stylus Photo R200;DES:EPSON Stylus Photo R200;CMD:ESCPL2,BDC,D4;" driver="escp2-r200" manufacturer="Epson" model="63" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo R210" deviceid="MFG:EPSON;MDL:Stylus Photo R210;DES:EPSON Stylus Photo R210;CMD:ESCPL2,BDC,D4;" driver="escp2-r210" manufacturer="Epson" model="63" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo R220" deviceid="MFG:EPSON;MDL:Stylus Photo R220;DES:EPSON Stylus Photo R220;CMD:ESCPL2,BDC,D4;" driver="escp2-r220" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo R230" deviceid="MFG:EPSON;MDL:Stylus Photo R230;" driver="escp2-r230" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo R240" driver="escp2-r240" manufacturer="Epson" model="83" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo R245" driver="escp2-r245" manufacturer="Epson" model="83" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo R260" driver="escp2-r260" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo R265" driver="escp2-r265" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo R270" driver="escp2-r270" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo R280" driver="escp2-r280" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo R285" driver="escp2-r285" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo R290" driver="escp2-r290" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo R300" deviceid="MFG:EPSON;MDL:Stylus Photo R300;DES:EPSON Stylus Photo R300;" driver="escp2-r300" manufacturer="Epson" model="63" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo R310" deviceid="MFG:EPSON;MDL:Stylus Photo R310;DES:EPSON Stylus Photo R310;" driver="escp2-r310" manufacturer="Epson" model="63" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo R320" deviceid="MFG:EPSON;MDL:Stylus Photo R320;DES:EPSON Stylus Photo R320;" driver="escp2-r320" manufacturer="Epson" model="63" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo R340" deviceid="MFG:EPSON;MDL:Stylus Photo R340;DES:EPSON Stylus Photo R340;" driver="escp2-r340" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo R350" driver="escp2-r350" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo R360" driver="escp2-r360" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo R380" driver="escp2-r380" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo R390" driver="escp2-r390" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo R800" driver="escp2-r800" manufacturer="Epson" model="64" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo R1800" driver="escp2-r1800" manufacturer="Epson" model="67" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo R1900" driver="escp2-r1900" manufacturer="Epson" model="91" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo R2000" driver="escp2-r2000" manufacturer="Epson" model="91" parameters="standard_params" /> + <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" /> + <printer translate="name" name="Epson Stylus Photo R2880" driver="escp2-r2880" manufacturer="Epson" model="98" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo R3000" driver="escp2-r3000" manufacturer="Epson" model="115" parameters="standard_params" /> + <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" /> + <printer translate="name" name="Epson Stylus Photo RX420" deviceid="MFG:EPSON;MDL:Stylus Photo RX420;DES:EPSON Stylus Photo RX420;CMD:ESCPL2,BDC,D4;" driver="escp2-rx420" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo RX425" deviceid="MFG:EPSON;MDL:Stylus Photo RX425;DES:EPSON Stylus Photo RX425;CMD:ESCPL2,BDC,D4;" driver="escp2-rx425" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo RX430" deviceid="MFG:EPSON;MDL:Stylus Photo RX430;DES:EPSON Stylus Photo RX430;CMD:ESCPL2,BDC,D4;" driver="escp2-rx430" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo RX500" deviceid="MFG:EPSON;MDL:Stylus Photo RX500;DES:EPSON Stylus Photo RX500;CMD:ESCPL2,BDC,D4;" driver="escp2-rx500" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo RX510" deviceid="MFG:EPSON;MDL:Stylus Photo RX510;DES:EPSON Stylus Photo RX510;CMD:ESCPL2,BDC,D4;" driver="escp2-rx510" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo RX560" driver="escp2-rx560" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo RX580" driver="escp2-rx580" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo RX585" driver="escp2-rx585" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo RX590" driver="escp2-rx590" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo RX595" driver="escp2-rx595" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo RX600" driver="escp2-rx600" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo RX610" driver="escp2-rx610" manufacturer="Epson" model="81" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo RX620" deviceid="MFG:EPSON;MDL:Stylus Photo RX620;DES:EPSON Stylus Photo RX620;CMD:ESCPL2,BDC,D4;" driver="escp2-rx620" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo RX630" deviceid="MFG:EPSON;MDL:Stylus Photo RX630;DES:EPSON Stylus Photo RX630;CMD:ESCPL2,BDC,D4;" driver="escp2-rx630" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo RX640" driver="escp2-rx640" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo RX650" driver="escp2-rx650" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo RX680" driver="escp2-rx680" manufacturer="Epson" model="97" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo RX685" driver="escp2-rx685" manufacturer="Epson" model="97" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo RX690" driver="escp2-rx690" manufacturer="Epson" model="97" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo RX700" deviceid="MFG:EPSON;MDL:Stylus Photo RX700;DES:EPSON Stylus Photo RX700;CMD:ESCPL2,BDC,D4;" driver="escp2-rx700" manufacturer="Epson" model="70" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo TX700W" driver="escp2-tx700w" manufacturer="Epson" model="96" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo TX710W" driver="escp2-tx710w" manufacturer="Epson" model="96" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo TX800FW" driver="escp2-tx800w" manufacturer="Epson" model="96" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo TX810FW" driver="escp2-tx810fw" manufacturer="Epson" model="96" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Pro 3800" driver="escp2-3800" manufacturer="Epson" model="108" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 3880" deviceid="MFG:EPSON;CMD:ESCPL2,BDC,D4,D4PX;MDL:Epson Stylus Pro 3880;CLS:PRINTER;DES:EPSON Epson Stylus Pro 3880;" driver="escp2-3880" manufacturer="Epson" model="107" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 3885" driver="escp2-3885" manufacturer="Epson" model="107" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 4000" driver="escp2-4000" manufacturer="Epson" model="114" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 4800/4880 Back Compatible" driver="escp2-4600" manufacturer="Epson" model="112" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 4800" driver="escp2-4800" manufacturer="Epson" model="106" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 4880" driver="escp2-4880" manufacturer="Epson" model="102" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 4900" driver="escp2-4900" manufacturer="Epson" model="131" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 5000" driver="escp2-5000" manufacturer="Epson" model="27" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 5500" driver="escp2-5500" manufacturer="Epson" model="40" parameters="pro_5500_params" /> + <printer translate="name" name="Epson Stylus Pro 7000" driver="escp2-7000" manufacturer="Epson" model="28" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 7500" driver="escp2-7500" manufacturer="Epson" model="29" parameters="pro_5500_params" /> + <printer translate="name" name="Epson Stylus Pro 7600" driver="escp2-7600" manufacturer="Epson" model="48" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 7700" driver="escp2-7700" manufacturer="Epson" model="109" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 7800" driver="escp2-7800" manufacturer="Epson" model="103" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 7880" driver="escp2-7880" manufacturer="Epson" model="89" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 7890" driver="escp2-7890" manufacturer="Epson" model="89" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 7900" deviceid="MFG:EPSON;CMD:ESCPL2,BDC,D4,D4PX;MDL:Stylus Pro 7900;CLS:PRINTER;DES:EPSON Stylus Pro 7900;" driver="escp2-7900" manufacturer="Epson" model="116" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 9000" driver="escp2-9000" manufacturer="Epson" model="30" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 9500" driver="escp2-9500" manufacturer="Epson" model="31" parameters="pro_5500_params" /> + <printer translate="name" name="Epson Stylus Pro 9600" driver="escp2-9600" manufacturer="Epson" model="49" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 9700" driver="escp2-9700" manufacturer="Epson" model="110" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 9800" driver="escp2-9800" manufacturer="Epson" model="104" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 9880" driver="escp2-9880" manufacturer="Epson" model="90" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 9890" driver="escp2-9890" manufacturer="Epson" model="90" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 9900" deviceid="MFG:EPSON;CMD:ESCPL2,BDC,D4,D4PX;MDL:Stylus Pro 9900;CLS:PRINTER;DES:EPSON Stylus Pro 9900;" driver="escp2-9900" manufacturer="Epson" model="117" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 10000" driver="escp2-10000" manufacturer="Epson" model="41" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 11800/11880 Back Compatible" driver="escp2-11600" manufacturer="Epson" model="113" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 11800" driver="escp2-11800" manufacturer="Epson" model="105" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Pro 11880" driver="escp2-11880" manufacturer="Epson" model="88" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Scan 2000" driver="escp2-scan2000" manufacturer="Epson" model="12" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Scan 2500" driver="escp2-scan2500" manufacturer="Epson" model="12" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus CX1500" deviceid="MFG:EPSON;MDL:Stylus CX1500;DES:EPSON Stylus CX1500;CMD:ESCPL2,BDC,D4;" driver="escp2-cx1500" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson Stylus CX3100" deviceid="MFG:EPSON;MDL:Stylus CX3100;DES:EPSON Stylus CX3100;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3100" manufacturer="Epson" model="52" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus CX3200" deviceid="MFG:EPSON;MDL:Stylus CX3200;DES:EPSON Stylus CX3200;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3200" manufacturer="Epson" model="52" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus CX3500" deviceid="MFG:EPSON;MDL:Stylus CX3500;DES:EPSON Stylus CX3500;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3500" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX3600" deviceid="MFG:EPSON;MDL:Stylus CX3600;DES:EPSON Stylus CX3600;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3600" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX3650" deviceid="MFG:EPSON;MDL:Stylus CX3650;DES:EPSON Stylus CX3650;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3650" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX3700" deviceid="MFG:EPSON;MDL:Stylus CX3700;DES:EPSON Stylus CX3700;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3700" manufacturer="Epson" model="72" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus CX3800" deviceid="MFG:EPSON;MDL:Stylus CX3800;DES:EPSON Stylus CX3800;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3800" manufacturer="Epson" model="72" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus CX3805" deviceid="MFG:EPSON;MDL:Stylus CX3805;DES:EPSON Stylus CX3805;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3805" manufacturer="Epson" model="72" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus CX3810" deviceid="MFG:EPSON;MDL:Stylus CX3810;DES:EPSON Stylus CX3810;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3810" manufacturer="Epson" model="72" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus CX3900" deviceid="MFG:EPSON;MDL:Stylus CX3900;DES:EPSON Stylus CX3900;CMD:ESCPL2,BDC,D4;" driver="escp2-cx3900" manufacturer="Epson" model="72" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus CX4100" deviceid="MFG:EPSON;MDL:Stylus CX4100;DES:EPSON Stylus CX4100;CMD:ESCPL2,BDC,D4;" driver="escp2-cx4100" manufacturer="Epson" model="95" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX4200" deviceid="MFG:EPSON;MDL:Stylus CX4200;DES:EPSON Stylus CX4200;CMD:ESCPL2,BDC,D4;" driver="escp2-cx4200" manufacturer="Epson" model="95" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX4400" driver="escp2-cx4400" manufacturer="Epson" model="72" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus CX4500" deviceid="MFG:EPSON;MDL:Stylus CX4500;DES:EPSON Stylus CX4500;CMD:ESCPL2,BDC,D4;" driver="escp2-cx4500" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX4600" deviceid="MFG:EPSON;MDL:Stylus CX4600;DES:EPSON Stylus CX4600;CMD:ESCPL2,BDC,D4;" driver="escp2-cx4600" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX4700" deviceid="MFG:EPSON;MDL:Stylus CX4700;DES:EPSON Stylus CX4700;CMD:ESCPL2,BDC,D4;" driver="escp2-cx4700" manufacturer="Epson" model="95" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX4800" deviceid="MFG:EPSON;MDL:Stylus CX4800;DES:EPSON Stylus CX4800;CMD:ESCPL2,BDC,D4;" driver="escp2-cx4800" manufacturer="Epson" model="95" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX4900" driver="escp2-cx4900" manufacturer="Epson" model="95" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX5000" driver="escp2-cx5000" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX5000F" driver="escp2-cx5000f" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX5100" deviceid="MFG:EPSON;MDL:Stylus CX5100;DES:EPSON Stylus CX5100;CMD:ESCPL2,BDC,D4;" driver="escp2-cx5100" manufacturer="Epson" model="55" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX5200" driver="escp2-cx5200" manufacturer="Epson" model="55" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX5300" deviceid="MFG:EPSON;MDL:Stylus CX5300;DES:EPSON Stylus CX5300;CMD:ESCPL2,BDC,D4;" driver="escp2-cx5300" manufacturer="Epson" model="55" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX5400" deviceid="MFG:EPSON;MDL:Stylus CX5400;DES:EPSON Stylus CX5400;CMD:ESCPL2,BDC,D4;" driver="escp2-cx5400" manufacturer="Epson" model="55" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX5500" driver="escp2-cx5500" manufacturer="Epson" model="72" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus CX5600" driver="escp2-cx5600" manufacturer="Epson" model="72" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus CX5700" deviceid="MFG:EPSON;MDL:Stylus CX5700;DES:EPSON Stylus CX5700;CMD:ESCPL2,BDC,D4;" driver="escp2-cx5700" manufacturer="Epson" model="95" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX5800" deviceid="MFG:EPSON;MDL:Stylus CX5800;DES:EPSON Stylus CX5800;CMD:ESCPL2,BDC,D4;" driver="escp2-cx5800" manufacturer="Epson" model="95" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX6000" driver="escp2-cx6000" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX6300" deviceid="MFG:EPSON;MDL:Stylus CX6300;DES:EPSON Stylus CX6300;CMD:ESCPL2,BDC,D4;" driver="escp2-cx6300" manufacturer="Epson" model="79" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX6400" driver="escp2-cx6400" manufacturer="Epson" model="79" parameters="cx3500_params" /> + <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" /> + <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" /> + <printer translate="name" name="Epson Stylus CX7000F" driver="escp2-cx7000f" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX7300" driver="escp2-cx7300" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX7400" driver="escp2-cx7400" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <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" /> + <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" /> + <printer translate="name" name="Epson Stylus CX8300" deviceid="MFG:EPSON;MDL:Stylus CX8300;DES:EPSON Stylus CX8300;CMD:ESCPL2,BDC,D4;" driver="escp2-cx8300" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX8400" deviceid="MFG:EPSON;MDL:Stylus CX8400;DES:EPSON Stylus CX8400;CMD:ESCPL2,BDC,D4;" driver="escp2-cx8400" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX9300F" driver="escp2-cx9300f" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX9400" driver="escp2-cx9400" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX9400F" driver="escp2-cx9400f" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus CX9475F" driver="escp2-cx9475f" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <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" /> + <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" /> + <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" /> + <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" /> + <printer translate="name" name="Epson Stylus D120" driver="escp2-d120" manufacturer="Epson" model="85" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus DX3800" deviceid="MFG:EPSON;MDL:Stylus DX3800;DES:EPSON Stylus DX3800;CMD:ESCPL2,BDC,D4;" driver="escp2-dx3800" manufacturer="Epson" model="72" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus DX3850" deviceid="MFG:EPSON;MDL:Stylus DX3850;DES:EPSON Stylus DX3850;CMD:ESCPL2,BDC,D4;" driver="escp2-dx3850" manufacturer="Epson" model="72" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus DX4000" driver="escp2-dx4000" manufacturer="Epson" model="72" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus DX4050" driver="escp2-dx4050" manufacturer="Epson" model="72" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus DX4200" deviceid="MFG:EPSON;MDL:Stylus DX4200;DES:EPSON Stylus DX4200;CMD:ESCPL2,BDC,D4;" driver="escp2-dx4200" manufacturer="Epson" model="95" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus DX4250" deviceid="MFG:EPSON;MDL:Stylus DX4250;DES:EPSON Stylus DX4250;CMD:ESCPL2,BDC,D4;" driver="escp2-dx4250" manufacturer="Epson" model="95" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus DX4400" driver="escp2-dx4400" manufacturer="Epson" model="72" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus DX4450" driver="escp2-dx4450" manufacturer="Epson" model="72" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus DX4800" deviceid="MFG:EPSON;MDL:Stylus DX4800;DES:EPSON Stylus DX4800;CMD:ESCPL2,BDC,D4;" driver="escp2-dx4800" manufacturer="Epson" model="95" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus DX4850" driver="escp2-dx4850" manufacturer="Epson" model="95" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus DX7000F" driver="escp2-dx7000f" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus DX7400" driver="escp2-dx7400" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus DX7450" driver="escp2-dx7450" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus DX8400" driver="escp2-dx8400" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus DX8450" driver="escp2-dx8450" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus DX9400F" driver="escp2-dx9400f" manufacturer="Epson" model="65" parameters="cx3500_params" /> + <printer translate="name" name="Epson Stylus NX100" driver="escp2-nx100" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus NX105" driver="escp2-nx105" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus NX115" driver="escp2-nx115" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus NX200" driver="escp2-nx200" manufacturer="Epson" model="93" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus NX215" driver="escp2-nx215" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus NX300" driver="escp2-nx300" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus NX400" driver="escp2-nx400" manufacturer="Epson" model="93" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus NX415" driver="escp2-nx415" manufacturer="Epson" model="93" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus NX420" driver="escp2-nx420" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus NX515" driver="escp2-nx515" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus NX530" driver="escp2-nx530" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus NX625" driver="escp2-nx625" manufacturer="Epson" model="118" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus NX630" driver="escp2-nx630" manufacturer="Epson" model="118" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus NX635" driver="escp2-nx635" manufacturer="Epson" model="118" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus NX645" driver="escp2-nx645" manufacturer="Epson" model="118" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo PX650" driver="escp2-px650" manufacturer="Epson" model="97" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus Photo PX700W" driver="escp2-px700fw" manufacturer="Epson" model="96" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo PX710W" driver="escp2-px710fw" manufacturer="Epson" model="96" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo PX800FW" driver="escp2-px800fw" manufacturer="Epson" model="96" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus Photo PX810FW" driver="escp2-px810fw" manufacturer="Epson" model="96" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus S20" driver="escp2-s20" manufacturer="Epson" model="101" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus S21" driver="escp2-s21" manufacturer="Epson" model="101" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus S50" driver="escp2-s50" manufacturer="Epson" model="97" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX100" driver="escp2-sx100" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX105" driver="escp2-sx105" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX110" driver="escp2-sx110" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX115" driver="escp2-sx115" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX200" driver="escp2-sx200" manufacturer="Epson" model="93" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX205" driver="escp2-sx205" manufacturer="Epson" model="93" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX210" driver="escp2-sx210" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX215" driver="escp2-sx215" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX400" driver="escp2-sx400" manufacturer="Epson" model="93" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX405" driver="escp2-sx405" manufacturer="Epson" model="93" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX410" driver="escp2-sx410" manufacturer="Epson" model="93" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX415" driver="escp2-sx415" manufacturer="Epson" model="93" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX420" driver="escp2-sx420" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX445W" driver="escp2-sx445w" manufacturer="Epson" model="121" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX510W" driver="escp2-sx510w" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX515" driver="escp2-sx515" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX525" driver="escp2-sx525" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX535FW" driver="escp2-sx535FW" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX600FW" driver="escp2-sx600fw" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX610FW" driver="escp2-sx610fw" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX615" driver="escp2-sx615" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX630" driver="escp2-sx630" manufacturer="Epson" model="118" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX635" driver="escp2-sx635" manufacturer="Epson" model="118" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX645" driver="escp2-sx645" manufacturer="Epson" model="118" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus SX650" driver="escp2-sx650" manufacturer="Epson" model="97" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus T13" driver="escp2-t13" manufacturer="Epson" model="101" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus T20" driver="escp2-t20" manufacturer="Epson" model="101" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus T21" driver="escp2-t21" manufacturer="Epson" model="101" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus T22" driver="escp2-t22" manufacturer="Epson" model="101" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus T22E" driver="escp2-t22e" manufacturer="Epson" model="101" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus T26" driver="escp2-t26" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus T30" driver="escp2-t30" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus T40W" driver="escp2-t40w" manufacturer="Epson" model="85" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus T42WD" driver="escp2-t42wd" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus T50" driver="escp2-t50" manufacturer="Epson" model="97" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus T59" driver="escp2-t59" manufacturer="Epson" model="97" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus T60" driver="escp2-t60" manufacturer="Epson" model="97" parameters="claria_params" /> + <printer translate="name" name="Epson Stylus TX100" driver="escp2-tx100" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX101" driver="escp2-tx101" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX102" driver="escp2-tx102" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX103" driver="escp2-tx103" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX104" driver="escp2-tx104" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX105" driver="escp2-tx105" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX106" driver="escp2-tx106" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX109" driver="escp2-tx109" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX110" driver="escp2-tx110" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX125" driver="escp2-tx125" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX200" driver="escp2-tx200" manufacturer="Epson" model="93" parameters="standard_params" /> +<!-- 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" /> + <printer translate="name" name="Epson Stylus TX300F" driver="escp2-tx300f" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX400" driver="escp2-tx400" manufacturer="Epson" model="93" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX410" driver="escp2-tx410" manufacturer="Epson" model="93" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX420" driver="escp2-tx420" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX510FN" driver="escp2-tx510fn" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX550W" driver="escp2-tx550w" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX560WD" driver="escp2-tx560wd" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX610FW" driver="escp2-tx610fw" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX615" driver="escp2-tx615" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX630" driver="escp2-tx630" manufacturer="Epson" model="118" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX635" driver="escp2-tx635" manufacturer="Epson" model="118" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX645" driver="escp2-tx645" manufacturer="Epson" model="118" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX650" driver="escp2-tx650" manufacturer="Epson" model="97" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus TX659" driver="escp2-tx659" manufacturer="Epson" model="97" parameters="standard_params" /> + <printer translate="name" name="Epson Stylus XP100" driver="escp2-xp100" manufacturer="Epson" model="123" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson SureColor P400" deviceid="MFG:EPSON;CMD:ESCPL2,BDC,D4,D4PX,ESCPR7,END4;MDL:SC-P400 Series;CLS:PRINTER;DES:EPSON SC-P400 Series;CID:EpsonRGB;RID:02;DDS:022500;" driver="escp2-p400" manufacturer="Epson" model="91" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson SureColor P600" deviceid="MFG:EPSON;CMD:ESCPL2,BDC,D4,D4PX,ESCPR7,END4;MDL:SC-P600 Series;CLS:PRINTER;DES:EPSON SC-P600 Series;CID:EpsonRGB;RID:02;DDS:022500;ELG:0EF0;" driver="escp2-p600" manufacturer="Epson" model="115" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson SureColor P800" driver="escp2-p800" manufacturer="Epson" model="130" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson SureColor P6000" driver="escp2-p6000" manufacturer="Epson" model="89" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson SureColor P7000" driver="escp2-p7000" manufacturer="Epson" model="124" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson SureColor P7000 Commercial Edition" driver="escp2-p7000c" manufacturer="Epson" model="126" parameters="standard_params">EXPERIMENTAL; violet ink not supported</printer> + <printer translate="name" name="Epson SureColor P8000" driver="escp2-p8000" manufacturer="Epson" model="90" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson SureColor P9000" driver="escp2-p9000" manufacturer="Epson" model="125" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson SureColor P9000 Commercial Edition" driver="escp2-p9000c" manufacturer="Epson" model="127" parameters="standard_params">EXPERIMENTAL; violet ink not supported</printer> + <printer translate="name" name="Epson SureColor P10000" driver="escp2-p10000" manufacturer="Epson" model="90" parameters="standard_params">EXPERIMENTAL; only three levels of gray supported</printer> + <printer translate="name" name="Epson SureColor P20000" driver="escp2-p20000" manufacturer="Epson" model="88" parameters="standard_params">EXPERIMENTAL; only three levels of gray supported</printer> + <printer translate="name" name="Epson PictureMate" driver="escp2-picmate" manufacturer="Epson" model="73" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate Dash" driver="escp2-picmatedash" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate Deluxe" driver="escp2-picmated" manufacturer="Epson" model="73" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate Flash" driver="escp2-picmateflash" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate Pal" driver="escp2-picmatepal" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate Snap" driver="escp2-picmatesnap" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate 100" driver="escp2-picmate100" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate 200" driver="escp2-picmate200" manufacturer="Epson" model="73" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate 210" driver="escp2-picmate210" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate 215" driver="escp2-picmate215" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate 240" driver="escp2-picmate240" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate 250" driver="escp2-picmate250" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate 260" driver="escp2-picmate260" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate 270" driver="escp2-picmate270" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate 280" driver="escp2-picmate280" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate 290" driver="escp2-picmate290" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate 500" driver="escp2-picmate500" manufacturer="Epson" model="73" parameters="standard_params" /> + <printer translate="name" name="Epson PictureMate 2005" driver="escp2-picmate2005" manufacturer="Epson" model="73" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 30" driver="escp2-wf30" manufacturer="Epson" model="85" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 40" driver="escp2-wf40" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 60" driver="escp2-wf60" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 310" driver="escp2-wf310" manufacturer="Epson" model="85" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 315" driver="escp2-wf315" manufacturer="Epson" model="85" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 500" driver="escp2-wf500" manufacturer="Epson" model="93" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 545" driver="escp2-wf545" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 600" driver="escp2-wf600" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 610" driver="escp2-wf610" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 615" driver="escp2-wf615" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 625" driver="escp2-wf625" manufacturer="Epson" model="118" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 630" driver="escp2-wf630" manufacturer="Epson" model="118" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 633" driver="escp2-wf633" manufacturer="Epson" model="118" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 635" driver="escp2-wf636" manufacturer="Epson" model="118" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 645" driver="escp2-wf645" manufacturer="Epson" model="118" parameters="standard_params" /> + <printer translate="name" name="Epson WorkForce 1100" driver="escp2-wf1100" manufacturer="Epson" model="99" parameters="standard_params" /> + <printer translate="name" name="Epson WF-7010 Series" driver="escp2-wf7010" manufacturer="Epson" model="119" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson WF-7011 Series" driver="escp2-wf7011" manufacturer="Epson" model="119" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson WF-7015 Series" driver="escp2-wf7015" manufacturer="Epson" model="119" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson WF-7018 Series" driver="escp2-wf7018" manufacturer="Epson" model="119" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson WF-7510 Series" driver="escp2-wf7510" manufacturer="Epson" model="119" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson WF-7511 Series" driver="escp2-wf7511" manufacturer="Epson" model="119" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson WF-7515 Series" driver="escp2-wf7515" manufacturer="Epson" model="119" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson WF-7520 Series" driver="escp2-wf7520" manufacturer="Epson" model="120" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson WF-7521 Series" driver="escp2-wf7521" manufacturer="Epson" model="120" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson WF-7525 Series" driver="escp2-wf7525" manufacturer="Epson" model="120" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson CL 700" driver="escp2-cl700" manufacturer="Epson" model="38" parameters="480_params" /> + <printer translate="name" name="Epson CL 750" driver="escp2-cl750" manufacturer="Epson" model="43" parameters="480_params" /> + <printer translate="name" name="Epson CL 760" driver="escp2-cl760" manufacturer="Epson" model="56" parameters="480_params" /> + <printer translate="name" name="Epson E 100" driver="escp2-e100" manufacturer="Epson" model="73" parameters="standard_params" /> + <printer translate="name" name="Epson E 150" driver="escp2-e150" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson E 200" driver="escp2-e200" manufacturer="Epson" model="73" parameters="standard_params" /> + <printer translate="name" name="Epson E 300" driver="escp2-e300" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson E 500" driver="escp2-e500" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson E 520" driver="escp2-e520" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson E 700" driver="escp2-e700" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson E 720" driver="escp2-e720" manufacturer="Epson" model="86" parameters="standard_params" /> + <printer translate="name" name="Epson EM 900C" driver="escp2-em900c" manufacturer="Epson" model="13" parameters="standard_params" /> + <printer translate="name" name="Epson EM 930C" driver="escp2-em930c" manufacturer="Epson" model="34" parameters="standard_params" /> + <printer translate="name" name="Epson EP 302" driver="escp2-ep302" manufacturer="Epson" model="96" parameters="standard_params" /> + <printer translate="name" name="Epson EP 702A" driver="escp2-ep702a" manufacturer="Epson" model="96" parameters="standard_params" /> + <printer translate="name" name="Epson EP 801A" driver="escp2-ep801a" manufacturer="Epson" model="96" parameters="standard_params" /> + <printer translate="name" name="Epson EP 901A" driver="escp2-ep901a" manufacturer="Epson" model="96" parameters="standard_params" /> + <printer translate="name" name="Epson EP 901F" driver="escp2-ep901f" manufacturer="Epson" model="96" parameters="standard_params" /> + <printer translate="name" name="Epson MC 2000" driver="escp2-mc2000" manufacturer="Epson" model="26" parameters="standard_params" /> + <printer translate="name" name="Epson MC 5000" driver="escp2-mc5000" manufacturer="Epson" model="40" parameters="pro_5500_params" /> + <printer translate="name" name="Epson MC 7000" driver="escp2-mc7000" manufacturer="Epson" model="29" parameters="pro_5500_params" /> + <printer translate="name" name="Epson MC 9000" driver="escp2-mc9000" manufacturer="Epson" model="31" parameters="pro_5500_params" /> + <printer translate="name" name="Epson MC 10000" driver="escp2-mc10000" manufacturer="Epson" model="41" parameters="standard_params" /> + <printer translate="name" name="Epson ME 300" driver="escp2-me300" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson ME 320" driver="escp2-me320" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson ME Office 70" driver="escp2-meof70" manufacturer="Epson" model="85" parameters="standard_params" /> + <printer translate="name" name="Epson ME Office 80W" driver="escp2-meof80w" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson ME Office 82WD" driver="escp2-meof82wd" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson ME Office 85ND" driver="escp2-meof85nd" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson ME Office 360" driver="escp2-meof360" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson ME Office 600F" driver="escp2-meof600f" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson ME Office 620F" driver="escp2-meof620f" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson ME Office 700FW" driver="escp2-meof700fw" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson ME Office 900WD" driver="escp2-meof900wd" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson ME Office 940FW" driver="escp2-meof940fw" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson ME Office 960FWD" driver="escp2-meof960fwd" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson ME Office 1100" driver="escp2-meof1100" manufacturer="Epson" model="99" parameters="standard_params" /> + <printer translate="name" name="Epson MJ 930C" driver="escp2-mj930c" manufacturer="Epson" model="4" parameters="standard_params" /> + <printer translate="name" name="Epson MJ 5100C" driver="escp2-mj5100c" manufacturer="Epson" model="39" parameters="standard_params" /> + <printer translate="name" name="Epson MJ 6000C" driver="escp2-mj6000c" manufacturer="Epson" model="6" parameters="standard_params" /> + <printer translate="name" name="Epson MJ 8000C" driver="escp2-mj8000c" manufacturer="Epson" model="24" parameters="standard_params" /> + <printer translate="name" name="Epson PM 670C" driver="escp2-pm670c" manufacturer="Epson" model="7" parameters="standard_params" /> + <printer translate="name" name="Epson PM 700C" driver="escp2-pm700c" manufacturer="Epson" model="9" parameters="standard_params" /> + <printer translate="name" name="Epson PM 730C" driver="escp2-pm730c" manufacturer="Epson" model="35" parameters="standard_params" /> + <printer translate="name" name="Epson PM 740C" driver="escp2-pm740c" manufacturer="Epson" model="35" parameters="standard_params" /> + <printer translate="name" name="Epson PM 750C" driver="escp2-pm750c" manufacturer="Epson" model="7" parameters="standard_params" /> + <printer translate="name" name="Epson PM 760C" driver="escp2-pm760c" manufacturer="Epson" model="20" parameters="standard_params" /> + <printer translate="name" name="Epson PM 770C" driver="escp2-pm770c" manufacturer="Epson" model="14" parameters="standard_params" /> + <printer translate="name" name="Epson PM 780C" driver="escp2-pm780c" manufacturer="Epson" model="35" parameters="standard_params" /> + <printer translate="name" name="Epson PM 790PT" driver="escp2-pm790pt" manufacturer="Epson" model="36" parameters="standard_params" /> + <printer translate="name" name="Epson PM 800C" driver="escp2-pm800c" manufacturer="Epson" model="22" parameters="standard_params" /> + <printer translate="name" name="Epson PM 850PT" driver="escp2-pm850pt" manufacturer="Epson" model="51" parameters="standard_params" /> + <printer translate="name" name="Epson PM 870C" driver="escp2-pm870c" manufacturer="Epson" model="36" parameters="standard_params" /> + <printer translate="name" name="Epson PM 880C" driver="escp2-pm880c" manufacturer="Epson" model="36" parameters="standard_params" /> + <printer translate="name" name="Epson PM 930C" driver="escp2-pm930c" manufacturer="Epson" model="58" parameters="standard_params" /> + <printer translate="name" name="Epson PM 940C" driver="escp2-pm940c" manufacturer="Epson" model="58" parameters="standard_params" /> + <printer translate="name" name="Epson PM 950C" driver="escp2-pm950c" manufacturer="Epson" model="53" parameters="standard_params" /> + <printer translate="name" name="Epson PM 970C" driver="escp2-pm970c" manufacturer="Epson" model="57" parameters="standard_params" /> + <printer translate="name" name="Epson PM 980C" driver="escp2-pm980c" manufacturer="Epson" model="57" parameters="standard_params" /> + <printer translate="name" name="Epson PM 2000C" driver="escp2-pm2000c" manufacturer="Epson" model="8" parameters="standard_params" /> + <printer translate="name" name="Epson PM 2200C" driver="escp2-pm2200c" manufacturer="Epson" model="54" parameters="standard_params" /> + <printer translate="name" name="Epson PM 3000C" driver="escp2-pm3000c" manufacturer="Epson" model="15" parameters="standard_params" /> + <printer translate="name" name="Epson PM 3300C" driver="escp2-pm3300c" manufacturer="Epson" model="23" parameters="standard_params" /> + <printer translate="name" name="Epson PM 3500C" driver="escp2-pm3500c" manufacturer="Epson" model="37" parameters="standard_params" /> + <printer translate="name" name="Epson PM 3700C" driver="escp2-pm3700c" manufacturer="Epson" model="37" parameters="standard_params" /> + <printer translate="name" name="Epson PM 4000PX" driver="escp2-pm4000px" manufacturer="Epson" model="47" parameters="standard_params" /> + <printer translate="name" name="Epson PM 5000C" driver="escp2-pm5000c" manufacturer="Epson" model="27" parameters="standard_params" /> + <printer translate="name" name="Epson PM 7000C" driver="escp2-pm7000c" manufacturer="Epson" model="28" parameters="standard_params" /> + <printer translate="name" name="Epson PM 9000C" driver="escp2-pm9000c" manufacturer="Epson" model="30" parameters="standard_params" /> + <printer translate="name" name="Epson PM 10000" driver="escp2-pm10000" manufacturer="Epson" model="41" parameters="standard_params" /> + <printer translate="name" name="Epson PM A650" driver="escp2-pma650" manufacturer="Epson" model="74" parameters="standard_params" /> + <printer translate="name" name="Epson PM A750" driver="escp2-pma750" manufacturer="Epson" model="75" parameters="standard_params" /> + <printer translate="name" name="Epson PM A820" driver="escp2-pma820" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson PM A890" driver="escp2-pma890" manufacturer="Epson" model="76" parameters="standard_params" /> + <printer translate="name" name="Epson PM A900" driver="escp2-pma900" manufacturer="Epson" model="70" parameters="standard_params" /> + <printer translate="name" name="Epson PM A940" driver="escp2-pma940" manufacturer="Epson" model="97" parameters="standard_params" /> + <printer translate="name" name="Epson PM A950" driver="escp2-pma950" manufacturer="Epson" model="70" parameters="standard_params" /> + <printer translate="name" name="Epson PM D600" driver="escp2-pmd600" manufacturer="Epson" model="77" parameters="standard_params" /> + <printer translate="name" name="Epson PM D750" driver="escp2-pmd750" manufacturer="Epson" model="63" parameters="standard_params" /> + <printer translate="name" name="Epson PM D770" driver="escp2-pmd770" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson PM D800" driver="escp2-pmd800" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson PM D870" driver="escp2-pmd870" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson PM D1000" driver="escp2-pmd1000" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson PM G700" driver="escp2-pmg700" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson PM G720" driver="escp2-pmg720" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson PM G730" driver="escp2-pmg730" manufacturer="Epson" model="84" parameters="standard_params" /> + <printer translate="name" name="Epson PM G800" driver="escp2-pmg800" manufacturer="Epson" model="68" parameters="standard_params" /> + <printer translate="name" name="Epson PM G820" driver="escp2-pmg820" manufacturer="Epson" model="68" parameters="standard_params" /> + <printer translate="name" name="Epson PM G850" driver="escp2-pmg850" manufacturer="Epson" model="81" parameters="claria_params" /> + <printer translate="name" name="Epson PM T960" driver="escp2-pmt960" manufacturer="Epson" model="97" parameters="standard_params" /> + <printer translate="name" name="Epson PM G4500" driver="escp2-pmg4500" manufacturer="Epson" model="82" parameters="standard_params" /> + <printer translate="name" name="Epson PX A650" driver="escp2-pxa650" manufacturer="Epson" model="95" parameters="cx3500_params" /> + <printer translate="name" name="Epson Offirio PX B300" driver="escp2-pxb300" manufacturer="Epson" model="87" parameters="standard_params" /> + <printer translate="name" name="Epson Offirio PX B500" driver="escp2-pxb500" manufacturer="Epson" model="87" parameters="standard_params" /> + <printer translate="name" name="Epson PX 7V" driver="escp2-px7v" manufacturer="Epson" model="91" parameters="standard_params" /> + <printer translate="name" name="Epson PX 101" driver="escp2-px101" manufacturer="Epson" model="85" parameters="standard_params" /> + <printer translate="name" name="Epson PX 201" driver="escp2-px201" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson PX 203" driver="escp2-px203" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson PX 204" driver="escp2-px204" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson PX 401A" driver="escp2-px401a" manufacturer="Epson" model="94" parameters="standard_params" /> + <printer translate="name" name="Epson PX 503A" driver="escp2-px503a" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson PX 504A" driver="escp2-px504a" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson PX 601F" driver="escp2-px601f" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson PX 603F" driver="escp2-px603f" manufacturer="Epson" model="92" parameters="standard_params" /> + <printer translate="name" name="Epson PX 1001" driver="escp2-px1001" manufacturer="Epson" model="100" parameters="standard_params" /> + <printer translate="name" name="Epson PX 1200" driver="escp2-px1200" manufacturer="Epson" model="120" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson PX 1600F" driver="escp2-px1600f" manufacturer="Epson" model="120" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson PX 1700F" driver="escp2-px1700f" manufacturer="Epson" model="120" parameters="standard_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson PX G900" driver="escp2-pxg900" manufacturer="Epson" model="64" parameters="standard_params" /> + <printer translate="name" name="Epson PX G920" driver="escp2-pxg920" manufacturer="Epson" model="64" parameters="standard_params" /> + <printer translate="name" name="Epson PX G5000" driver="escp2-pxg5000" manufacturer="Epson" model="67" parameters="standard_params" /> + <printer translate="name" name="Epson PX G5300" driver="escp2-pxg5300" manufacturer="Epson" model="91" parameters="standard_params" /> + <printer translate="name" name="Epson PX V500" driver="escp2-pxv500" manufacturer="Epson" model="61" parameters="standard_params" /> + <printer translate="name" name="Epson PX V600" driver="escp2-pxv600" manufacturer="Epson" model="69" parameters="standard_params" /> + <printer translate="name" name="Epson PX V630" driver="escp2-pxv630" manufacturer="Epson" model="69" parameters="standard_params" /> + <printer translate="name" name="Epson PX V780" driver="escp2-pxv780" manufacturer="Epson" model="85" parameters="standard_params" /> + <printer translate="name" name="Epson PX 5500" driver="escp2-px5500" manufacturer="Epson" model="71" parameters="standard_params" /> + <printer translate="name" name="Epson PX G5600" driver="escp2-pxg5600" manufacturer="Epson" model="98" parameters="standard_params" /> + <printer translate="name" name="Epson PX 7000" driver="escp2-px7000" manufacturer="Epson" model="48" parameters="standard_params" /> + <printer translate="name" name="Epson PX 9000" driver="escp2-px9000" manufacturer="Epson" model="49" parameters="standard_params" /> + <printer translate="name" name="Epson XP-820" driver="escp2-xp820" manufacturer="Epson" model="91" parameters="standard_params" /> + </family> + </printdef> +</gutenprint> diff --git a/src/xml/printers/lexmark.xml b/src/xml/printers/lexmark.xml new file mode 100644 index 0000000..480d9f8 --- /dev/null +++ b/src/xml/printers/lexmark.xml @@ -0,0 +1,60 @@ +<?xml version="1.0"?> + +<!-- + + XML description of printers known to libgutenprint + You can add additional printers here, but the underlying driver has + to know about the model number. You can have different printers + with the same model number but different parameters; this means + printers that are functionally identical but have different ink + characteristics. + + Each printer must have a unique driver name (even if the underlying + driver is identical) to allow a unique mapping between driver + name and printer name (the mapping is done both ways). + + NOTE TO TRANSLATORS: Printer names should not be translated into + their equivalents (the same printer sold under a different name) + in other countries. The correct way to handle this is to add + another printer to this list. Translations should be done for + e. g. character sets. + + For example, a Japanese printer will have the same model name wherever + it is used and with whatever language the user speaks. +--> + +<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, see https://www.gnu.org/licenses/. +</copyright> + <printdef> + <family name="lexmark"> + <parameters name="standard_params"> + <parameter type="float" name="MagentaGamma">0.95</parameter> + <parameter type="float" name="Gamma">0.5</parameter> + <parameter type="float" name="Density">2.0</parameter> + </parameters> + <printer translate="name" name="Compaq IJ1200" driver="compaq-ij1200" manufacturer="Compaq" model="10042" parameters="standard_params" /> + <printer translate="name" name="Lexmark X73" deviceid="MFG:Lexmark;MDL:Lexmark X73;DES:Lexmark X73;CMD:LNPAP;" driver="lexmark-x73" manufacturer="Lexmark" model="10042" parameters="standard_params" /> + <printer translate="name" name="Lexmark Z42" deviceid="MFG:Lexmark;MDL:Lexmark Z42;DES:Lexmark Z42;CMD:LNPAP;" driver="lexmark-z42" manufacturer="Lexmark" model="10042" parameters="standard_params" /> + <printer translate="name" name="Lexmark Z43" driver="lexmark-z43" manufacturer="Lexmark" model="10042" parameters="standard_params" /> + <printer translate="name" name="Lexmark Z52" deviceid="MFG:Lexmark;MDL:Lexmark Z52;DES:Lexmark Z52;" driver="lexmark-z52" manufacturer="Lexmark" model="10052" parameters="standard_params" /> + <printer translate="name" name="Lexmark Z53" driver="lexmark-z53" manufacturer="Lexmark" model="10052" parameters="standard_params" /> + </family> + </printdef> +</gutenprint> diff --git a/src/xml/printers/pcl.xml b/src/xml/printers/pcl.xml new file mode 100644 index 0000000..e0b5534 --- /dev/null +++ b/src/xml/printers/pcl.xml @@ -0,0 +1,1663 @@ +<?xml version="1.0"?> + +<!-- + + XML description of printers known to libgutenprint + You can add additional printers here, but the underlying driver has + to know about the model number. You can have different printers + with the same model number but different parameters; this means + printers that are functionally identical but have different ink + characteristics. + + Each printer must have a unique driver name (even if the underlying + driver is identical) to allow a unique mapping between driver + name and printer name (the mapping is done both ways). + + NOTE TO TRANSLATORS: Printer names should not be translated into + their equivalents (the same printer sold under a different name) + in other countries. The correct way to handle this is to add + another printer to this list. Translations should be done for + e. g. character sets. + + For example, a Japanese printer will have the same model name wherever + it is used and with whatever language the user speaks. +--> + +<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, see https://www.gnu.org/licenses/. +</copyright> + <printdef> + <family name="pcl"> + <parameters name="pcl_inkjet_params"> + <parameter type="float" name="Gamma">0.818</parameter> + <parameter type="float" name="Density">0.786</parameter> + </parameters> + <parameters name="pcl_laser_params"> + <parameter type="float" name="Gamma">1.000</parameter> + <parameter type="float" name="Density">1.000</parameter> + </parameters> + <printer translate="name" name="Apollo P-2100" driver="pcl-apollo-p2100" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="Apollo P-2150" driver="pcl-apollo-p2150" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="Apollo P-2200" driver="pcl-apollo-p2200" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="Apollo P-2250" driver="pcl-apollo-p2250" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="Apollo P-2500" driver="pcl-apollo-p2500" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="Apollo P-2550" driver="pcl-apollo-p2550" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="Apollo P-2600" driver="pcl-apollo-p2600" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="Apollo P-2650" driver="pcl-apollo-p2650" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="Apple Color StyleWriter 4100" driver="pcl-apple-4100" manufacturer="Apple" model="601" parameters="pcl_inkjet_params" /> <!-- Uses 600 series driver --> + <printer translate="name" name="Apple Color StyleWriter 4500" driver="pcl-apple-4500" manufacturer="Apple" model="690" parameters="pcl_inkjet_params" /> <!-- Uses 690 driver --> + <printer translate="name" name="Apple Color StyleWriter 6500" driver="pcl-apple-6500" manufacturer="Apple" model="800" parameters="pcl_inkjet_params" /> <!-- Uses 850 driver --> + <printer translate="name" name="Apple LaserWriter Select 360" driver="pcl-apple-lw360" manufacturer="Apple" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother DCP-1200" driver="brother-dcp-1200" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother DCP-8045D" driver="brother-dcp-8045d" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1040" driver="brother-hl-1040" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1050" deviceid="MFG:Brother;MDL:HL-1050 series;CMD:PCL5,PJL,PCLXL;" driver="brother-hl-1050" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1060" driver="brother-hl-1060" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1070" deviceid="MFG:Brother;MDL:HL-1070 series;CMD:PCL5,POSTSCRIPT2,PJL,PCLXL;" driver="brother-hl-1070" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-10V" driver="brother-hl-10v" manufacturer="Brother" model="3" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-10h" driver="brother-hl-10h" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1240" deviceid="MFG:Brother;MDL:HL-1240 series;CMD:PCL4,PJL;" driver="brother-hl-1240" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1250" deviceid="MFG:Brother;MDL:HL-1250 series;CMD:PCL5,PJL,PCLXL;" driver="brother-hl-1250" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1260" deviceid="MFG:Brother;MDL:HL-1250 series;CMD:PCL5,PJL,PCLXL;" driver="brother-hl-1260" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1270N" driver="brother-hl-1270n" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1440" deviceid="MFG:Brother;MDL:HL-1440 series;CMD:PCL4,PJL;" driver="brother-hl-1440" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1450" deviceid="MFG:Brother;MDL:Brother HL-1450 series;" driver="brother-hl-1450" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1470N" deviceid="MFG:Brother;MDL:Brother HL-1470N series;" driver="brother-hl-1470n" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1650" driver="brother-hl-1650" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1660e" driver="brother-hl-1660e" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1670N" driver="brother-hl-1670n" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1850" driver="brother-hl-1850" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-1870N" driver="brother-hl-1870n" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-2060" driver="brother-hl-2060" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-2250DN" driver="brother-hl-2250dn" manufacturer="Brother" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-2400CeN" driver="brother-hl-2400cen" manufacturer="Brother" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <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" /> + <printer translate="name" name="Brother HL-2460N" driver="brother-hl-2460n" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-2600CN" driver="brother-hl-2600cn" manufacturer="Brother" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Brother HL-3400CN" driver="brother-hl-3400cn" manufacturer="Brother" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Brother HL-3450CN" driver="brother-hl-3450cn" manufacturer="Brother" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Brother HL-4Ve" driver="brother-hl-4ve" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-4040CN" driver="brother-hl-4040cn" manufacturer="Brother" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Brother HL-5030" driver="brother-hl-5030" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-5040" deviceid="MFG:Brother;MDL:HL-5040 series;CMD:PJL,PCL,PCLXL;" driver="brother-hl-5040" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-5050" deviceid="MFG:Brother;MDL:Brother HL-5050 series;" driver="brother-hl-5050" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-5070N" deviceid="MFG:Brother;MDL:Brother HL-5070N series;" driver="brother-hl-5070n" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-5140" deviceid="MFG:Brother;MDL:HL-5140 series;CMD:PJL,PCL,PCLXL;" driver="brother-hl-5140" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-5150D" deviceid="MFG:Brother;MDL:Brother HL-5150D series;CMD:PJL,PCL,PCLXL,POSTSCRIPT;" driver="brother-hl-5150d" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-5170DN" deviceid="MFG:Brother;MDL:Brother HL-5170DN series;CMD:PJL,PCL,PCLXL,POSTSCRIPT;" driver="brother-hl-5170dn" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-5340D" deviceid="MFG:Brother;CMD:PJL,PCL,PCLXL;MDL:HL-5340D series;CLS:PRINTER;" driver="brother-hl-5340d" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-630" driver="brother-hl-630" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-660" driver="brother-hl-660" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-7050" deviceid="MFG:Brother;MDL:Brother HL-7050 series;" driver="brother-hl-7050" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-7050N" driver="brother-hl-7050n" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-760" driver="brother-hl-760" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother HL-960" driver="brother-hl-960" manufacturer="Brother" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother MFC-6550MC" driver="brother-mfc-6550mc" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother MFC-8300" driver="brother-mfc-8300" manufacturer="Brother" model="3" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother MFC-9500" driver="brother-mfc-9500" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Brother MFC-9600" driver="brother-mfc-9600" manufacturer="Brother" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Canon GP 335" driver="canon-gp_335" manufacturer="Canon" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Canon LBP-4sx" driver="canon-lbp-4sx" manufacturer="Canon" model="3" parameters="pcl_laser_params" /> + <printer translate="name" name="Canon LBP-430" driver="canon-lbp-430" manufacturer="Canon" model="4" parameters="pcl_laser_params" /> + <printer translate="name" name="Canon LBP-1000" deviceid="MFG:Canon;MDL:LBP-1000;DES:LBP-1000;CMD:PCL-XL;" driver="canon-lbp-1000" manufacturer="Canon" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Canon LBP-1260" driver="canon-lbp-1260" manufacturer="Canon" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Canon LBP-1760" driver="canon-lbp-1760" manufacturer="Canon" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Canon LBP-3360" driver="canon-lbp-3360" manufacturer="Canon" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Canon LBP-5360" driver="canon-lbp-5360" manufacturer="Canon" model="50000" parameters="pcl_laser_params" /> + <printer translate="name" name="Canon LBP-5390" driver="canon-lbp-5390" manufacturer="Canon" model="50000" parameters="pcl_laser_params" /> + <printer translate="name" name="Canon imageRunner 330s" driver="canon-ir_330s" manufacturer="Canon" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Canon imageRunner C2550" driver="canon-imagerunner_c2550" manufacturer="Canon" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Canon imageRunner C2570" driver="canon-ir_c2570" manufacturer="Canon" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon imageRunner C2570i" driver="canon-ir_c2570i" manufacturer="Canon" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon imageRunner C2570N" driver="canon-ir_c2570N" manufacturer="Canon" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon imageRunner C2620N" driver="canon-ir_c2620N" manufacturer="Canon" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon imageRunner C3100" driver="canon-ir_c3100" manufacturer="Canon" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon imageRunner C3170" driver="canon-ir_c3170" manufacturer="Canon" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon imageRunner C3170i" driver="canon-ir_c3170i" manufacturer="Canon" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon imageRunner C3200" driver="canon-ir_c3200" manufacturer="Canon" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon imageRunner C5030" driver="canon-ir_c5030" manufacturer="Canon" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon imageRunner C5058" driver="canon-imagerunner_c5058" manufacturer="Canon" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Canon imageRunner C5068" driver="canon-imagerunner_c5068" manufacturer="Canon" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Canon imageRunner C5180" driver="canon-ir_c5180" manufacturer="Canon" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon imageRunner C5185" driver="canon-imagerunner_c5185" manufacturer="Canon" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Canon imageRunner C5185i" driver="canon-imagerunner_c5185i" manufacturer="Canon" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Canon imageRunner C5800" driver="canon-ir_c5800" manufacturer="Canon" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon imageRunner C5870U" driver="canon-ir_c5870U" manufacturer="Canon" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon imageRunner C6800" driver="canon-ir_c6800" manufacturer="Canon" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Canon imageRunner C6870U" driver="canon-ir_c6870u" manufacturer="Canon" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Citizen ProJet II" driver="citizen-projet_ii" manufacturer="Citizen" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Datamax-ONeil p1115" deviceid="MFG:DatamaxOneil_;MDL:p1115;" color="false" driver="datamax_oneil_p1115" manufacturer="DatamaxONeil" model="10010" parameters="pcl_laser_params" /> + <printer translate="name" name="Datamax-ONeil p1115s" deviceid="MFG:DatamaxOneil_;MDL:p1115s;" color="false" driver="datamax_oneil_p1115s" manufacturer="DatamaxONeil" model="10011" parameters="pcl_laser_params" /> + <printer translate="name" name="Datamax-ONeil p1120n" deviceid="MFG:DatamaxOneil_;MDL:p1120n;" color="false" driver="datamax_oneil_p1120n" manufacturer="DatamaxONeil" model="10012" parameters="pcl_laser_params" /> + <printer translate="name" name="Datamax-ONeil p1125" deviceid="MFG:DatamaxOneil_;MDL:p1125;" color="false" driver="datamax_oneil_p1125" manufacturer="DatamaxONeil" model="10013" parameters="pcl_laser_params" /> + <printer translate="name" name="Datamax-ONeil p1725" deviceid="MFG:DatamaxOneil_;MDL:p1725;" color="false" driver="datamax_oneil_p1725" manufacturer="DatamaxONeil" model="10014" parameters="pcl_laser_params" /> + <printer translate="name" name="Datamax-ONeil w1110" deviceid="MFG:DatamaxOneil_;MDL:w1110;" color="false" driver="datamax_oneil_w1110" manufacturer="DatamaxONeil" model="10015" parameters="pcl_laser_params" /> + <printer translate="name" name="Datamax-ONeil H8308p" deviceid="MFG:DatamaxOneil_;MDL:H8308p;" color="false" driver="datamax_oneil_H8308p" manufacturer="DatamaxONeil" model="10016" parameters="pcl_laser_params" /> + <printer translate="name" name="DEC 1800" driver="dec-1800" manufacturer="DEC" model="3" parameters="pcl_laser_params" /> + <printer translate="name" name="DEC LN17" driver="dec-ln17" manufacturer="DEC" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Dell 3000cn" driver="dell-3000cn" manufacturer="Dell" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Dell 3100cn" driver="dell-3100cn" manufacturer="Dell" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Epson ActionLaser 1100" driver="epson-actl_1100" manufacturer="Epson" model="3" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson ActionLaser II" driver="epson-actl_ii" manufacturer="Epson" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson AL-C2000" driver="epson-acl_c2000" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson AL-C2000 PS3" deviceid="MFG:Epson;MDL:AL-C2000 PS3;" driver="epson-acl_c2000ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson AL-C8500" driver="epson-acl_c8500" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson AL-C8500PS" driver="epson-acl_c8500ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson AL-C8600" driver="epson-acl_c8600" manufacturer="Epson" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson AL-C8600 PS3" deviceid="MFG:Epson;MDL:AL-C8600 PS3;" driver="epson-acl_c8600ps" manufacturer="Epson" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Epson EPL-5200" driver="epson-epl-5200" manufacturer="Epson" model="3" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-5200+" driver="epson-epl-5200plus" manufacturer="Epson" model="3" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-5700" deviceid="MFG:EPSON;MDL:EPL-5700;DES:EPSON EPL-5700;CMD:PJL,EJL,ESCPL2-00,ESCP9-84,PRPXL24-01,HP ENHANCED PCL5,HPGL2-01,;" driver="epson-epl-5700" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-5700PS" driver="epson-epl-5700ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-5800" driver="epson-epl-5800" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-5800PS" driver="epson-epl-5800ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-5900" driver="epson-epl-5900" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-5900 PS3" deviceid="MFG:Epson;MDL:EPL-5900 PS3;" driver="epson-epl-5900ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-6100" driver="epson-epl-6100" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-6100 PS3" deviceid="MFG:Epson;MDL:EPL-6100 PS3;" driver="epson-epl-6100ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-7100" driver="epson-epl-7100" manufacturer="Epson" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-N2050" driver="epson-epl-n2050" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-N2050+" driver="epson-epl-n2050plus" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-N2050PS" driver="epson-epl-n2050ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-N2050PS+" driver="epson-epl-n2050psplus" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-N2120" driver="epson-epl-n2120" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-N2500" driver="epson-epl-n2500" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-N2500 PS3" deviceid="MFG:Epson;MDL:EPL-N2500 PS3;" driver="epson-epl-n2500ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-N2750" driver="epson-epl-n2750" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Epson EPL-N2750PS" driver="epson-epl-n2750ps" manufacturer="Epson" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Fujitsu PrintPartner 10V" driver="fujitsu-pp_10v" manufacturer="Fujitsu" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Fujitsu PrintPartner 16DV" driver="fujitsu-pp_16dv" manufacturer="Fujitsu" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Fujitsu PrintPartner 20W" driver="fujitsu-pp_20w" manufacturer="Fujitsu" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Fujitsu PrintPartner 8000" driver="fujitsu-pp_8000" manufacturer="Fujitsu" model="3" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL 4 Printer" driver="pcl-g_4" manufacturer="Generic" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL 4 Printer wide margin" driver="pcl-g_4_a4" manufacturer="Generic" model="22" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL 4 LF Printer" driver="pcl-g_4_l" manufacturer="Generic" model="23" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL 5 Printer" driver="pcl-g_5" manufacturer="Generic" model="3" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL 5 Printer wide margin" driver="pcl-g_5_a4" manufacturer="Generic" model="32" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL 5 LF Printer" driver="pcl-g_5_l" manufacturer="Generic" model="33" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL 5c Printer" driver="pcl-g_5c" manufacturer="Generic" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL 5c LF Printer" driver="pcl-g_5c_l" manufacturer="Generic" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL 5e Printer" driver="pcl-g_5e" manufacturer="Generic" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL 5e LF Printer" driver="pcl-g_5e_l" manufacturer="Generic" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL 6/PCL XL Printer" driver="pcl-g_6" manufacturer="Generic" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL 6/PCL XL LF Printer" driver="pcl-g_6_l" manufacturer="Generic" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL 6 Printer wide margin" driver="pcl-g_6_a4" manufacturer="Generic" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL 6 LF Printer wide margin" driver="pcl-g_6_lf_a4" manufacturer="Generic" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL 6 Tabl Printer wide margin" driver="pcl-g_6_tabloid_a4" manufacturer="Generic" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Generic PCL Color Laser" driver="pcl-g_c" manufacturer="Generic" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Generic PCL Color Laser LF Printer" driver="pcl-g_c_l" manufacturer="Generic" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Generic PCL Color wide margin" driver="pcl-g_c_a4" manufacturer="Generic" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Generic PCL Color LF wide margin" driver="pcl-g_c_lf_a4" manufacturer="Generic" model="50003" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Generic PCL Color Tabl wide margin" driver="pcl-g_c_tabloid_a4" manufacturer="Generic" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Gestetner 10512" driver="gestetner-10512" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner 2212" driver="gestetner-2212" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner 2712" driver="gestetner-2712" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner 3212" driver="gestetner-3212" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner 3502" driver="gestetner-3502" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner 3532/4235g" driver="gestetner-4235g" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner 4502" driver="gestetner-4502" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner 4532/4245g" driver="gestetner-4245g" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner 6002" driver="gestetner-6002" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner 7502" driver="gestetner-7502" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner 9002" driver="gestetner-9002" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner CS555" driver="gestetner-cs555" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc1020" driver="gestetner-dsc1020" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc1025" driver="gestetner-dsc1025" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc1030" driver="gestetner-dsc1030" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc1045" driver="gestetner-dsc1045" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc1060" driver="gestetner-dsc1060" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc1120" driver="gestetner-dsc1120" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc1220" driver="gestetner-dsc1220" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc1225" driver="gestetner-dsc1225" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc1230" driver="gestetner-dsc1230" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc1245" driver="gestetner-dsc1245" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc1260" driver="gestetner-dsc1260" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc424" driver="gestetner-dsc424" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc428" driver="gestetner-dsc428" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc432" driver="gestetner-dsc432" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc435" driver="gestetner-dsc435" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc445" driver="gestetner-dsc445" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSc460" driver="gestetner-dsc460" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner DSm415" driver="gestetner-dsm415" manufacturer="Gestetner" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm615" driver="gestetner-dsm615" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm616" driver="gestetner-dsm616" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm618" driver="gestetner-dsm618" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm618d" driver="gestetner-dsm618d" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm620" driver="gestetner-dsm620" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm620d" driver="gestetner-dsm620d" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm622" driver="gestetner-dsm622" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm627" driver="gestetner-dsm627" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm635/635G" driver="gestetner-dsm635g" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm645/645G" driver="gestetner-ds645g" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm651" driver="gestetner-dsm651" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm660" driver="gestetner-dsm660" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm675" driver="gestetner-dsm675" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm725" driver="gestetner-dsm725" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm730" driver="gestetner-dsm730" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm735/735G" driver="gestetner-dsm735g" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner DSm745/745G" driver="gestetner-dsm745g" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP1100/DSm7110" driver="gestetner-dsm7110" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP1350/DSm7135" driver="gestetner-dsm7135" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP1600/DSm716" driver="gestetner-dsm716" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP2000/DSm721d" driver="gestetner-dsm721d" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP2500/DSm625" driver="gestetner-dsm625" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP3500/DSm735e" driver="gestetner-dsm735e" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP4500/DSm745e" driver="gestetner-dsm745e" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP5500/DSm755" driver="gestetner-dsm755" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP6500/DSm765" driver="gestetner-dsm765" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP7500/DSm775" driver="gestetner-dsm775" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP9000/DSm790" driver="gestetner-dsm790" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP 161/DSm416" driver="gestetner-dsm416" manufacturer="Gestetner" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP 2510/DSm725e" driver="gestetner-dsm725e" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP 2550" driver="gestetner-mp_2550" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP 2550B" driver="gestetner-mp_2550b" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP 3010/DSm730e" driver="gestetner-dsm730e" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP 3350" driver="gestetner-mp_3350" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP 3350B" driver="gestetner-mp_3350b" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP 4000" driver="gestetner-mp_4000" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP 4000B" driver="gestetner-mp_4000b" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP 5000" driver="gestetner-mp_5000" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MP 5000B" driver="gestetner-mp_5000b" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Gestetner MPC1500/GS106" driver="gestetner-mpc1500_gs106" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MPC2500/DSc525" driver="gestetner-mpc2500_dsc525" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MPC3000/DSc530" driver="gestetner-mpc3000_dsc530" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MPC3500/DSc535" driver="gestetner-mpc3500_dsc535" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MPC4500/DSc545" driver="gestetner-mpc4500_dsc545" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C2003" driver="gestetner-mp_c2003" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C2004" driver="gestetner-mp_c2004" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C2011" driver="gestetner-mp_c2011" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C2050" driver="gestetner-mp_c2050" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C2051" driver="gestetner-mp_c2051" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C2503" driver="gestetner-mp_c2503" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C2504" driver="gestetner-mp_c2504" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C2550" driver="gestetner-mp_c2550" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C2551" driver="gestetner-mp_c2551" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C2800" driver="gestetner-mp_c2800" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C300" driver="gestetner-mp_c300" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C3001" driver="gestetner-mp_c3001" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C3002" driver="gestetner-mp_c3002" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C3003" driver="gestetner-mp_c3003" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C3004" driver="gestetner-mp_c3004" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C300SR" driver="gestetner-mp_c300sr" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C3300" driver="gestetner-mp_c3300" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C3501" driver="gestetner-mp_c3501" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C3502" driver="gestetner-mp_c3502" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C3503" driver="gestetner-mp_c3503" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C3504" driver="gestetner-mp_c3504" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C400" driver="gestetner-mp_c400" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C4000" driver="gestetner-mp_c4000" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C400SR" driver="gestetner-mp_c400sr" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C4501" driver="gestetner-mp_c4501" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C4501A" driver="gestetner-mp_c4501a" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C4502" driver="gestetner-mp_c4502" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C4502A" driver="gestetner-mp_c4502a" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C4503" driver="gestetner-mp_c4503" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C4504" driver="gestetner-mp_c4504" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C5000" driver="gestetner-mp_c5000" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C5501" driver="gestetner-mp_c5501" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C5501A" driver="gestetner-mp_c5501a" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C5502" driver="gestetner-mp_c5502" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C5502A" driver="gestetner-mp_c5502a" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C5503" driver="gestetner-mp_c5503" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C6000" driver="gestetner-mp_c6000" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C6003" driver="gestetner-mp_c6003" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C6004" driver="gestetner-mp_c6004" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C6501" driver="gestetner-mp_c6501" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C6502" driver="gestetner-mp_c6502" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C6503" driver="gestetner-mp_c6503" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C7500" driver="gestetner-mp_c7500" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C7501" driver="gestetner-mp_c7501" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C8002" driver="gestetner-mp_c8002" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner MP C8003" driver="gestetner-mp_c8003" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner Pro C5200S" driver="gestetner-pro_c5200s" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Gestetner Pro C5210S" driver="gestetner-pro_c5210s" manufacturer="Gestetner" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="HP Business Inkjet 2200" deviceid="MFG:HEWLETT-PACKARD;MDL:HP BUSINESS INKJET 2200;DES:Hewlett-Packard Business Inkjet 2200;CMD:MLC,PML,PJL;" driver="hp-bij_2200" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP Business Inkjet 2230" deviceid="MFG:HEWLETT-PACKARD;MDL:HP BUSINESS INKJET 2230;DES:Hewlett-Packard Business Inkjet 2230;CMD:MLC,PML,PJL;" driver="hp-bij_2230" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP Business Inkjet 2250" deviceid="MFG:HEWLETT-PACKARD;MDL:HP BUSINESS INKJET 2250;DES:Hewlett-Packard Business Inkjet 2250;CMD:MLC,PML,PJL,PCL5,POSTSCRIPT;" driver="hp-bij_2250" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP Business Inkjet 2250TN" deviceid="MFG:HEWLETT-PACKARD;MDL:HP BUSINESS INKJET 2250;DES:Hewlett-Packard Business Inkjet 2250;CMD:MLC,PML,PJL,PCL5,POSTSCRIPT;" driver="hp-bij_2250tn" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <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" /> + <printer translate="name" name="HP Color Inkjet Printer CP1160" driver="hp-cij_cp1160" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <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" /> + <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="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 3000" driver="hp-clj_3000" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 3000n" driver="hp-clj_3000n" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 3000dn" driver="hp-clj_3000dn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 3000dtn" driver="hp-clj_3000dtn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 3700" driver="hp-clj_3700" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 3700n" driver="hp-clj_3700n" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 3800" driver="hp-clj_3800" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 3800n" driver="hp-clj_3800n" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 3800dn" driver="hp-clj_3800dn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 3800dtn" driver="hp-clj_3800dtn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 4500" deviceid="MFG:Hewlett-Packard;MDL:LaserJet Color 4500;" driver="hp-clj_4500" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <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="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <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="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 4610" deviceid="MFG:Hewlett-Packard;MDL:hp color LaserJet 4610;DES:Hewlett-Packard color LaserJet 4610;" driver="hp-clj_4610" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 4650" deviceid="MFG:Hewlett-Packard;MDL:hp color LaserJet 4650;DES:Hewlett-Packard color LaserJet 4650;" driver="hp-clj_4650" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 4700" driver="hp-clj_4700" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 4700n" driver="hp-clj_4700n" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 4700dn" driver="hp-clj_4700dn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 4700dtn" driver="hp-clj_4700dtn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 4700ph+" driver="hp-clj_4700phplus" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 5" driver="hp-clj_5" manufacturer="HP" model="50012" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 5m" driver="hp-clj_5m" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 5000" driver="hp-clj_5000" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 5500" driver="hp-clj_5500" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 5500n" driver="hp-clj_5500n" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 5500dn" driver="hp-clj_5500dn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 5500dtn" driver="hp-clj_5500dtn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 5500hdn" driver="hp-clj_5500hdn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 8500" driver="hp-clj_8500" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 8500n" driver="hp-clj_8500n" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 8500dn" driver="hp-clj_8500dn" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 8550" driver="hp-clj_8550" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 8550DN" driver="hp-clj_8550dn" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 8550GN" driver="hp-clj_8550gn" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 8550MN" driver="hp-clj_8550mn" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 9500" driver="hp-clj_9500" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 9500n" driver="hp-clj_9500n" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 9500hdn" driver="hp-clj_9500hdn" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet 9500gp" driver="hp-clj_9500gp" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM1312" driver="hp-clj_cm1312" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM1312nfi" driver="hp-clj_9500nfi" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM1411fn" driver="hp-clj_cm1411fn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM1412fn" driver="hp-clj_cm1412fn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM1413fn" driver="hp-clj_cm1413fn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM1415fn" driver="hp-clj_cm1415fn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM1415fnw" driver="hp-clj_cm1415fn2" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM1416fnw" driver="hp-clj_cm1416fn2" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM1417fnw" driver="hp-clj_cm1417fn2" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM1418fnw" driver="hp-clj_cm1418fn2" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM2320 MFP" driver="hp-clj_cm2320" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM2320FXI MFP" driver="hp-clj_cm2320fxi" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM2320N MFP" driver="hp-clj_cm2320n" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM2320NF MFP" driver="hp-clj_cm2320nf" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM3530 MFP" driver="hp-clj_cm3530_mfp" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM4540 MFP" driver="hp-clj_cm4540_mfp" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM4730 MFP" driver="hp-clj_cm4730_mfp" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM6030 MFP" driver="hp-clj_cm6030_mfp" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM6040 MFP" driver="hp-clj_cm6040_mfp" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM6040f MFP" driver="hp-clj_cm6040f_mfp" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CM6049f MFP" driver="hp-clj_cm6049f_mfp" manufacturer="HP" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP1514n" driver="hp-clj_cp1514n" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP1515n" driver="hp-clj_cp1515n" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP1518ni" driver="hp-clj_cp1518ni" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP2025" driver="hp-clj_cp2025" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP2025dn" driver="hp-clj_cp2025dn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP2025n" driver="hp-clj_cp2025n" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP2025x" driver="hp-clj_cp2025x" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP3505" driver="hp-clj_cp3505" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP3505dn" driver="hp-clj_cp3505dn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP3505n" driver="hp-clj_cp3505n" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP3505x" driver="hp-clj_cp3505x" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP3525" driver="hp-clj_cp3525" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP3525dn" driver="hp-clj_cp3525dn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP3525n" driver="hp-clj_cp3525n" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP3525x" driver="hp-clj_cp3525x" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP4005" driver="hp-clj_cp4005" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP4005dn" driver="hp-clj_cp4005dn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP4005n" driver="hp-clj_cp4005n" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP4020" driver="hp-clj_cp4020" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP4500" driver="hp-clj_cp4500" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP4520" driver="hp-clj_cp4520" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP4540 MFP" driver="hp-clj_cp4540" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP5225" driver="hp-clj_cp5225" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP5225dn" driver="hp-clj_cp5225dn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP5225n" driver="hp-clj_cp5225n" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP5520" driver="hp-clj_cp5520" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP6015dn" driver="hp-clj_cp6015dn" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP6015de" driver="hp-clj_cp6015de" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP6015n" driver="hp-clj_cp6015n" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP6015x" driver="hp-clj_cp6015x" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP Color LaserJet CP6015xh" driver="hp-clj_cp6015xh" manufacturer="HP" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="HP DesignJet 230" driver="pcl-desnj-230" manufacturer="HP" model="10230" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DesignJet 250C" driver="pcl-desnj-250" manufacturer="HP" model="10250" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DesignJet 430" driver="pcl-desnj-430" manufacturer="HP" model="10230" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DesignJet 450C" driver="pcl-desnj-450" manufacturer="HP" model="10250" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DesignJet 455CA" driver="pcl-desnj-455" manufacturer="HP" model="10250" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DesignJet 488CA" driver="pcl-desnj-488" manufacturer="HP" model="10250" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DesignJet 700" driver="pcl-desnj-700" manufacturer="HP" model="10700" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DesignJet 750C Plus" driver="hp-desnj_750c_plus" manufacturer="HP" model="10750" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DesignJet 750C" driver="pcl-750" manufacturer="HP" model="10750" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DesignJet 2500CP" driver="pcl-desnj-2500" manufacturer="HP" model="12500" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DesignJet 3500CP" driver="pcl-desnj-3500" manufacturer="HP" model="13500" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DesignJet ColorPro CAD" driver="hp-desnj_cp_cad" manufacturer="HP" model="2500" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 400" deviceid="MFG:Hewlett-Packard;MDL:HP DeskJet 400;DES:HP DeskJet 400 Printer;CMD:PCL,C32;" driver="pcl-400" manufacturer="HP" model="400" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 420C" driver="hp-dj_420c" manufacturer="HP" model="540" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 450" deviceid="MFG:hp;MDL:dj450;DES:hp dj450;CMD:MLC,PCL,PML,DESKJET,DW-PCL,DYN;" driver="hp-dj_450" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 500" driver="pcl-500" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 500C" driver="pcl-501" manufacturer="HP" model="501" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 505J Plus" driver="hp-dj_505j_plus" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 510" driver="hp-dj_510" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 520" driver="pcl-520" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 540C" driver="pcl-540" manufacturer="HP" model="540" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 550C" driver="pcl-550" manufacturer="HP" model="550" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 5550" deviceid="MFG:hp;MDL:deskjet 5550;DES:hp deskjet 5550;CMD:MLC,PCL,PML,DW-PCL,DYN,DESKJET;" driver="hp-dj_5550" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 5551" driver="hp-dj_5551" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 560C" driver="pcl-560" manufacturer="HP" model="550" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 600" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 600;DES:Hewlett-Packard DeskJet 600;CMD:MLC,PCL,PML;" driver="pcl-600" manufacturer="HP" model="600" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 600C" driver="pcl-601" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 610C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 610C;DES:Hewlett-Packard DeskJet 610C;CMD:MLC,PCL,PML;" driver="hp-dj_610c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 610CL" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 610C;DES:Hewlett-Packard DeskJet 610C;CMD:MLC,PCL,PML;" driver="hp-dj_610cl" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 6122" deviceid="MFG:hp;MDL:deskjet 6122;DES:hp deskjet 6122;CMD:MLC,PCL,PML,DW-PCL,DYN,DESKJET;" driver="hp-dj_6122" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 6127" driver="hp-dj_6127" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 612C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 610C;DES:Hewlett-Packard DeskJet 610C;CMD:MLC,PCL,PML;" driver="hp-dj_612c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 640C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 640C;DES:Hewlett-Packard DeskJet 640C;CMD:MLC,PCL,PML;" driver="hp-dj_640c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 648C" driver="hp-dj_648c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 660C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 660C;DES:Hewlett-Packard DeskJet 660C;CMD:MLC,PCL,PML;" driver="hp-dj_660c" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 670C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 670C;DES:Hewlett-Packard DeskJet 670C;CMD:MLC,PCL,PML;" driver="hp-dj_670c" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 670TV" driver="hp-dj_670tv" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 672C" driver="hp-dj_672c" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 680C" driver="hp-dj_680c" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 682C" driver="hp-dj_682c" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 690C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 690C;DES:Hewlett-Packard DeskJet 690C;CMD:MLC,PCL,PML;" driver="pcl-690" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 692C" driver="hp-dj_692c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 693C" driver="hp-dj_693c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 694C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 690C;DES:Hewlett-Packard DeskJet 690C;CMD:MLC,PCL,PML;" driver="hp-dj_694c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 695C" driver="hp-dj_695c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 697C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 690C;DES:Hewlett-Packard DeskJet 690C;CMD:MLC,PCL,PML;" driver="hp-dj_697c" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 810C" driver="pcl-810" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> <!-- Uses 840 driver --> + <printer translate="name" name="HP DeskJet 812C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 810C;DES:Hewlett-Packard DeskJet 810C;CMD:MLC,PCL,PML;" driver="pcl-812" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> <!-- Uses 840 driver --> + <printer translate="name" name="HP DeskJet 815C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 815C;DES:Hewlett-Packard DeskJet 815C;CMD:MLC,PCL,PML;" driver="hp-dj_815c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 816C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 815C;DES:Hewlett-Packard DeskJet 815C;CMD:MLC,PCL,PML;" driver="hp-dj_816c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 825C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 825C;DES:Hewlett-Packard DeskJet 825C;CMD:MLC,PCL,PML;" driver="hp-dj_825c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 830C" driver="hp-dj_830c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 832C" driver="hp-dj_832c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 840C" deviceid="MFG:Hewlett-Packard;MDL:DeskJet 840C;" driver="pcl-840" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> <!-- Uses 840 driver --> + <printer translate="name" name="HP DeskJet 841C" deviceid="MFG:Hewlett-Packard;MDL:DeskJet 841C;" driver="hp-dj_841c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 842C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 840C;DES:Hewlett-Packard DeskJet 840C;CMD:MLC,PCL,PML;" driver="pcl-842" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> <!-- Uses 840 driver --> + <printer translate="name" name="HP DeskJet 843C" deviceid="MFG:Hewlett-Packard;MDL:DeskJet 843C;" driver="hp-dj_843c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 845C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 845C;DES:Hewlett-Packard DeskJet 845C;CMD:MLC,PCL,PML;" driver="pcl-845" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> <!-- Uses 840 driver --> + <printer translate="name" name="HP DeskJet 850C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 850C;DES:Hewlett-Packard Deskjet 850C;CMD:PCL,MLC,PML;" driver="pcl-850" manufacturer="HP" model="800" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 855C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 850C;DES:Hewlett-Packard Deskjet 850C;CMD:PCL,MLC,PML;" driver="pcl-855" manufacturer="HP" model="800" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 870C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 870C;DES:Hewlett-Packard Deskjet 870C;CMD:PCL,MLC,PML;" driver="pcl-870" manufacturer="HP" model="800" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 880C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 880C;DES:Hewlett-Packard DeskJet 880C;CMD:MLC,PCL,PML;" driver="hp-dj_880c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 882C" driver="hp-dj_882c" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 890C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 890C;DES:Hewlett-Packard Deskjet 890C;CMD:PCL,MLC,PML;" driver="pcl-890" manufacturer="HP" model="800" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 895C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 895C;DES:Hewlett-Packard DeskJet 895C;CMD:MLC,PCL,PML;" driver="pcl-895" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> <!-- Uses 840 driver --> + <printer translate="name" name="HP DeskJet 916C" driver="pcl-900" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 920C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 920C;DES:Hewlett-Packard DeskJet 920C;CMD:MLC,PCL,PML;" driver="hp-dj_920c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 9300" driver="hp-dj_9300" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 930C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 930C;DES:Hewlett-Packard DeskJet 930C;CMD:MLC,PCL,PML;" driver="hp-dj_930c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 932C" driver="hp-dj_932c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 933C" driver="hp-dj_933c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 934C" driver="hp-dj_934c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 935C" driver="hp-dj_935c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 940C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 940C;DES:Hewlett-Packard DeskJet 940C;CMD:MLC,PCL,PML;" driver="hp-dj_940c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 948C" driver="hp-dj_948c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 950C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 950C;DES:Hewlett-Packard DeskJet 950C;CMD:MLC,PCL,PML;" driver="hp-dj_950c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 952C" driver="hp-dj_952c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 955C" driver="hp-dj_955c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 957C" driver="hp-dj_957c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 959C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 950C;DES:Hewlett-Packard DeskJet 950C;CMD:MLC,PCL,PML;" driver="hp-dj_959c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 960C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 960C;DES:Hewlett-Packard DeskJet 960C;CMD:MLC,PCL,PML;" driver="hp-dj_960c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 970C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 970C;DES:Hewlett-Packard DeskJet 970C;CMD:MLC,PCL,PML;" driver="hp-dj_970c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 975C" driver="hp-dj_975c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 980C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 980C;DES:Hewlett-Packard DeskJet 980C;CMD:MLC,PCL,PML;" driver="hp-dj_980c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 990C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 990C;DES:Hewlett-Packard DeskJet 990C;CMD:MLC,PCL,PML;" driver="hp-dj_990c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 995C" driver="hp-dj_995c" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 1100C" driver="pcl-1100" manufacturer="HP" model="1100" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 1120C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 1120C;DES:Hewlett-Packard Deskjet 1120C;CMD:PCL,MLC,PML;" driver="pcl-1120" manufacturer="HP" model="1100" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 1125C" driver="hp-dj_1125c" manufacturer="HP" model="1100" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 1200C" driver="pcl-1200" manufacturer="HP" model="1200" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 1220C" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 1220C;DES:Hewlett-Packard DeskJet 1220;CMD:MLC,PCL,PML;" driver="pcl-1220" manufacturer="HP" model="901" parameters="pcl_inkjet_params" /> <!-- Uses 900 series driver (large) --> + <printer translate="name" name="HP DeskJet 1600C" driver="pcl-1600" manufacturer="HP" model="1600" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 1600CM" driver="hp-dj_1600cm" manufacturer="HP" model="1600" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 2000" driver="pcl-2000" manufacturer="HP" model="2000" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 2500" driver="pcl-2500" manufacturer="HP" model="2500" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 2500CM" driver="hp-2500cm" manufacturer="HP" model="2500" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 340C" deviceid="MFG:Hewlett-Packard;MDL:HP DeskJet 340;DES:HP;CMD:PCL,C32;" driver="pcl-340" manufacturer="HP" model="340" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 3810" driver="hp-dj_3810" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 3816" driver="hp-dj_3816" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 3820" deviceid="MFG:HEWLETT-PACKARD;MDL:DESKJET 3820;DES:Hewlett-Packard DeskJet 3820;CMD:MLC,PCL,PML;" driver="hp-dj_3820" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP DeskJet 3822" driver="hp-dj_3822" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP LaserJet 2" driver="pcl-2" manufacturer="HP" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 2D" driver="hp-lj_2d" manufacturer="HP" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 2P Plus" driver="hp-lj_2p_plus" manufacturer="HP" model="21" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 2P" driver="pcl-2p" manufacturer="HP" model="21" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3" driver="pcl-3" manufacturer="HP" model="3" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3D" driver="hp-lj_3d" manufacturer="HP" model="3" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3P w/ PCL5" driver="hp-lj_3p_w_pcl5" manufacturer="HP" model="4" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3P w/PS" driver="hp-lj_3p_w_ps" manufacturer="HP" model="3" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 4 Plus" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 4 Plus;CMD:PJL,PCL,POSTSCRIPT;" driver="hp-lj_4_plus" manufacturer="HP" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 4" driver="pcl-4" manufacturer="HP" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 4L" deviceid="MFG:Hewlett-Packard;MDL:LaserJet 4L;CMD:HP ENHANCED PCL5,PJL;" driver="pcl-4l" manufacturer="HP" model="4" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 4M" driver="hp-lj_4m" manufacturer="HP" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 4ML" driver="hp-lj_4ml" manufacturer="HP" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 4P" driver="hp-lj_4p" manufacturer="HP" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 4Si" driver="pcl-4si" manufacturer="HP" model="51" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 4V" driver="pcl-4v" manufacturer="HP" model="5" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 5" driver="pcl-5" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 5L" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 5L;DES:Hewlett-Packard LaserJet 5L Printer;CMD:HP ENHANCED PCL5,PJL;" driver="hp-lj_5l" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 5M" driver="hp-lj_5m" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 5MP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 5MP;DES:Hewlett-Packard LaserJet 5MP Printer;CMD:HP ENHANCED PCL5,PJL,POSTSCRIPT;" driver="hp-lj_5mp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 5N" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 5N;DES:Hewlett-Packard LaserJet 5N Printer;CMD:HP ENHANCED PCL5,PJL;" driver="hp-lj_5n" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 5P" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 5P;DES:Hewlett-Packard LaserJet 5P Printer;CMD:HP ENHANCED PCL5,PJL;" driver="hp-lj_5p" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 5Si" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 5Si;DES:None;CMD:PJL,MLC,PCL,POSTSCRIPT;" driver="pcl-5si" manufacturer="HP" model="7" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 6" driver="pcl-6" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 6L" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 6L;DES:Hewlett-Packard LaserJet 6L Printer;" driver="hp-lj_6l" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 6MP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 6MP;DES:Hewlett-Packard LaserJet 6MP Printer;CMD:PJL,MLC,PCLXL,PCL,POSTSCRIPT;" driver="hp-lj_6mp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 6P" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 6P;DES:Hewlett-Packard LaserJet 6P Printer;CMD:HP ENHANCED PCL5,PJL;" driver="hp-lj_6p" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 1010" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 1010;CMD:FastRaster;" driver="hp-lj_1010" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 1012" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 1012;CMD:FastRaster;" driver="hp-lj_1012" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 1015" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 1015;CMD:FastRaster;" driver="hp-lj_1015" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 1022" driver="hp-lj_1022" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 1100" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 1100;DES:HP LaserJet 1100 Printer;CMD:MLC,PCL,PJL;" driver="hp-lj_1100" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 1100A" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 1100;DES:HP LaserJet 1100A Printer-Copier-Scanner;CMD:MLC,MFPDTF1,PCL,PJL;" driver="hp-lj_1100a" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 1150" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 1150;DES:Hewlett-Packard LaserJet 1150;CMD:PJL,MLC,BIDI-ECP,PCL,DW-PCL;" driver="hp-lj_1150" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 1160" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 1160 series;DES:Hewlett-Packard LaserJet 1160 series;CMD:PJL,MLC,BIDI-ECP,PCL,DW-PCL;" driver="hp-lj_1160" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 1200" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 1200;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_1200" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 1220" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 1220;DES:Hewlett-Packard LaserJet 1220;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_1220" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 1300" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 1300;DES:Hewlett-Packard LaserJet 1300;CMD:PJL,MLC,BIDI-ECP,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_1300" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 1320" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 1320 series;DES:Hewlett-Packard LaserJet 1320 series;CMD:PJL,MLC,BIDI-ECP,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_1320" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 2100" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 2100 Series;DES:Hewlett-Packard LaserJet 2100 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_2100" manufacturer="HP" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 2100M" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 2100 Series;DES:Hewlett-Packard LaserJet 2100 Series;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_2100m" manufacturer="HP" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 2200" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 2200;DES:Hewlett-Packard LaserJet 2200;" driver="hp-lj_2200" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 2300" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 2300 series;DES:Hewlett-Packard LaserJet 2300 series;CMD:PJL,MLC,BIDI-ECP,PCLXL,PCL,PJL,POSTSCRIPT;" driver="hp-lj_2300" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 2410" driver="hp-lj_2410" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 2420" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 2420;DES:Hewlett-Packard LaserJet 2420;CMD:PJL,MLC,PCLXL,PCL,PJL,POSTSCRIPT;" driver="hp-lj_2420" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 2430" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 2430;DES:Hewlett-Packard LaserJet 2430;CMD:PJL,MLC,PCLXL,PCL,PJL,POSTSCRIPT,PDF;" driver="hp-lj_2430" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3015" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3015;DES:Hewlett-Packard LaserJet 3015;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3015" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3020" deviceid="MFG:Hewlett-Packard;MDL:hp LaserJet 3020;DES:Hewlett-Packard LaserJet 3020;CMD:PJL,MLC,BIDI-ECP,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3020" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3030" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3030;DES:Hewlett-Packard LaserJet 3030;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3030" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3050" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3050;DES:Hewlett-Packard LaserJet 3050;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3050" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3052" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3052;DES:Hewlett-Packard LaserJet 3052;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3052" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3055" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3055;DES:Hewlett-Packard LaserJet 3055;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3055" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3200" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3200;DES:Hewlett-Packard LaserJet 3200;CMD:PJL,MLC,PCL,PCLXL;" driver="hp-lj_3200" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3200m" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3200M;DES:Hewlett-Packard LaserJet 3200M;CMD:PJL,MLC,PCL,PCLXL,POSTSCRIPT;" driver="hp-lj_3200m" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3200se" driver="hp-lj_3200se" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3300 MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3300/3310/3320;DES:Hewlett-Packard LaserJet 3300/3310/3320;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3300_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3310 MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3300/3310/3320;DES:Hewlett-Packard LaserJet 3300/3310/3320;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3310_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3320 MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3300/3310/3320;DES:Hewlett-Packard LaserJet 3300/3310/3320;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3320_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3320N MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3300/3310/3320;DES:Hewlett-Packard LaserJet 3300/3310/3320;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3320n_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3330 MFP" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3330;DES:Hewlett-Packard LaserJet 3330;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3330_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 3380" deviceid="MFG:Hewlett-Packard;MDL:HP LaserJet 3380;DES:Hewlett-Packard LaserJet 3380;CMD:PJL,MLC,PCL,POSTSCRIPT,PCLXL;" driver="hp-lj_3380" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <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" /> + <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" /> + <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" /> + <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" /> + <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" /> + <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" /> + <printer translate="name" name="HP LaserJet 4240" driver="hp-lj_4240" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <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" /> + <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" /> + <printer translate="name" name="HP LaserJet 4345 mfp" driver="hp-lj_4345_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <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" /> + <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" /> + <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" /> + <printer translate="name" name="HP LaserJet 5200" driver="hp-lj_5200" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 5200L" driver="hp-lj_5200l" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <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" /> + <printer translate="name" name="HP LaserJet 8100" driver="hp-lj_8100" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <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" /> + <printer translate="name" name="HP LaserJet 9000" driver="hp-lj_9000" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 9040" driver="hp-lj_9040" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 9040 MFP" driver="hp-lj_9040_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 9050" driver="hp-lj_9050" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP LaserJet 9050 MFP" driver="hp-lj_9050_mfp" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <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" /> + <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" /> + <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" /> + <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" /> + <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" /> + <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" /> + <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" /> + <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" /> + <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" /> + <printer translate="name" name="HP Mopier 240" driver="hp-mopier_240" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="HP Mopier 320" driver="hp-mopier_320" manufacturer="HP" model="6" parameters="pcl_laser_params" /> + <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" /> + <printer translate="name" name="HP OfficeJet 330" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 300;DES:Hewlett-Packard OfficeJet Series 300;CMD:MLC,PCL,PML;" driver="hp-oj_330" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 350" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 300;DES:Hewlett-Packard OfficeJet Series 300;CMD:MLC,PCL,PML;" driver="hp-oj_350" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 500" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 500;CMD:MLC,PCL,PML;" driver="hp-oj_500" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 520" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 500;CMD:MLC,PCL,PML;" driver="hp-oj_520" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 570" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 500;CMD:MLC,PCL,PML;" driver="hp-oj_570" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 580" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 500;CMD:MLC,PCL,PML;" driver="hp-oj_580" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 590" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 500;CMD:MLC,PCL,PML;" driver="hp-oj_590" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 600" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 600;CMD:MLC,PCL,PML;" driver="hp-oj_600" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 610" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 600;CMD:MLC,PCL,PML;" driver="hp-oj_610" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 625" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 600;CMD:MLC,PCL,PML;" driver="hp-oj_625" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 630" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 600;CMD:MLC,PCL,PML;" driver="hp-oj_630" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 635" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 600;CMD:MLC,PCL,PML;" driver="hp-oj_635" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 700" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 700;CMD:MLC,PCL,PML;" driver="hp-oj_700" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 710" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 700;CMD:MLC,PCL,PML;" driver="hp-oj_710" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 720" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 700;CMD:MLC,PCL,PML;" driver="hp-oj_720" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 725" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet Series 700;CMD:MLC,PCL,PML;" driver="hp-oj_725" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 5105" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet 5105;DES:Hewlett-Packard OfficeJet 5100 Series;CMD:MLC,PCL,PML;" driver="hp-oj_5105" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 5110" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet 5110v;DES:Hewlett-Packard OfficeJet 5100 Series;CMD:MLC,PCL,PML;" driver="hp-oj_5110" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 5110xi" driver="hp-oj_5110xi" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 6105" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet 6100 Series;CMD:MLC,PCL,PML,DW-PCL,DYN;" driver="hp-oj_6105" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 6110" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet 6100 Series;CMD:MLC,PCL,PML,DW-PCL,DYN;" driver="hp-oj_6110" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 7110" deviceid="MFG:Hewlett-Packard;MDL:officejet 7100 series;CMD:MLC,PCL,PML,DW-PCL,BIDI-ECP;" driver="hp-oj_7110" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 7130" deviceid="MFG:Hewlett-Packard;MDL:officejet 7100 series;CMD:MLC,PCL,PML,DW-PCL,BIDI-ECP;" driver="hp-oj_7130" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet 7140" deviceid="MFG:Hewlett-Packard;MDL:officejet 7100 series;CMD:MLC,PCL,PML,DW-PCL,BIDI-ECP;" driver="hp-oj_7140" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet D125" deviceid="MFG:Hewlett-Packard;MDL:officejet d series;CMD:MLC,PCL,PML,DW-PCL,BIDI-ECP;" driver="hp-oj_d125" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet D135" deviceid="MFG:Hewlett-Packard;MDL:officejet d series;CMD:MLC,PCL,PML,DW-PCL,BIDI-ECP;" driver="hp-oj_d135" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet D145" deviceid="MFG:Hewlett-Packard;MDL:officejet d series;CMD:MLC,PCL,PML,DW-PCL,BIDI-ECP;" driver="hp-oj_d145" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet D155" deviceid="MFG:Hewlett-Packard;MDL:officejet d series;CMD:MLC,PCL,PML,DW-PCL,BIDI-ECP;" driver="hp-oj_d155" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet G55" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet G55;DES:Hewlett-Packard OfficeJet G Series;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_g55" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet G85" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet G85;DES:Hewlett-Packard OfficeJet G Series;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_g85" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet G95" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet G95;DES:Hewlett-Packard OfficeJet G Series;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_g95" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet K60" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet K60;DES:Hewlett-Packard OfficeJet K Series;CMD:MLC,PCL,PML;" driver="hp-oj_k60" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet K60xi" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet K60xi;DES:Hewlett-Packard OfficeJet K Series;CMD:MLC,PCL,PML;" driver="hp-oj_k60xi" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet K80" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet K80;DES:Hewlett-Packard OfficeJet K Series;CMD:MLC,PCL,PML;" driver="hp-oj_k80" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet K80xi" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet K80xi;DES:Hewlett-Packard OfficeJet K Series;CMD:MLC,PCL,PML;" driver="hp-oj_k80xi" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet LX" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet;CMD:MLC,PCL,PML;" driver="hp-oj_lx" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet Pro 1150C" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET PRO 1150C;DES:Hewlett-Packard OfficeJet Pro 1150C;CMD:PCL,MLC,PML,PJL;" driver="hp-oj_pro_1150c" manufacturer="HP" model="800" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet Pro 1170C" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET PRO 1170C SERIES;DES:Hewlett-Packard OfficeJet Pro 1170C Series;CMD:PCL,MLC,PML,PJL;" driver="hp-oj_pro_1170c" manufacturer="HP" model="800" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet Pro 1175C" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET PRO 1170C SERIES;DES:Hewlett-Packard OfficeJet Pro 1170C Series;CMD:PCL,MLC,PML,PJL;" driver="hp-oj_pro_1175c" manufacturer="HP" model="800" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet R40" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET R40;DES:Hewlett-Packard OfficeJet R40;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_r40" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet R45" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET R40;DES:Hewlett-Packard OfficeJet R40;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_r45" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet R60" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET R60;DES:Hewlett-Packard OfficeJet R60;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_r60" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet R65" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET R65;DES:Hewlett-Packard OfficeJet R65;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_r65" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet R80" deviceid="MFG:HEWLETT-PACKARD;MDL:OFFICEJET R80;DES:Hewlett-Packard OfficeJet R80;CMD:MLC,PCL,PML,SCL;" driver="hp-oj_r80" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet T45" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet T Series;DES:Hewlett-Packard OfficeJet T Series;CMD:MLC,PCL,PML;" driver="hp-oj_t45" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet T65" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet T Series;DES:Hewlett-Packard OfficeJet T Series;CMD:MLC,PCL,PML;" driver="hp-oj_t65" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet V40" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet V40;DES:Hewlett-Packard OfficeJet V Series;CMD:MLC,PCL,PML;" driver="hp-oj_v40" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet V40xi" deviceid="MFG:Hewlett-Packard;MDL:OfficeJet V40xi;DES:Hewlett-Packard OfficeJet V Series;CMD:MLC,PCL,PML;" driver="hp-oj_v40xi" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP OfficeJet" driver="hp-oj" manufacturer="HP" model="500" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PSC 370" deviceid="MFG:Hewlett-Packard;MDL:Printer/Scanner/Copier 300;CMD:MLC,PCL,PML;" driver="hp-psc_370" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PSC 380" deviceid="MFG:Hewlett-Packard;MDL:Printer/Scanner/Copier 300;CMD:MLC,PCL,PML;" driver="hp-psc_380" manufacturer="HP" model="690" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PSC 500" deviceid="MFG:HEWLETT-PACKARD;MDL:PSC 500;DES:Hewlett-Packard PSC 500;CMD:MLC,PCL,PML,SCL;" driver="hp-psc_500" manufacturer="HP" model="840" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PSC 750" deviceid="MFG:Hewlett-Packard;MDL:PSC 750;DES:Hewlett-Packard PSC 700 Series;CMD:MLC,PCL,PML;" driver="hp-psc_750" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PSC 950" deviceid="MFG:Hewlett-Packard;MDL:PSC 900 Series;DES:Hewlett-Packard PSC 900 Series;CMD:MLC,PCL,PML;" driver="hp-psc_950" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PSC 950xi" deviceid="MFG:Hewlett-Packard;MDL:PSC 900 Series;DES:Hewlett-Packard PSC 900 Series;CMD:MLC,PCL,PML;" driver="hp-psc_950xi" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PSC 2110" deviceid="MFG:Hewlett-Packard;MDL:PSC 2100 Series;CMD:MLC,PCL,PML,DW-PCL,DYN;" driver="hp-psc_2110" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PSC 2150" deviceid="MFG:Hewlett-Packard;MDL:PSC 2150 Series;CMD:MLC,PCL,PML,DW-PCL,DYN;" driver="hp-psc_2150" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PSC 2210" deviceid="MFG:Hewlett-Packard;MDL:PSC 2200 Series;CMD:MLC,PCL,PML,DW-PCL,DYN;" driver="hp-psc_2210" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PhotoSmart 7150" deviceid="MFG:hp;MDL:photosmart 7150;DES:hp photosmart 7150;CMD:MLC,PCL,PML,DW-PCL,DYN,DESKJET;" driver="hp-psc_7150" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PhotoSmart 7345" driver="hp-psc_7345" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PhotoSmart 7350" deviceid="MFG:hp;MDL:photosmart 7350;DES:hp photosmart 7350;CMD:MLC,PCL,PML,DW-PCL,DYN,DESKJET;" driver="hp-psc_7350" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PhotoSmart 7550" deviceid="MFG:hp;MDL:photosmart 7550;DES:hp photosmart 7550;CMD:MLC,PCL,PML,DW-PCL,DYN,DESKJET;" driver="hp-psc_7550" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PhotoSmart P100" deviceid="MFG:HP;MDL:PHOTOSMART 100;DES:hp photosmart 100;CMD:MLC,PCL,PML,BIDI-ECP,ECP18,DW-PCL;" driver="hp-psc_p100" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PhotoSmart P130" driver="hp-psc_p130" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PhotoSmart P230" driver="hp-psc_p230" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PhotoSmart P1000" deviceid="MFG:HEWLETT-PACKARD;MDL:PHOTOSMART P1000;DES:Hewlett-Packard PhotoSmart P1000;CMD:MLC,PCL,PML;" driver="pcl-P1000" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> <!-- Uses 900 series driver --> + <printer translate="name" name="HP PhotoSmart P1100" deviceid="MFG:HEWLETT-PACKARD;MDL:PHOTOSMART P1100;DES:Hewlett-Packard PhotoSmart P1100;CMD:MLC,PCL,PML;" driver="pcl-P1100" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> <!-- Uses 900 series driver --> + <printer translate="name" name="HP PhotoSmart P1115" deviceid="MFG:HP;MDL:PHOTOSMART 1115;DES:hp photosmart 1115;CMD:MLC,PCL,PML,BIDI-ECP,ECP18,DW-PCL;" driver="hp-psc_p1115" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PhotoSmart P1215" driver="hp-psc_p1215" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PhotoSmart P1218" deviceid="MFG:HP;MDL:PHOTOSMART 1218;DES:hp photosmart 1218;CMD:MLC,PCL,PML,BIDI-ECP,ECP18,DW-PCL;" driver="hp-psc_p1218" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP PhotoSmart P1315" deviceid="MFG:HP;MDL:PHOTOSMART 1315;DES:hp photosmart 1315;CMD:MLC,PCL,PML,BIDI-ECP,ECP18,DW-PCL;" driver="hp-psc_p1315" manufacturer="HP" model="900" parameters="pcl_inkjet_params" /> + <printer translate="name" name="HP e-printer e20" driver="hp-e-printer_e20" manufacturer="HP" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="IBM 4019" driver="ibm-4019" manufacturer="IBM" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="IBM 4029 030 LaserPrinter 10" driver="ibm-4029_030_lp_10" manufacturer="IBM" model="3" parameters="pcl_laser_params" /> + <printer translate="name" name="IBM 4312" driver="ibm-4312" manufacturer="IBM" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="IBM Infoprint 12" deviceid="MFG:IBM;MDL:Infoprint;CMD:PCL5E,PCL6;" driver="ibm-infoprint_12" manufacturer="IBM" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="IBM Page Printer 3112" deviceid="MFG:Lexmark International;MDL:IBM 3112 Page Printer;DES:IBM 3112 Page Printer;CMD:PCL 5 Emulation, PostScript Level 2 Emulation, NPAP, PJL;" driver="ibm-pp_3112" manufacturer="IBM" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec 4353 MF" driver="infotec-4353_mf" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec 4452 MF" driver="infotec-4452_mf" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec 4651 MF" deviceid="MFG:Lexmark International;MDL:IBM 3112 Page Printer;DES:IBM 3112 Page Printer;CMD:PCL 5 Emulation, PostScript Level 2 Emulation, NPAP, PJL;" driver="infotec-4651_mf" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS2022" driver="infotec-is2022" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS2027" driver="infotec-is2027" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS2032" driver="infotec-is2032" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS2035" driver="infotec-is2035" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS2045" driver="infotec-is2045" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS2090" driver="infotec-is2090" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS2105" driver="infotec-is2105" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2015" driver="infotec-is_2015" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2018" driver="infotec-is_2018" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2018D" driver="infotec-is_2018d" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2060" driver="infotec-is_2060" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2075" driver="infotec-is_2075" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2122" driver="infotec-is_2122" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2127" driver="infotec-is_2127" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2132" driver="infotec-is_2132" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2135" driver="infotec-is_2135" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2145" driver="infotec-is_2145" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2151" driver="infotec-is_2151" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2160" driver="infotec-is_2160" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2175" driver="infotec-is_2175" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2215" driver="infotec-is_2215" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2216" driver="infotec-is_2216" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2220" driver="infotec-is_2220" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2220D" driver="infotec-is_2220d" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2225" driver="infotec-is_2225" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2230" driver="infotec-is_2230" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2235" driver="infotec-is_2235" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2245" driver="infotec-is_2245" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2255" driver="infotec-is_2255" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2265" driver="infotec-is_2265" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2275" driver="infotec-is_2275" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2316" driver="infotec-is_2316" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2320" driver="infotec-is_2320" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2325" driver="infotec-is_2325" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2416" driver="infotec-is_2416" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2425" driver="infotec-is_2425" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2430" driver="infotec-is_2430" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2435" driver="infotec-is_2435" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 2445" driver="infotec-is_2445" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 3090" driver="infotec-is_3090" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 3110" driver="infotec-is_3110" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec IS 3135" driver="infotec-is_3135" manufacturer="Infotec" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec ISC 1024c" driver="infotec-isc_1024c" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec ISC 1032c" driver="infotec-isc_1032c" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec ISC 2428" driver="infotec-isc_2428" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec ISC 2525" driver="infotec-isc_2525" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec ISC 2835" driver="infotec-isc_2835" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec ISC 3030" driver="infotec-isc_3030" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec ISC 3535" driver="infotec-isc_3535" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec ISC 3545" driver="infotec-isc_3545" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec ISC 4045" driver="infotec-isc_4045" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec ISC 4560" driver="infotec-isc_4560" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec ISC 5560" driver="infotec-isc_5560" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec ISC 615G" driver="infotec-isc_615g" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP 2550" driver="infotec-mp_2550" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec MP 2550B" driver="infotec-mp_2550b" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec MP 3350" driver="infotec-mp_3350" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec MP 3350B" driver="infotec-mp_3350b" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec MP 4000" driver="infotec-mp_4000" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec MP 4000B" driver="infotec-mp_4000b" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec MP 5000" driver="infotec-mp_5000" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec MP 5000B" driver="infotec-mp_5000b" manufacturer="Infotec" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Infotec MP C2003" driver="infotec-mp_c2003" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C2003Z" driver="infotec-mp_c2003z" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C2004" driver="infotec-mp_c2004" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C2011" driver="infotec-mp_c2011" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C2050" driver="infotec-mp_c2050" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C2051" driver="infotec-mp_c2051" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C2503" driver="infotec-mp_c2503" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C2503Z" driver="infotec-mp_c2503z" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C2504" driver="infotec-mp_c2504" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C2550" driver="infotec-mp_c2550" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C2551" driver="infotec-mp_c2551" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C2800" driver="infotec-mp_c2800" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C300" driver="infotec-mp_c300" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C3001" driver="infotec-mp_c3001" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C3002" driver="infotec-mp_c3002" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C3003" driver="infotec-mp_c3003" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C3004" driver="infotec-mp_c3004" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C300SR" driver="infotec-mp_c300sr" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C3300" driver="infotec-mp_c3300" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C3501" driver="infotec-mp_c3501" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C3502" driver="infotec-mp_c3502" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C3503" driver="infotec-mp_c3503" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C3504" driver="infotec-mp_c3504" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C400" driver="infotec-mp_c400" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C4000" driver="infotec-mp_c4000" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C400SR" driver="infotec-mp_c400sr" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C4501" driver="infotec-mp_c4501" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C4501A" driver="infotec-mp_c4501a" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C4502" driver="infotec-mp_c4502" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C4502A" driver="infotec-mp_c4502a" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C4503" driver="infotec-mp_c4503" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C4504" driver="infotec-mp_c4504" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C5000" driver="infotec-mp_c5000" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C5501" driver="infotec-mp_c5501" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C5501A" driver="infotec-mp_c5501a" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C5502" driver="infotec-mp_c5502" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C5502A" driver="infotec-mp_c5502a" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C5503" driver="infotec-mp_c5503" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C5504" driver="infotec-mp_c5504" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C6000" driver="infotec-mp_c6000" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C6003" driver="infotec-mp_c6003" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C6004" driver="infotec-mp_c6004" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C6501" driver="infotec-mp_c6501" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C6502" driver="infotec-mp_c6502" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C6503" driver="infotec-mp_c6503" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C7500" driver="infotec-mp_c7500" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C7501" driver="infotec-mp_c7501" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C8002" driver="infotec-mp_c8002" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec MP C8003" driver="infotec-mp_c8003" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec Pro C5100S" driver="infotec-pro_c5100s" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec Pro C5110S" driver="infotec-pro_c5110s" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec Pro C5200S" driver="infotec-pro_c5200s" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec Pro C5210S" driver="infotec-pro_c5210s" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec Pro C7100" driver="infotec-pro_c7100" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec Pro C7100S" driver="infotec-pro_c7100s" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec Pro C7110" driver="infotec-pro_c7110" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Infotec Pro C7110S" driver="infotec-pro_c7110s" manufacturer="Infotec" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Kyocera CS-1815" driver="kyocera-cs-1815" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera CS-2525E" driver="kyocera-cs-2525e" manufacturer="Kyocera" model="50003" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera CS-3225E" driver="kyocera-cs-3225e" manufacturer="Kyocera" model="50003" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera CS-3232E" driver="kyocera-cs-3232e" manufacturer="Kyocera" model="50003" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera CS-4035E" driver="kyocera-cs-4035e" manufacturer="Kyocera" model="50003" parameters="pcl_laser_params" /> + + <printer translate="name" name="Kyocera CS-250ci" driver="kyocera-cs-250ci" manufacturer="Kyocera" model="50003" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera CS-300ci" driver="kyocera-cs-300ci" manufacturer="Kyocera" model="50003" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera CS-3050ci" driver="kyocera-cs-3050ci" manufacturer="Kyocera" model="50003" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera CS-3550ci" driver="kyocera-cs-3550ci" manufacturer="Kyocera" model="50003" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera CS-400ci" driver="kyocera-cs-400ci" manufacturer="Kyocera" model="50003" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera CS-500ci" driver="kyocera-cs-500ci" manufacturer="Kyocera" model="50003" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera Ci-1100" driver="kyocera-ci-1100" manufacturer="Kyocera" model="50002" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera F-1010" deviceid="MFG:Kyocera;MDL:F-1010;DES:Kyocera F-1010;" driver="kyocera-f-1010" manufacturer="Kyocera" model="22" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-600 - KPDL-2" driver="kyocera-fs-600_kpdl-2" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-600" deviceid="MFG:Kyocera;MDL:Kyocera FS-600;DES:Kyocera FS-600;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-600" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-680" deviceid="MFG:Kyocera;MDL:Kyocera FS-680;DES:Kyocera FS-680;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-680" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-800" deviceid="MFG:Kyocera;MDL:Kyocera FS-800;DES:Kyocera FS-800;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-800" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-920" driver="kyocera-fs-920" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-1000" deviceid="MFG:Kyocera;MDL:Kyocera FS-1000;DES:Kyocera FS-1000;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-1000" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-1000+" driver="kyocera-fs-1000plus" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-1010" deviceid="MFG:Kyocera Mita;MDL:Kyocera Mita FS-1010;DES:Kyocera FS-1010;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-1010" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-1018MFP" driver="kyocera-fs-1018mfp" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-1020D" driver="kyocera-fs-1020d" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-1030D" driver="kyocera-fs-1030d" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <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" /> + <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" /> + <printer translate="name" name="Kyocera FS-1135MFP" deviceid="MFG:Kyocera;MDL:FS-1135MFP;CMD:PCLXL,PostScript Emulation,PCL5E,PJL;" driver="kyocera-fs-1135mfp" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <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" /> + <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" /> + <printer translate="name" name="Kyocera FS-1600+" driver="kyocera-fs-1600plus" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-1700" deviceid="MFG:Kyocera;MDL:Kyocera FS-1700;DES:Kyocera FS-1700;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-1700" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-1700+" driver="kyocera-fs-1700plus" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-1714M" driver="kyocera-fs-1714m" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-1750" deviceid="MFG:Kyocera;MDL:Kyocera FS-1750;DES:Kyocera FS-1750;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-1750" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-1800" deviceid="MFG:Kyocera Mita;MDL:Kyocera Mita FS-1800;DES:Kyocera FS-1800;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-1800" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-1800+" driver="kyocera-fs-1800plus" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-1900" deviceid="MFG:Kyocera Mita;MDL:Kyocera Mita FS-1900;DES:Kyocera FS-1900;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-1900" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-1920" driver="kyocera-fs-1920" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-2000D" driver="kyocera-fs-2000d" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-3500" deviceid="MFG:Kyocera;MDL:FS-3500;DES:Kyocera FS-3500;" driver="kyocera-fs-3500" manufacturer="Kyocera" model="32" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-3600" deviceid="MFG:Kyocera;MDL:FS-3600;DES:Kyocera FS-3600;" driver="kyocera-fs-3600" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-3600+" driver="kyocera-fs-3600plus" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-3700" deviceid="MFG:Kyocera;MDL:Kyocera FS-3700;DES:Kyocera FS-3700;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-3700" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-3700+" driver="kyocera-fs-3700plus" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-3718M" driver="kyocera-fs-3718m" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-3750" deviceid="MFG:Kyocera;MDL:Kyocera FS-3750;DES:Kyocera FS-3750;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-3750" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-3800" deviceid="MFG:Kyocera Mita;MDL:Kyocera Mita FS-3800;DES:Kyocera FS-3800;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-3800" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-3820N" driver="kyocera-fs-3820n" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-3830N" driver="kyocera-fs-3830n" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-3900DN" driver="kyocera-fs-3900dn" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-4000DN" driver="kyocera-fs-4000dn" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-5800C" deviceid="MFG:Kyocera;MDL:Kyocera FS-5800C;DES:Kyocera FS-5800C;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-5800c" manufacturer="Kyocera" model="50003" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera FS-5900C" deviceid="MFG:Kyocera;MDL:Kyocera FS-5900C;DES:Kyocera FS-5900C;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-5900c" manufacturer="Kyocera" model="50003" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera FS-6020" driver="kyocera-fs-6020" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-6026" driver="kyocera-fs-6026" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-6300" driver="kyocera-fs-6300" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-6500" deviceid="MFG:Kyocera;MDL:FS-6500;DES:Kyocera FS-6500;" driver="kyocera-fs-6500" manufacturer="Kyocera" model="32" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-6500+" driver="kyocera-fs-6500plus" manufacturer="Kyocera" model="35" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-6700" deviceid="MFG:Kyocera;MDL:Kyocera FS-6700;DES:Kyocera FS-6700;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-6700" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-6750" driver="kyocera-fs-6750" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-6900" driver="kyocera-fs-6900" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-6950DN" driver="kyocera-fs-6950dn" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-7000" deviceid="MFG:Kyocera;MDL:Kyocera FS-7000;DES:Kyocera FS-7000;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-7000" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-7000+" driver="kyocera-fs-7000plus" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-7028M" driver="kyocera-fs-7028m" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-8000C" deviceid="MFG:Kyocera Mita;MDL:Kyocera Mita FS-8000C;DES:Kyocera FS-8000C;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-8000c" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera FS-9000" deviceid="MFG:Kyocera;MDL:Kyocera FS-9000;DES:Kyocera FS-9000;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-9000" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-9100DN" deviceid="MFG:Kyocera Mita;MDL:Kyocera Mita FS-9100DN;DES:Kyocera FS-9100DN;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-9100dn" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-9130DN" driver="kyocera-fs-9130dn" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-9500DN" deviceid="MFG:Kyocera Mita;MDL:Kyocera Mita FS-9500DN;DES:Kyocera FS-9500DN;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-fs-9500dn" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-9530DN" driver="kyocera-fs-9530dn" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera FS-C5015N" driver="kyocera-fs-c5015n" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera FS-C5016N" driver="kyocera-fs-c5016n" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera FS-C5020N" driver="kyocera-fs-c5020n" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera FS-C5025N" driver="kyocera-fs-c5025n" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera FS-C5030N" driver="kyocera-fs-c5030n" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera FS-C5100DN" driver="kyocera-fs-c5100dn" manufacturer="Kyocera" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera FS-C5200DN" driver="kyocera-fs-c5200dn" manufacturer="Kyocera" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera FS-C5300DN" driver="kyocera-fs-c5300dn" manufacturer="Kyocera" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera FS-C5350DN" driver="kyocera-fs-c5350dn" manufacturer="Kyocera" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera FS-C5400DN" driver="kyocera-fs-c5400dn" manufacturer="Kyocera" model="50002" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera FS-C8008N" driver="kyocera-fs-c8008n" manufacturer="Kyocera" model="50003" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera FS-C8100DN" driver="kyocera-fs-c8100dn" manufacturer="Kyocera" model="50003" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera FS-C8100DN+" driver="kyocera-fs-c8100dnplus" manufacturer="Kyocera" model="50003" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera KM-1510" driver="kyocera-km-1510" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-1530" deviceid="MFG:Kyocera Mita;MDL:KM-1530;DES:Kyocera Mita KM-1530;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-km-1530" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-1810" deviceid="MFG:Kyocera Mita;MDL:KM-1810;DES:Kyocera Mita KM-1810;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-km-1810" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-1815" driver="kyocera-km-1815" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-1820" driver="kyocera-km-1820" manufacturer="Kyocera" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-2030" deviceid="MFG:Kyocera Mita;MDL:KM-2030;DES:Kyocera Mita KM-2030;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-km-2030" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-2530" deviceid="MFG:Kyocera Mita;MDL:KM-2530;DES:Kyocera Mita KM-2530;" driver="kyocera-km-2530" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-3050" driver="kyocera-km-3050" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-3530" deviceid="MFG:Kyocera Mita;MDL:KM-3530;DES:Kyocera Mita KM-3530;" driver="kyocera-km-3530" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-4050" driver="kyocera-km-4050" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-4230" deviceid="MFG:Kyocera Mita;MDL:KM-4230;DES:Kyocera Mita KM-4230;" driver="kyocera-km-4230" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-4230/5230" driver="kyocera-km-4230_5230" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-4530" deviceid="MFG:Kyocera Mita;MDL:KM-4530;DES:Kyocera Mita KM-4530;" driver="kyocera-km-4530" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-5050" driver="kyocera-km-5050" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-5230" deviceid="MFG:Kyocera Mita;MDL:KM-5230;DES:Kyocera Mita KM-5230;" driver="kyocera-km-5230" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-5530" deviceid="MFG:Kyocera Mita;MDL:KM-5530;DES:Kyocera Mita KM-5530;" driver="kyocera-km-5530" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-6030" driver="kyocera-km-6030" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-6230" deviceid="MFG:Kyocera Mita;MDL:KM-6230;DES:Kyocera Mita KM-6230;CMD:POSTSCRIPT,PJL,PCL;" driver="kyocera-km-6230" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-8030" driver="kyocera-km-8030" manufacturer="Kyocera" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Kyocera KM-C830" driver="kyocera-km-c830" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera KM-C850" driver="kyocera-km-c850" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera KM-C2520" driver="kyocera-km-c2520" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera KM-C2525E" driver="kyocera-km-c2525e" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera KM-C2630" driver="kyocera-km-c2630" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera KM-C3225" driver="kyocera-km-c3225" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera KM-C3225E" driver="kyocera-km-c3225e" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera KM-C3232" driver="kyocera-km-c3232" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera KM-C3232E" driver="kyocera-km-c3232e" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera KM-C4035E" driver="kyocera-km-c4035e" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera TASKalfa 250ci" driver="kyocera-km-taskalfa-250ci" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera TASKalfa 300ci" driver="kyocera-km-taskalfa-300ci" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera TASKalfa 400ci" driver="kyocera-km-taskalfa-400ci" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Kyocera TASKalfa 500ci" driver="kyocera-km-taskalfa-500ci" manufacturer="Kyocera" model="50004" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Lanier 5622" driver="lanier-5622" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier 5627" driver="lanier-5627" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier 5632" driver="lanier-5632" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier 5635" driver="lanier-5635" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier 5645" driver="lanier-5645" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LC155" driver="lanier-lc155" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier LD0105" driver="lanier-ld0105" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD015" driver="lanier-ld015" manufacturer="Lanier" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD035" driver="lanier-ld035" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD045" driver="lanier-ld045" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD060" driver="lanier-ld060" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD075" driver="lanier-ld075" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD090" driver="lanier-ld090" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD115" driver="lanier-ld115" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD116" driver="lanier-ld116" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD118" driver="lanier-ld118" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD118d" driver="lanier-ld118d" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD120" driver="lanier-ld120" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD120d" driver="lanier-ld120d" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD122" driver="lanier-ld122" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD124c" driver="lanier-ld124c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier LD127" driver="lanier-ld127" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD132" driver="lanier-ld132" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD132c" driver="lanier-ld132c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier LD135" driver="lanier-ld135" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD145" driver="lanier-ld145" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD151" driver="lanier-ld151" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD160" driver="lanier-ld160" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD160c" driver="lanier-ld160c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier LD175" driver="lanier-ld175" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD225" driver="lanier-ld225" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD230" driver="lanier-ld230" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD235" driver="lanier-ld235" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD245" driver="lanier-ld245" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier LD328c" driver="lanier-ld328c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier LD335c" driver="lanier-ld335c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier LD345c" driver="lanier-ld345c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier LD 130C" driver="lanier-ld_130c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier LD 130CSR" driver="lanier-ld_130csr" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier LD 140C" driver="lanier-ld_140c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier LD 140CSR" driver="lanier-ld_140csr" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier LD 620C" driver="lanier-ld_620c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier LD 625C" driver="lanier-ld_625c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP2500/LD125" driver="lanier-ld125" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 1100/LD1100" driver="lanier-ld1100" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 1350/LD1135" driver="lanier-ld1135" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 1600/LD316" driver="lanier-ld316" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 161/LD016" driver="lanier-ld016" manufacturer="Lanier" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 2000/LD320d" driver="lanier-ld320d" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 2510/LD325" driver="lanier-ld325" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 2550B/LD425B" driver="lanier-ld425b" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 2550/LD425" driver="lanier-ld425" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 3010/LD330" driver="lanier-ld330" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 3350B/LD433B" driver="lanier-ld433b" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 3350/LD433" driver="lanier-ld433" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 3500/LD335" driver="lanier-ld335" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 4000B/LD040B" driver="lanier-ld040b" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 4000/LD040" driver="lanier-ld040" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 4500/LD345" driver="lanier-ld345" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 5000B/LD050B" driver="lanier-ld050b" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 5000/LD050" driver="lanier-ld050" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 5500/LD255" driver="lanier-ld255" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 6500/LD265" driver="lanier-ld265" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 7500/LD275" driver="lanier-ld275" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP 9000/LD190" driver="lanier-ld190" manufacturer="Lanier" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Lanier MP C1500/LD215c" driver="lanier-mp_c1500" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C4501A/LD645CA" driver="lanier-mp_c4501a" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C5501A/LD655CA" driver="lanier-mp_c5501a" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C2003" driver="lanier-mp_c2003" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C2004" driver="lanier-mp_c2004" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C2050/LD520C" driver="lanier-mp_c2050_ld520c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C2500/LD425c" driver="lanier-mp_c2500_ld425c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C2503" driver="lanier-mp_c2503" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C2504" driver="lanier-mp_c2504" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C2550/LD525C" driver="lanier-mp_c2550_ld525c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C2800/LD528C" driver="lanier-mp_c2800_ld528c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C300" driver="lanier-mp_c300" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C3000/LD430c" driver="lanier-mp_c3000_ld430c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C3001/LD630C" driver="lanier-mp_c3001_ld630c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C3002" driver="lanier-mp_c3002" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C3003" driver="lanier-mp_c3003" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C3004" driver="lanier-mp_c3004" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C300SR" driver="lanier-mp_c300sr" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C3300/LD533C" driver="lanier-mp_c3300_ld533c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C3500/LD435c" driver="lanier-mp_c3500_ld435c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C3501/LD635C" driver="lanier-mp_c3501_ld635c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C3502" driver="lanier-mp_c3502" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C3503" driver="lanier-mp_c3503" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C3504" driver="lanier-mp_c3504" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C400" driver="lanier-mp_c400" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C4000/LD540C" driver="lanier-mp_c4000_ld540c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C400SR" driver="lanier-mp_c400sr" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C4500/LD445c" driver="lanier-mp_c4500_ld445c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C4501/LD645C" driver="lanier-mp_c4501_ld645c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C4502" driver="lanier-mp_c4502" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C4502A" driver="lanier-mp_c4502a" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C4503" driver="lanier-mp_c4503" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C4504" driver="lanier-mp_c4504" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C5000/LD550C" driver="lanier-mp_c5000_ld550c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C5501/LD655C" driver="lanier-mp_c5501_ld655c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C5502" driver="lanier-mp_c5502" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C5502A" driver="lanier-mp_c5502a" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C5503" driver="lanier-mp_c5503" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C6000/LD260c" driver="lanier-mp_c6000_ld260c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C6003" driver="lanier-mp_c6003" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C6004" driver="lanier-mp_c6004" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C6501/LD365C" driver="lanier-mp_c6501_ld365c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C6502" driver="lanier-mp_c6502" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C6503" driver="lanier-mp_c6503" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C7500/LD275c" driver="lanier-mp_c7500_ld275c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C7501/LD375C" driver="lanier-mp_c7501_ld375c" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C8002" driver="lanier-mp_c8002" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier MP C8003" driver="lanier-mp_c8003" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier Pro C5100S" driver="lanier-pro_c5100s" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier Pro C5110S" driver="lanier-pro_c5110s" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier Pro C5200S" driver="lanier-pro_c5200s" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier Pro C5210S" driver="lanier-pro_c5210s" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier Pro C7100" driver="lanier-pro_c7100" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier Pro C7100S" driver="lanier-pro_c7100s" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier Pro C7110" driver="lanier-pro_c7110" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier Pro C7110S" driver="lanier-pro_c7110s" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier SG3110DN" driver="lanier-sg3110dn" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier SG3110DNw" driver="lanier-sg3110dnw" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lanier SG3110SFNw" driver="lanier-sg3110sfnw" manufacturer="Lanier" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Lexmark 4076" driver="lexmark-4076" manufacturer="Lexmark" model="500" parameters="pcl_inkjet_params" /> + <printer translate="name" name="Lexmark Optra E" driver="lexmark-optra_e" manufacturer="Lexmark" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Lexmark Optra E+" driver="lexmark-optra_eplus" manufacturer="Lexmark" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Lexmark Optra E220" driver="lexmark-optra_e220" manufacturer="Lexmark" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Lexmark Optra E321" deviceid="MFG:Lexmark International;MDL:Lexmark E321;DES:Lexmark E321;CMD:PCL 5 Emulation, PostScript Level 3 For Mac Emulation, NPAP, PJL;" driver="lexmark-optra_e321" manufacturer="Lexmark" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Lexmark Optra E323" driver="lexmark-optra_e323" manufacturer="Lexmark" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Lexmark Valuewriter 300" driver="lexmark-vw_300" manufacturer="Lexmark" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Minolta PagePro 6" deviceid="MFG:MINOLTA;MDL:PagePro 6;CMD:HP ENHANCED PCL5;" driver="minolta-pp_6" manufacturer="Minolta" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Minolta PagePro 6e" driver="minolta-pp_6e" manufacturer="Minolta" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Minolta PagePro 6ex" deviceid="MFG:Minolta;MDL:PagePro 6e;CMD:HP ENHANCED PCL5e,PJL,WinStyler;" driver="minolta-pp_6ex" manufacturer="Minolta" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Minolta PagePro 8" deviceid="MFG:MINOLTA;MDL:PagePro 8;CMD:HP ENHANCED PCL6,PJL;" driver="minolta-pp_8" manufacturer="Minolta" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="Minolta PagePro 8L" deviceid="MFG:Minolta;MDL:PagePro 8L;CMD:PrintGear;PCL;PLJ;" driver="minolta-pp_8l" manufacturer="Minolta" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Minolta PagePro 1100" deviceid="MFG:MINOLTA;MDL:PagePro 1100;CMD:HP ENHANCED PCL6,PJL;" driver="minolta-pp_1100" manufacturer="Minolta" model="62" parameters="pcl_laser_params" /> + <printer translate="name" name="NEC SuperScript 660i" driver="nec-ssc_660i" manufacturer="NEC" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="NEC SuperScript 860" driver="nec-ssc_860" manufacturer="NEC" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="NEC SuperScript 870" deviceid="MFG:NEC;MDL:SuperScript 870;DES:SuperScript 870;CMD:PrintGear,PCL,PJL;" driver="nec-ssc_870" manufacturer="NEC" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="NEC SuperScript 1260" driver="nec-ssc_1260" manufacturer="NEC" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="NEC SuperScript 1400" driver="nec-ssc_1400" manufacturer="NEC" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="NEC SuperScript 1800" deviceid="MFG:NEC;MDL:SuperScript 1800;CMD:PCL6,PCL5E;" driver="nec-ssc_1800" manufacturer="NEC" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG 10515/10518/10512" driver="nrg-10512" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG 2205/2238/2212" driver="nrg-2212" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG 2705/2738/2712" driver="nrg-2712" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG 3205/3238/3212" driver="nrg-3212" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG 3525/3508/3502" driver="nrg-3502" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG 3545/3518/3532" driver="nrg-3532" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG 4525/4508/4502" driver="nrg-4502" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG 4545/4518/4532" driver="nrg-4532" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG 6002/6005/6008" driver="nrg-6008" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG 7502/7505/7508" driver="nrg-7508" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG 9005/9008/9002" driver="nrg-9002" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG CS555" driver="nrg-cs555" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG DSc424" driver="nrg-dsc424" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG DSc428" driver="nrg-dsc428" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG DSc432" driver="nrg-dsc432" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG DSc435" driver="nrg-dsc435" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG DSc445" driver="nrg-dsc445" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG DSc460" driver="nrg-dsc460" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG DSm415" driver="nrg-dsm415" manufacturer="NRG" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm615" driver="nrg-dsm615" manufacturer="NRG" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm616" driver="nrg-dsm616" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm618" driver="nrg-dsm618" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm618d" driver="nrg-dsm618d" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm620" driver="nrg-dsm620" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm620d" driver="nrg-dsm620d" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm622" driver="nrg-dsm622" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm627" driver="nrg-dsm627" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm632" driver="nrg-dsm632" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm635" driver="nrg-dsm635" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm645" driver="nrg-dsm645" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm651" driver="nrg-dsm651" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm660" driver="nrg-dsm660" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm675" driver="nrg-dsm675" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm725" driver="nrg-dsm725" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm730" driver="nrg-dsm730" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm735" driver="nrg-dsm735" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG DSm745" driver="nrg-dsm745" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 1100" driver="nrg-mp_1100" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 1350" driver="nrg-mp_1350" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 1600" driver="nrg-mp_1600" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 161" driver="nrg-mp_161" manufacturer="NRG" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 2000" driver="nrg-mp_2000" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 2500" driver="nrg-mp_2500" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 2510" driver="nrg-mp_2510" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 2550" driver="nrg-mp_2550" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 2550B" driver="nrg-mp_2550b" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 3010" driver="nrg-mp_3010" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 3350" driver="nrg-mp_3350" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 3350B" driver="nrg-mp_3350b" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 3500" driver="nrg-mp_3500" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 4000" driver="nrg-mp_4000" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 4000B" driver="nrg-mp_4000b" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 4500" driver="nrg-mp_4500" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 5000" driver="nrg-mp_5000" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 5000B" driver="nrg-mp_5000b" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 5500" driver="nrg-mp_5500" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 6500" driver="nrg-mp_6500" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 7500" driver="nrg-mp_7500" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP 9000" driver="nrg-mp_9000" manufacturer="NRG" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="NRG MP C1500sp" driver="nrg-mp_c1500sp" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C2003" driver="nrg-mp_c2003" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C2003Z" driver="nrg-mp_c2003z" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C2004" driver="nrg-mp_c2004" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C2011" driver="nrg-mp_c2011" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C2050" driver="nrg-mp_c2050" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C2051" driver="nrg-mp_c2051" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C2500" driver="nrg-mp_c2500" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C2503" driver="nrg-mp_c2503" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C2503Z" driver="nrg-mp_c2503z" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C2504" driver="nrg-mp_c2504" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C2550" driver="nrg-mp_c2550" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C2551" driver="nrg-mp_c2551" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C2800" driver="nrg-mp_c2800" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C300" driver="nrg-mp_c300" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C3000" driver="nrg-mp_c3000" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C3001" driver="nrg-mp_c3001" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C3002" driver="nrg-mp_c3002" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C3003" driver="nrg-mp_c3003" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C3004" driver="nrg-mp_c3004" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C300SR" driver="nrg-mp_c300sr" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C3300" driver="nrg-mp_c3300" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C3500" driver="nrg-mp_c3500" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C3501" driver="nrg-mp_c3501" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C3502" driver="nrg-mp_c3502" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C3503" driver="nrg-mp_c3503" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C3504" driver="nrg-mp_c3504" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C400" driver="nrg-mp_c400" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C4000" driver="nrg-mp_c4000" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C400SR" driver="nrg-mp_c400sr" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C4500" driver="nrg-mp_c4500" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C4501" driver="nrg-mp_c4501" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C4501A" driver="nrg-mp_c4501a" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C4502" driver="nrg-mp_c4502" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C4502A" driver="nrg-mp_c4502a" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C4503" driver="nrg-mp_c4503" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C4504" driver="nrg-mp_c4504" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C5000" driver="nrg-mp_c5000" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C5501" driver="nrg-mp_c5501" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C5501A" driver="nrg-mp_c5501a" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C5502" driver="nrg-mp_c5502" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C5502A" driver="nrg-mp_c5502a" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C5503" driver="nrg-mp_c5503" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C5504" driver="nrg-mp_c5504" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C6000" driver="nrg-mp_c6000" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C6003" driver="nrg-mp_c6003" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C6004" driver="nrg-mp_c6004" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C6501" driver="nrg-mp_c6501" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C6502" driver="nrg-mp_c6502" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C6503" driver="nrg-mp_c6503" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C7500" driver="nrg-mp_c7500" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C7501" driver="nrg-mp_c7501" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C8002" driver="nrg-mp_c8002" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG MP C8003" driver="nrg-mp_c8003" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG Pro C5100S" driver="nrg-pro_c5100s" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG Pro C5110S" driver="nrg-pro_c5110s" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG Pro C5200S" driver="nrg-pro_c5200s" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG Pro C5210S" driver="nrg-pro_c5210s" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG Pro C7100" driver="nrg-pro_c7100" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG Pro C7100S" driver="nrg-pro_c7100s" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG Pro C7110" driver="nrg-pro_c7110" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG Pro C7110S" driver="nrg-pro_c7110s" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG SG3110DN" driver="nrg-sg3110dn" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG SG3110DNw" driver="nrg-sg3110dnw" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="NRG SG3110SFNw" driver="nrg-sg3110sfnw" manufacturer="NRG" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Oki B401d" driver="oki-b401d" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki B430" driver="oki-b430" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki B4350" driver="oki-b4350" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki C5300" driver="oki-c5300" manufacturer="Oki" model="50003" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Oki C5400" driver="oki-c5400" manufacturer="Oki" model="50003" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Oki C7300" driver="oki-c7300" manufacturer="Oki" model="50003" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Oki C8800" driver="oki-c8800" manufacturer="Oki" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Oki C9200" driver="oki-c9200" manufacturer="Oki" model="50003" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Oki C9400" driver="oki-c9400" manufacturer="Oki" model="50003" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Oki OL400" driver="okidata-ol400" manufacturer="Oki" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki OL400e" driver="okidata-ol400e" manufacturer="Oki" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki OL400ex" driver="okidata-ol400ex" manufacturer="Oki" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki OL410e" driver="okidata-ol410e" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki OL600e" driver="okidata-ol600e" manufacturer="Oki" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki OL610e/S" driver="okidata-ol610e_s" manufacturer="Oki" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki OL800" driver="okidata-ol800" manufacturer="Oki" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki OL810ex" driver="okidata-ol810ex" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki Okipage 6e" deviceid="MFG:OKI DATA CORP;MDL:OKIDATA OKIPAGE 6e;DES:OKIDATA OKIPAGE 6e (HP4P);CMD:ENHANCED PCL5,PJL,EPSONFX,IBMPPR,HIPERWINDOWS;" driver="okidata-okp_6e" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki Okipage 6ex" deviceid="MFG:OKI DATA CORP;MDL:OKIDATA OKIPAGE 6ex;DES:OKIDATA OKIPAGE 6ex (HP4P);CMD:ENHANCED PCL5,PJL,EPSONFX,IBMPR,HIPERWINDOWS;" driver="okidata-okp_6ex" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki Okipage 8p" deviceid="MFG:OKI DATA CORP;MDL:OKIPAGE 8p;DES:OKIPAGE 8p;CMD:PJL,PCLXL,PCL,EPSONFX,IBMPPR;" driver="okidata-okp_8p" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki Okipage 10e" deviceid="MFG:OKI DATA CORP;MDL:OKIPAGE 10e;DES:OKIPAGE 10e;CMD:PJL,PCLXL,PCL,EPSONFX,IBMPPR;" driver="okidata-okp_10e" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki Okipage 10ex" deviceid="MFG:OKI DATA CORP;MDL:OKIPAGE 10ex;DES:OKIPAGE 10ex;CMD:PJL,PCLXL,PCL,EPSONFX,IBMPPR;" driver="okidata-okp_10ex" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki Okipage 14ex" deviceid="MFG:OKI DATA CORP;MDL:OKIPAGE 14ex;DES:OKIPAGE 14ex;CMD:PJL,PCLXL,PCL,EPSONFX,IBMPPR;" driver="okidata-okp_14ex" manufacturer="Oki" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Oki Super 6e" deviceid="MFG:OKI DATA CORP;MDL:OKIPAGE 14ex;DES:OKIPAGE 14ex;CMD:PJL,PCLXL,PCL,EPSONFX,IBMPPR;" driver="okidata-super_6e" manufacturer="Oki" model="4" parameters="pcl_laser_params" /> + <printer translate="name" name="Olivetti JP350S" driver="olivetti-jp350s" manufacturer="Olivetti" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Olivetti PG 306" driver="olivetti-pg_306" manufacturer="Olivetti" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="PCPI 1030" driver="pcpi-1030" manufacturer="PCPI" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Panasonic DP-180" driver="panasonic-dp-180" manufacturer="Panasonic" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Panasonic DP-C265" driver="panasonic-dp-c265" manufacturer="Panasonic" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Panasonic DP-C305" driver="panasonic-dp-c305" manufacturer="Panasonic" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Panasonic DP-C322" driver="panasonic-dp-c322" manufacturer="Panasonic" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Panasonic DP-C405" driver="panasonic-dp-c405" manufacturer="Panasonic" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Panasonic KX-P4410" driver="panasonic-kx-p4410" manufacturer="Panasonic" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Panasonic KX-P4450" driver="panasonic-kx-p4450" manufacturer="Panasonic" model="3" parameters="pcl_laser_params" /> + <printer translate="name" name="Panasonic KX-P6150" driver="panasonic-kx-p6150" manufacturer="Panasonic" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Panasonic KX-P6500" deviceid="MFG:Panasonic;MDL:KX-P6500;DES:(no such line for this device);CMD:GDI;" driver="panasonic-kx-p6500" manufacturer="Panasonic" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Raven LP-410" driver="raven-lp-410" manufacturer="Raven" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 401" driver="ricoh-afc_401" manufacturer="Ricoh" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 700" driver="ricoh-afc_700" manufacturer="Ricoh" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 1022" driver="ricoh-afc_1022" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 1027" driver="ricoh-afc_1027" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 1032" driver="ricoh-afc_1032" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 1035" driver="ricoh-afc_1035" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 1045" driver="ricoh-afc_1045" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 1060" driver="ricoh-afc_1060" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 1075" driver="ricoh-afc_1075" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 1515" driver="ricoh-afc_1515" manufacturer="Ricoh" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2015" driver="ricoh-afc_2015" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2016" driver="ricoh-afc_2016" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2018" driver="ricoh-afc_2018" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2018D" driver="ricoh-afc_2018d" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2020" driver="ricoh-afc_2020" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2020D" driver="ricoh-afc_2020d" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2022" driver="ricoh-afc_2022" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2027" driver="ricoh-afc_2027" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2032" driver="ricoh-afc_2032" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2035" driver="ricoh-afc_2035" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2035e" driver="ricoh-afc_2035e" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2045" driver="ricoh-afc_2045" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2045e" driver="ricoh-afc_2045e" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2051" driver="ricoh-afc_2051" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2060" driver="ricoh-afc_2060" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2075" driver="ricoh-afc_2075" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2090" driver="ricoh-afc_2090" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 2105" driver="ricoh-afc_2105" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 220" driver="ricoh-afc_220" manufacturer="Ricoh" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 3025" driver="ricoh-afc_3025" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 3030" driver="ricoh-afc_3030" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 3035" driver="ricoh-afc_3035" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 3045" driver="ricoh-afc_3045" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio 3224C" driver="ricoh-afc_3224c" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio 3228C" driver="ricoh-afc_3228c" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio 3232C" driver="ricoh-afc_3232c" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio 3235C" driver="ricoh-afc_3235c" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio 3245C" driver="ricoh-afc_3245c" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio 3260C" driver="ricoh-afc_3260c" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio Color 5560" driver="ricoh-afc_color_5560" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP 1100" driver="ricoh-afc_mp_1100" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 1350" driver="ricoh-afc_mp_1350" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 1600" driver="ricoh-afc_mp_1600" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 161" driver="ricoh-afc_mp_161" manufacturer="Ricoh" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 2000" driver="ricoh-afc_mp_2000" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 2500" driver="ricoh-afc_mp_2500" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 2510" driver="ricoh-afc_mp_2510" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 2550" driver="ricoh-afc_mp_2550" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 2550B" driver="ricoh-afc_mp_2550b" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 3010" driver="ricoh-afc_mp_3010" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 3350" driver="ricoh-afc_mp_3350" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 3350B" driver="ricoh-afc_mp_3350b" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 3500" driver="ricoh-afc_mp_3500" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 4000" driver="ricoh-afc_mp_4000" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 4000B" driver="ricoh-afc_mp_4000b" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 4500" driver="ricoh-afc_mp_4500" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 5000" driver="ricoh-afc_mp_5000" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 5000B" driver="ricoh-afc_mp_5000b" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 5500" driver="ricoh-afc_mp_5500" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 6500" driver="ricoh-afc_mp_6500" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 7500" driver="ricoh-afc_mp_7500" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP 9000" driver="ricoh-afc_mp_9000" manufacturer="Ricoh" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Ricoh Aficio MP C2050" driver="ricoh-afc_mp_c2050" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C2051" driver="ricoh-afc_mp_c2051" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C2500" driver="ricoh-afc_mp_c2500" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C2550" driver="ricoh-afc_mp_c2550" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C2551" driver="ricoh-afc_mp_c2551" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C2800" driver="ricoh-afc_mp_c2800" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C300" driver="ricoh-afc_mp_c300" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C3000" driver="ricoh-afc_mp_c3000" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C3001" driver="ricoh-afc_mp_c3001" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C3002" driver="ricoh-afc_mp_c3002" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C300SR" driver="ricoh-afc_mp_c300sr" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C3300" driver="ricoh-afc_mp_c3300" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C3500" driver="ricoh-afc_mp_c3500" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C3501" driver="ricoh-afc_mp_c3501" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C3502" driver="ricoh-afc_mp_c3502" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C400" driver="ricoh-afc_mp_c400" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C4000" driver="ricoh-afc_mp_c4000" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C400SR" driver="ricoh-afc_mp_c400sr" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C4500" driver="ricoh-afc_mp_c4500" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C4501" driver="ricoh-afc_mp_c4501" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C4501A" driver="ricoh-afc_mp_c4501a" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C4502" driver="ricoh-afc_mp_c4502" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C4502A" driver="ricoh-afc_mp_c4502a" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C5000" driver="ricoh-afc_mp_c5000" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C5501" driver="ricoh-afc_mp_c5501" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C5501A" driver="ricoh-afc_mp_c5501a" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C5502" driver="ricoh-afc_mp_c5502" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C5502A" driver="ricoh-afc_mp_c5502a" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C6000" driver="ricoh-afc_mp_c6000" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C6501" driver="ricoh-afc_mp_c6501" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C7500" driver="ricoh-afc_mp_c7500" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio MP C7501" driver="ricoh-afc_mp_c7501" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Aficio SG 3110DN" driver="ricoh-afc_sg_3110dn" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh GX 3050N" driver="ricoh-gx_3050n" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh GX 3050SFN" driver="ricoh-gx_3050sfn" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh GX 5050N" driver="ricoh-gx_5050n" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh GX E3350N" driver="ricoh-gx_e3350n" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh GX E5550N" driver="ricoh-gx_e5550n" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C1500/615C" driver="ricoh-mp_c1500_615c" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C2003" driver="ricoh-mp_c2003" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C2003Z" driver="ricoh-mp_c2003z" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C2004" driver="ricoh-mp_c2004" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C2011" driver="ricoh-mp_c2011" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C2094J" driver="ricoh-mp_c2094j" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C2503" driver="ricoh-mp_c2503" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C2503Z" driver="ricoh-mp_c2503z" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C2504" driver="ricoh-mp_c2504" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C2594J" driver="ricoh-mp_c2594j" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C3003" driver="ricoh-mp_c3003" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C3004" driver="ricoh-mp_c3004" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C3503" driver="ricoh-mp_c3503" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C3504" driver="ricoh-mp_c3504" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C4503" driver="ricoh-mp_c4503" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C4504" driver="ricoh-mp_c4504" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C5503" driver="ricoh-mp_c5503" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C5504" driver="ricoh-mp_c5504" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C6003" driver="ricoh-mp_c6003" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C6004" driver="ricoh-mp_c6004" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C6502" driver="ricoh-mp_c6502" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C6503" driver="ricoh-mp_c6503" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C8002" driver="ricoh-mp_c8002" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh MP C8003" driver="ricoh-mp_c8003" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Pro C5100S" driver="ricoh-pro_c5100s" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Pro C5110S" driver="ricoh-pro_c5110s" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Pro C5200S" driver="ricoh-pro_c5200s" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Pro C5210S" driver="ricoh-pro_c5210s" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Pro C7100" driver="ricoh-pro_c7100" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Pro C7100S" driver="ricoh-pro_c7100s" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Pro C7110" driver="ricoh-pro_c7110" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh Pro C7110S" driver="ricoh-pro_c7110s" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Ricoh SG3120BSFNw" driver="ricoh-sg3120bsfnw" manufacturer="Ricoh" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Samsung CLP-620" driver="samsung-clp-620" manufacturer="Samsung" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Samsung CLP-660N" driver="samsung-clp-660n" manufacturer="Samsung" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Samsung CLP-660ND" driver="samsung-clp-660nd" manufacturer="Samsung" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Samsung ML-85" driver="samsung-ml-85" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-1250" driver="samsung-ml-1250" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <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" /> + <printer translate="name" name="Samsung ML-1450PS" driver="samsung-ml-1450ps" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <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" /> + <printer translate="name" name="Samsung ML-1651N" driver="samsung-ml-1651n" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-1750" driver="samsung-ml-1750" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-2150" driver="samsung-ml-2150" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-2150PS" driver="samsung-ml-2150ps" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-2151N" driver="samsung-ml-2151n" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-2151NPS" driver="samsung-ml-2151nps" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-2152W" driver="samsung-ml-2152w" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-2152WPS" driver="samsung-ml-2152wps" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-2250" driver="samsung-ml-2250" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-2550" driver="samsung-ml-2550" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-2551N" driver="samsung-ml-2551n" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-2552W" driver="samsung-ml-2552w" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-4600" driver="samsung-ml-4600" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-5000a" driver="samsung-ml-5000a" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-6000" driver="samsung-ml-6000" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-6100" driver="samsung-ml-6100" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-7000" driver="samsung-ml-7000" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-7000N" driver="samsung-ml-7000n" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-7000P" driver="samsung-ml-7000p" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-7050" driver="samsung-ml-7050" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-7300" driver="samsung-ml-7300" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung ML-7300N" driver="samsung-ml-7300n" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung QL-5100A" driver="samsung-ql-5100a" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Samsung QL-6050" deviceid="MFG:Samsung;MDL:6050;CMD:PCL6;" driver="samsung-ql-6050" manufacturer="Samsung" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 2522" driver="savin-2522" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 2527" driver="savin-2527" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 2532" driver="savin-2532" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 2535/2235" driver="savin-2235" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 2545/2245" driver="savin-2245" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 2560" driver="savin-2560" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 2575" driver="savin-2575" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 3515" driver="savin-3515" manufacturer="Savin" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 40105" driver="savin-40105" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 4015" driver="savin-4015" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 4018" driver="savin-4018" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 4018d" driver="savin-4018d" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 4022" driver="savin-4022" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 4027" driver="savin-4027" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 4035/4135g" driver="savin-4135g" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 4035e/4135eG" driver="savin-4135eg" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 4045/4145g" driver="savin-4145g" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 4045e/4145eG" driver="savin-4145eg" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 4051" driver="savin-4051" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 4060" driver="savin-4060" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 4075" driver="savin-4075" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 4090" driver="savin-4090" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 7025" driver="savin-7025" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8016" driver="savin-8016" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8020" driver="savin-8020" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8020d" driver="savin-8020d" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8025" driver="savin-8025" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8025e" driver="savin-8025e" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8030" driver="savin-8030" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8030e" driver="savin-8030e" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8035/8035g" driver="savin-8035g" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8035e" driver="savin-8035e" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8045/8045g" driver="savin-8045g" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8045e" driver="savin-8045e" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8055" driver="savin-8055" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8065" driver="savin-8065" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8075" driver="savin-8075" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8090" driver="savin-8090" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8110" driver="savin-8110" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 8135" driver="savin-8135" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 816" driver="savin-816" manufacturer="Savin" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 9016" driver="savin-9016" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 9021d" driver="savin-9021d" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 9025" driver="savin-9025" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 9025b" driver="savin-9025b" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 9033" driver="savin-9033" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 9033b" driver="savin-9033b" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 9040" driver="savin-9040" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 9040b" driver="savin-9040b" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 9050" driver="savin-9050" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin 9050b" driver="savin-9050b" manufacturer="Savin" model="61" parameters="pcl_laser_params" /> + <printer translate="name" name="Savin C2410" driver="savin-c2410" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C2525" driver="savin-c2525" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C2824" driver="savin-c2824" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C2828" driver="savin-c2828" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C3030" driver="savin-c3030" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C3210e" driver="savin-c3210e" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C3333" driver="savin-c3333" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C3528" driver="savin-c3528" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C3535" driver="savin-c3535" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C4040" driver="savin-c4040" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C4535" driver="savin-c4535" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C4540" driver="savin-c4540" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C5050" driver="savin-c5050" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C6045" driver="savin-c6045" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C6055" driver="savin-c6055" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C7570" driver="savin-c7570" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C9020" driver="savin-c9020" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C9025" driver="savin-c9025" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C9065" driver="savin-c9065" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C9075" driver="savin-c9075" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C9120" driver="savin-c9120" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C9125" driver="savin-c9125" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C9130" driver="savin-c9130" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C9135" driver="savin-c9135" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C9145" driver="savin-c9145" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C9145A" driver="savin-c9145a" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C9155" driver="savin-c9155" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C9155A" driver="savin-c9155a" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C 230" driver="savin-c_230" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C 230SR" driver="savin-c_230sr" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C 240" driver="savin-c_240" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin C 240SR" driver="savin-c_240sr" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C2003" driver="savin-mp_c2003" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C2004" driver="savin-mp_c2004" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C2503" driver="savin-mp_c2503" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C2504" driver="savin-mp_c2504" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C3002" driver="savin-mp_c3002" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C3003" driver="savin-mp_c3003" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C3004" driver="savin-mp_c3004" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C3502" driver="savin-mp_c3502" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C3503" driver="savin-mp_c3503" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C3504" driver="savin-mp_c3504" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C4502" driver="savin-mp_c4502" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C4502A" driver="savin-mp_c4502a" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C4503" driver="savin-mp_c4503" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C4504" driver="savin-mp_c4504" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C5502" driver="savin-mp_c5502" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C5502A" driver="savin-mp_c5502a" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C5503" driver="savin-mp_c5503" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C6003" driver="savin-mp_c6003" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C6004" driver="savin-mp_c6004" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C6502" driver="savin-mp_c6502" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C6503" driver="savin-mp_c6503" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C8002" driver="savin-mp_c8002" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin MP C8003" driver="savin-mp_c8003" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin Pro C5100S" driver="savin-pro_c5100s" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin Pro C5110S" driver="savin-pro_c5110s" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin Pro C5200S" driver="savin-pro_c5200s" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin Pro C5210S" driver="savin-pro_c5210s" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin Pro C7100" driver="savin-pro_c7100" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin Pro C7100S" driver="savin-pro_c7100s" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin Pro C7110" driver="savin-pro_c7110" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin Pro C7110S" driver="savin-pro_c7110s" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin SDC555" driver="savin-sdc555" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin SG3110DN" driver="savin-sg3110dn" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Savin SGC 1506" driver="savin-sgc_1506" manufacturer="Savin" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Seiko SpeedJET 200" driver="seiko-sj_200" manufacturer="Seiko" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Sharp AR-161" deviceid="MFG:SHARP;MDL:AR-160/200 series;DES:None;CMD:PCL;" driver="sharp-ar-161" manufacturer="Sharp" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Sharp AR-BC260" driver="sharp-ar-bc260" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Sharp AR-BC320" driver="sharp-ar-bc320" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Sharp AR-C170FP" driver="sharp-ar-c170fp" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp AR-C170M" driver="sharp-ar-c170m" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Sharp AR-C172FP" driver="sharp-ar-c172fp" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp AR-C172M" driver="sharp-ar-c172m" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Sharp AR-C260" driver="sharp-ar-c260" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Sharp AR-C260F" driver="sharp-ar-c260F" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Sharp AR-C260FP" driver="sharp-ar-c260fp" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp AR-C260M" driver="sharp-ar-c260m" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Sharp AR-C260P" driver="sharp-ar-c260p" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Sharp AR-C260S" driver="sharp-ar-c260S" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Sharp AR-C261F" driver="sharp-ar-c261f" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Sharp AR-C261FP" driver="sharp-ar-c261fp" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp AR-C261M" driver="sharp-ar-c261m" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Sharp AR-C261S" driver="sharp-ar-c261s" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Sharp AR-C262FP" driver="sharp-ar-c262fp" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp AR-C262M" driver="sharp-ar-c262m" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Sharp AR-C262S" driver="sharp-ar-c262s" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Sharp AR-M257" driver="sharp-ar-m257" manufacturer="Sharp" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Sharp MX-2300FG" driver="sharp-mx-2300fg" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp MX-2300G" driver="sharp-mx-2300g" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp MX-2300N" driver="sharp-mx-2300n" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp MX-2700FG" driver="sharp-mx-2700fg" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp MX-2700G" driver="sharp-mx-2700g" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp MX-2700N" driver="sharp-mx-2700n" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp MX-3500FN" driver="sharp-mx-3500fn" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp MX-3500N" driver="sharp-mx-3500n" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp MX-3501FN" driver="sharp-mx-3501fn" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp MX-3501N" driver="sharp-mx-3501n" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp MX-4500FN" driver="sharp-mx-4500fn" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp MX-4500N" driver="sharp-mx-4500n" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp MX-4501FN" driver="sharp-mx-4501fn" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sharp MX-4501N" driver="sharp-mx-4501n" manufacturer="Sharp" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Sony IJP-V100" deviceid="MFG:Sony;MDL:All-in-One IJP-V100;CMD:MLC,PCL,PML;" driver="sony-ijp-v100" manufacturer="Sony" model="601" parameters="pcl_inkjet_params" /> + <printer translate="name" name="Star LS-04" driver="star-ls-04" manufacturer="Star" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Star LaserPrinter 8" driver="star-lp_8" manufacturer="Star" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Tally MT908" driver="tally-mt908" manufacturer="Tally" model="3" parameters="pcl_laser_params" /> + <printer translate="name" name="Tektronix Phaser 750DP" driver="tektronix-phaser_750dp" manufacturer="Tektronix" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Tektronix Phaser 750DX" driver="tektronix-phaser_750dx" manufacturer="Tektronix" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Tektronix Phaser 750N" driver="tektronix-phaser_750n" manufacturer="Tektronix" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Tektronix Phaser 750P" driver="tektronix-phaser_750p" manufacturer="Tektronix" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Toshiba e-Studio 220cp" driver="toshiba-e-studio_220cp" manufacturer="Toshiba" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Toshiba e-Studio 2830c" driver="toshiba-e-studio_2830c" manufacturer="Toshiba" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Toshiba e-Studio 3530c" driver="toshiba-e-studio_3530c" manufacturer="Toshiba" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Toshiba e-Studio 4500c" driver="toshiba-e-studio_4500c" manufacturer="Toshiba" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Toshiba e-Studio 4520c" driver="toshiba-e-studio_4520c" manufacturer="Toshiba" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Toshiba e-Studio 5500c" driver="toshiba-e-studio_5500c" manufacturer="Toshiba" model="50001" parameters="pcl_laser_params">UNTESTED Automatically Generated</printer> + <printer translate="name" name="Xerox Able 1406" driver="xerox-able_1406" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox DocuPrint 4508" driver="xerox-dp_4508" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox DocuPrint C20" driver="xerox-dp_c20" manufacturer="Xerox" model="50000" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Xerox DocuPrint N4512" driver="xerox-dp_n4512" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox DocuPrint N4512PS" driver="xerox-dp_n4512ps" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox DocuPrint P12" deviceid="MFG:XEROX;MDL:DocuPrint P12;DES:Xerox DocuPrint P12;CMD:PrintGear,PCL,PJL;" driver="xerox-dp_p12" manufacturer="Xerox" model="2" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox DocuPrint P1202" deviceid="MFG:Xerox;MDL:DocuPrint;CMD:PCL5E;" driver="xerox-dp_p1202" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox DocuPrint P8e" deviceid="MFG:Xerox;MDL:DocuPrint P8e;CMD:PCL5E2;" driver="xerox-dp_p8e" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Document Centre 400" driver="xerox-dc_400" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 2135" driver="xerox-phaser_2135" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 3160N" driver="xerox-phaser_3160n" manufacturer="Xerox" model="50003" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Xerox Phaser 4400B" driver="xerox-phaser_4400b" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 4400DT" driver="xerox-phaser_4400dt" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 4400DX" driver="xerox-phaser_4400dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 4400N" driver="xerox-phaser_4400n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 4500B" driver="xerox-phaser_4500b" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 4500DT" driver="xerox-phaser_4500dt" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 4500DX" driver="xerox-phaser_4500dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 4500N" driver="xerox-phaser_4500n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 4510B" driver="xerox-phaser_4510b" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 4510DT" driver="xerox-phaser_4510dt" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 4510DX" driver="xerox-phaser_4510dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 4510N" driver="xerox-phaser_4510n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 5500B" driver="xerox-phaser_5500b" manufacturer="Xerox" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 5500DN" driver="xerox-phaser_5500dn" manufacturer="Xerox" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 5500DT" driver="xerox-phaser_5500dt" manufacturer="Xerox" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 5500DX" driver="xerox-phaser_5500dx" manufacturer="Xerox" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 5500N" driver="xerox-phaser_5500n" manufacturer="Xerox" model="64" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6130N" driver="xerox-phaser_6130n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6180DN" driver="xerox-phaser_6180dn" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6180MFP-D" driver="xerox-phaser_6180mfp-d" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6200B" driver="xerox-phaser_6200b" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6200DP" driver="xerox-phaser_6200dp" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6200DX" driver="xerox-phaser_6200dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6200N" driver="xerox-phaser_6200n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6250B" driver="xerox-phaser_6250b" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6250DP" driver="xerox-phaser_6250dp" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6250DT" driver="xerox-phaser_6250dt" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6250DX" driver="xerox-phaser_6250dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6250N" driver="xerox-phaser_6250n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6300DN" driver="xerox-phaser_6300dn" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6300N" driver="xerox-phaser_6300n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6350DP" driver="xerox-phaser_6350dp" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6350DT" driver="xerox-phaser_6350dt" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6350DX" driver="xerox-phaser_6350dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6360DN" driver="xerox-phaser_6360dn" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 6360DX" driver="xerox-phaser_6360dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7300B" driver="xerox-phaser_7300b" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7300DN" driver="xerox-phaser_7300dn" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7300DT" driver="xerox-phaser_7300dt" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7300DX" driver="xerox-phaser_7300dx" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7300N" driver="xerox-phaser_7300n" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7400DN" driver="xerox-phaser_7400dn" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7400DT" driver="xerox-phaser_7400dt" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7400DX" driver="xerox-phaser_7400dx" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7400DXF" driver="xerox-phaser_7400dxf" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7400N" driver="xerox-phaser_7400n" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7700DN" driver="xerox-phaser_7700dn" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7700DX" driver="xerox-phaser_7700dx" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7700GX" driver="xerox-phaser_7700gx" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7750B" driver="xerox-phaser_7750b" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7750DN" driver="xerox-phaser_7750dn" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7750DXF" driver="xerox-phaser_7750dxf" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7750GX" driver="xerox-phaser_7750gx" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7760DN" driver="xerox-phaser_7760dn" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7760DX" driver="xerox-phaser_7760dx" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 7760GX" driver="xerox-phaser_7760gx" manufacturer="Xerox" model="63" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 8400B" driver="xerox-phaser_8400b" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 8400BD" driver="xerox-phaser_8400bd" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 8400DP" driver="xerox-phaser_8400dp" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 8400DX" driver="xerox-phaser_8400dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 8400N" driver="xerox-phaser_8400n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 8500DN" driver="xerox-phaser_8500dn" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 8500N" driver="xerox-phaser_8500n" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 8550DP" driver="xerox-phaser_8550dp" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 8550DT" driver="xerox-phaser_8550dt" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 8550DX" driver="xerox-phaser_8550dx" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 8560DN" driver="xerox-phaser_8560dn" manufacturer="Xerox" model="6" parameters="pcl_laser_params" /> + <printer translate="name" name="Xerox Phaser 8860" driver="xerox-phaser_8860" manufacturer="Xerox" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Xerox WorkCentre 7345" driver="xerox-workcentre_7345" manufacturer="Xerox" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Xerox WorkCentre C2424" driver="xerox-workcentre_c2424" manufacturer="Xerox" model="50001" parameters="pcl_laser_params">EXPERIMENTAL</printer> + <printer translate="name" name="Xerox WorkCentre M118" deviceid="MFG:XEROX;MDL:WorkCentre M118;DES:XEROX WorkCentre M118;" driver="xerox-wc_m118" manufacturer="Xerox" model="61" parameters="pcl_laser_params" /> + </family> + </printdef> +</gutenprint> diff --git a/src/xml/printers/ps.xml b/src/xml/printers/ps.xml new file mode 100644 index 0000000..52b58e2 --- /dev/null +++ b/src/xml/printers/ps.xml @@ -0,0 +1,51 @@ +<?xml version="1.0"?> + +<!-- + + XML description of printers known to libgutenprint + You can add additional printers here, but the underlying driver has + to know about the model number. You can have different printers + with the same model number but different parameters; this means + printers that are functionally identical but have different ink + characteristics. + + Each printer must have a unique driver name (even if the underlying + driver is identical) to allow a unique mapping between driver + name and printer name (the mapping is done both ways). + + NOTE TO TRANSLATORS: Printer names should not be translated into + their equivalents (the same printer sold under a different name) + in other countries. The correct way to handle this is to add + another printer to this list. Translations should be done for + e. g. character sets. + + For example, a Japanese printer will have the same model name wherever + it is used and with whatever language the user speaks. +--> + +<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, see https://www.gnu.org/licenses/. +</copyright> + <printdef> + <family name="ps"> + <printer translate="name" name="PostScript Level 1" driver="ps" manufacturer="Adobe" model="0" /> + <printer translate="name" name="PostScript Level 2" driver="ps2" manufacturer="Adobe" model="1" /> + </family> + </printdef> +</gutenprint> diff --git a/src/xml/printers/raw.xml b/src/xml/printers/raw.xml new file mode 100644 index 0000000..914fb81 --- /dev/null +++ b/src/xml/printers/raw.xml @@ -0,0 +1,51 @@ +<?xml version="1.0"?> + +<!-- + + XML description of printers known to libgutenprint + You can add additional printers here, but the underlying driver has + to know about the model number. You can have different printers + with the same model number but different parameters; this means + printers that are functionally identical but have different ink + characteristics. + + Each printer must have a unique driver name (even if the underlying + driver is identical) to allow a unique mapping between driver + name and printer name (the mapping is done both ways). + + NOTE TO TRANSLATORS: Printer names should not be translated into + their equivalents (the same printer sold under a different name) + in other countries. The correct way to handle this is to add + another printer to this list. Translations should be done for + e. g. character sets. + + For example, a Japanese printer will have the same model name wherever + it is used and with whatever language the user speaks. +--> + +<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, see https://www.gnu.org/licenses/. +</copyright> + <printdef> + <family name="raw"> + <printer translate="name" name="RAW DATA 16 bit" driver="raw-data-16" manufacturer="" model="0" /> + <printer translate="name" name="RAW DATA 8 bit" driver="raw-data-8" manufacturer="" model="1" /> + </family> + </printdef> +</gutenprint> diff --git a/src/xml/xmli18n-tmp.h b/src/xml/xmli18n-tmp.h new file mode 100644 index 0000000..cb4c297 --- /dev/null +++ b/src/xml/xmli18n-tmp.h @@ -0,0 +1,6684 @@ +N_("EPSON Standard Inks"); /* ./escp2/inks/artisan.xml */ +N_("Six Color Photo"); /* ./escp2/inks/artisan.xml */ +N_("Black"); /* ./escp2/inks/artisan.xml */ +N_("Cyan"); /* ./escp2/inks/artisan.xml */ +N_("Light Cyan"); /* ./escp2/inks/artisan.xml */ +N_("Magenta"); /* ./escp2/inks/artisan.xml */ +N_("Light Magenta"); /* ./escp2/inks/artisan.xml */ +N_("Yellow"); /* ./escp2/inks/artisan.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/artisan.xml */ +N_("Four Color Standard"); /* ./escp2/inks/artisan.xml */ +N_("Three Color Composite"); /* ./escp2/inks/artisan.xml */ +N_("One Color Raw"); /* ./escp2/inks/artisan.xml */ +N_("Three Color Raw"); /* ./escp2/inks/artisan.xml */ +N_("Four Color Raw"); /* ./escp2/inks/artisan.xml */ +N_("Five Color Raw"); /* ./escp2/inks/artisan.xml */ +N_("Six Color Raw"); /* ./escp2/inks/artisan.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/b500.xml */ +N_("Four Color Standard"); /* ./escp2/inks/b500.xml */ +N_("Black"); /* ./escp2/inks/b500.xml */ +N_("Cyan"); /* ./escp2/inks/b500.xml */ +N_("Magenta"); /* ./escp2/inks/b500.xml */ +N_("Yellow"); /* ./escp2/inks/b500.xml */ +N_("Three Color Composite"); /* ./escp2/inks/b500.xml */ +N_("One Color Raw"); /* ./escp2/inks/b500.xml */ +N_("Three Color Raw"); /* ./escp2/inks/b500.xml */ +N_("Four Color Raw"); /* ./escp2/inks/b500.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/c120.xml */ +N_("Four Color Standard"); /* ./escp2/inks/c120.xml */ +N_("Black"); /* ./escp2/inks/c120.xml */ +N_("Cyan"); /* ./escp2/inks/c120.xml */ +N_("Magenta"); /* ./escp2/inks/c120.xml */ +N_("Yellow"); /* ./escp2/inks/c120.xml */ +N_("Three Color Composite"); /* ./escp2/inks/c120.xml */ +N_("One Color Raw"); /* ./escp2/inks/c120.xml */ +N_("Three Color Raw"); /* ./escp2/inks/c120.xml */ +N_("Four Color Raw"); /* ./escp2/inks/c120.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/c64.xml */ +N_("Four Color Standard"); /* ./escp2/inks/c64.xml */ +N_("Black"); /* ./escp2/inks/c64.xml */ +N_("Cyan"); /* ./escp2/inks/c64.xml */ +N_("Magenta"); /* ./escp2/inks/c64.xml */ +N_("Yellow"); /* ./escp2/inks/c64.xml */ +N_("Three Color Composite"); /* ./escp2/inks/c64.xml */ +N_("One Color Raw"); /* ./escp2/inks/c64.xml */ +N_("Three Color Raw"); /* ./escp2/inks/c64.xml */ +N_("Four Color Raw"); /* ./escp2/inks/c64.xml */ +N_("Quadtone"); /* ./escp2/inks/c64.xml */ +N_("Gray 3"); /* ./escp2/inks/c64.xml */ +N_("Gray 2"); /* ./escp2/inks/c64.xml */ +N_("Gray 1"); /* ./escp2/inks/c64.xml */ +N_("MIS Quadtone"); /* ./escp2/inks/c64.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/c80.xml */ +N_("Four Color Standard"); /* ./escp2/inks/c80.xml */ +N_("Black"); /* ./escp2/inks/c80.xml */ +N_("Cyan"); /* ./escp2/inks/c80.xml */ +N_("Magenta"); /* ./escp2/inks/c80.xml */ +N_("Yellow"); /* ./escp2/inks/c80.xml */ +N_("Three Color Composite"); /* ./escp2/inks/c80.xml */ +N_("One Color Raw"); /* ./escp2/inks/c80.xml */ +N_("Three Color Raw"); /* ./escp2/inks/c80.xml */ +N_("Four Color Raw"); /* ./escp2/inks/c80.xml */ +N_("Quadtone"); /* ./escp2/inks/c80.xml */ +N_("Gray 3"); /* ./escp2/inks/c80.xml */ +N_("Gray 2"); /* ./escp2/inks/c80.xml */ +N_("Gray 1"); /* ./escp2/inks/c80.xml */ +N_("MIS Quadtone"); /* ./escp2/inks/c80.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/c82.xml */ +N_("Four Color Standard"); /* ./escp2/inks/c82.xml */ +N_("Black"); /* ./escp2/inks/c82.xml */ +N_("Cyan"); /* ./escp2/inks/c82.xml */ +N_("Magenta"); /* ./escp2/inks/c82.xml */ +N_("Yellow"); /* ./escp2/inks/c82.xml */ +N_("Three Color Composite"); /* ./escp2/inks/c82.xml */ +N_("One Color Raw"); /* ./escp2/inks/c82.xml */ +N_("Three Color Raw"); /* ./escp2/inks/c82.xml */ +N_("Four Color Raw"); /* ./escp2/inks/c82.xml */ +N_("Quadtone"); /* ./escp2/inks/c82.xml */ +N_("Gray 3"); /* ./escp2/inks/c82.xml */ +N_("Gray 2"); /* ./escp2/inks/c82.xml */ +N_("Gray 1"); /* ./escp2/inks/c82.xml */ +N_("MIS Quadtone"); /* ./escp2/inks/c82.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/claria.xml */ +N_("Six Color Photo"); /* ./escp2/inks/claria.xml */ +N_("Black"); /* ./escp2/inks/claria.xml */ +N_("Cyan"); /* ./escp2/inks/claria.xml */ +N_("Light Cyan"); /* ./escp2/inks/claria.xml */ +N_("Magenta"); /* ./escp2/inks/claria.xml */ +N_("Light Magenta"); /* ./escp2/inks/claria.xml */ +N_("Yellow"); /* ./escp2/inks/claria.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/claria.xml */ +N_("Four Color Standard"); /* ./escp2/inks/claria.xml */ +N_("Three Color Composite"); /* ./escp2/inks/claria.xml */ +N_("One Color Raw"); /* ./escp2/inks/claria.xml */ +N_("Three Color Raw"); /* ./escp2/inks/claria.xml */ +N_("Four Color Raw"); /* ./escp2/inks/claria.xml */ +N_("Five Color Raw"); /* ./escp2/inks/claria.xml */ +N_("Six Color Raw"); /* ./escp2/inks/claria.xml */ +N_("Quadtone"); /* ./escp2/inks/claria.xml */ +N_("Gray 3"); /* ./escp2/inks/claria.xml */ +N_("Gray 2"); /* ./escp2/inks/claria.xml */ +N_("Gray 1"); /* ./escp2/inks/claria.xml */ +N_("MIS Quadtone"); /* ./escp2/inks/claria.xml */ +N_("MIS Six Tone"); /* ./escp2/inks/claria.xml */ +N_("Hextone"); /* ./escp2/inks/claria.xml */ +N_("Gray 5"); /* ./escp2/inks/claria.xml */ +N_("Gray 4"); /* ./escp2/inks/claria.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/claria_xp.xml */ +N_("Six Color Photo"); /* ./escp2/inks/claria_xp.xml */ +N_("Black"); /* ./escp2/inks/claria_xp.xml */ +N_("Light Black"); /* ./escp2/inks/claria_xp.xml */ +N_("Cyan"); /* ./escp2/inks/claria_xp.xml */ +N_("Magenta"); /* ./escp2/inks/claria_xp.xml */ +N_("Yellow"); /* ./escp2/inks/claria_xp.xml */ +N_("Red"); /* ./escp2/inks/claria_xp.xml */ +N_("Five Color Photo"); /* ./escp2/inks/claria_xp.xml */ +N_("Four Color Standard"); /* ./escp2/inks/claria_xp.xml */ +N_("Three Color Composite"); /* ./escp2/inks/claria_xp.xml */ +N_("Six Color Raw"); /* ./escp2/inks/claria_xp.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/cmy.xml */ +N_("Three Color Composite"); /* ./escp2/inks/cmy.xml */ +N_("Cyan"); /* ./escp2/inks/cmy.xml */ +N_("Magenta"); /* ./escp2/inks/cmy.xml */ +N_("Yellow"); /* ./escp2/inks/cmy.xml */ +N_("Photo Black"); /* ./escp2/inks/cmykrb.xml */ +N_("Six Color Photo"); /* ./escp2/inks/cmykrb.xml */ +N_("Black"); /* ./escp2/inks/cmykrb.xml */ +N_("Cyan"); /* ./escp2/inks/cmykrb.xml */ +N_("Magenta"); /* ./escp2/inks/cmykrb.xml */ +N_("Yellow"); /* ./escp2/inks/cmykrb.xml */ +N_("Red"); /* ./escp2/inks/cmykrb.xml */ +N_("Blue"); /* ./escp2/inks/cmykrb.xml */ +N_("Gloss Optimizer"); /* ./escp2/inks/cmykrb.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/cmykrb.xml */ +N_("Four Color Standard"); /* ./escp2/inks/cmykrb.xml */ +N_("Three Color Composite"); /* ./escp2/inks/cmykrb.xml */ +N_("One Color Raw"); /* ./escp2/inks/cmykrb.xml */ +N_("One Color Raw Enhanced Gloss"); /* ./escp2/inks/cmykrb.xml */ +N_("Three Color Raw"); /* ./escp2/inks/cmykrb.xml */ +N_("Three Color Raw Gloss"); /* ./escp2/inks/cmykrb.xml */ +N_("Four Color Raw Gloss"); /* ./escp2/inks/cmykrb.xml */ +N_("Six Color Enhanced Gloss Raw"); /* ./escp2/inks/cmykrb.xml */ +N_("Seven Color Enhanced Gloss Raw"); /* ./escp2/inks/cmykrb.xml */ +N_("Matte Black"); /* ./escp2/inks/cmykrb.xml */ +N_("Four Color Raw"); /* ./escp2/inks/cmykrb.xml */ +N_("Six Color Raw"); /* ./escp2/inks/cmykrb.xml */ +N_("Photo Black"); /* ./escp2/inks/cmykro.xml */ +N_("Six Color Photo"); /* ./escp2/inks/cmykro.xml */ +N_("Black"); /* ./escp2/inks/cmykro.xml */ +N_("Cyan"); /* ./escp2/inks/cmykro.xml */ +N_("Magenta"); /* ./escp2/inks/cmykro.xml */ +N_("Yellow"); /* ./escp2/inks/cmykro.xml */ +N_("Red"); /* ./escp2/inks/cmykro.xml */ +N_("Orange"); /* ./escp2/inks/cmykro.xml */ +N_("Gloss Optimizer"); /* ./escp2/inks/cmykro.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/cmykro.xml */ +N_("Four Color Standard"); /* ./escp2/inks/cmykro.xml */ +N_("Three Color Composite"); /* ./escp2/inks/cmykro.xml */ +N_("One Color Raw"); /* ./escp2/inks/cmykro.xml */ +N_("One Color Raw Enhanced Gloss"); /* ./escp2/inks/cmykro.xml */ +N_("Three Color Raw"); /* ./escp2/inks/cmykro.xml */ +N_("Three Color Raw Gloss"); /* ./escp2/inks/cmykro.xml */ +N_("Four Color Raw Gloss"); /* ./escp2/inks/cmykro.xml */ +N_("Six Color Enhanced Gloss Raw"); /* ./escp2/inks/cmykro.xml */ +N_("Seven Color Enhanced Gloss Raw"); /* ./escp2/inks/cmykro.xml */ +N_("MatteBlack"); /* ./escp2/inks/cmykro.xml */ +N_("Matte Black"); /* ./escp2/inks/cmykro.xml */ +N_("Four Color Raw"); /* ./escp2/inks/cmykro.xml */ +N_("Six Color Raw"); /* ./escp2/inks/cmykro.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/cx3650.xml */ +N_("Four Color Standard"); /* ./escp2/inks/cx3650.xml */ +N_("Black"); /* ./escp2/inks/cx3650.xml */ +N_("Cyan"); /* ./escp2/inks/cx3650.xml */ +N_("Magenta"); /* ./escp2/inks/cx3650.xml */ +N_("Yellow"); /* ./escp2/inks/cx3650.xml */ +N_("Three Color Composite"); /* ./escp2/inks/cx3650.xml */ +N_("One Color Raw"); /* ./escp2/inks/cx3650.xml */ +N_("Three Color Raw"); /* ./escp2/inks/cx3650.xml */ +N_("Four Color Raw"); /* ./escp2/inks/cx3650.xml */ +N_("Quadtone"); /* ./escp2/inks/cx3650.xml */ +N_("Gray 3"); /* ./escp2/inks/cx3650.xml */ +N_("Gray 2"); /* ./escp2/inks/cx3650.xml */ +N_("Gray 1"); /* ./escp2/inks/cx3650.xml */ +N_("MIS Quadtone"); /* ./escp2/inks/cx3650.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/defaultblack.xml */ +N_("Default Black"); /* ./escp2/inks/defaultblack.xml */ +N_("Black"); /* ./escp2/inks/defaultblack.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/f360.xml */ +N_("Four Color Standard"); /* ./escp2/inks/f360.xml */ +N_("Black"); /* ./escp2/inks/f360.xml */ +N_("Cyan"); /* ./escp2/inks/f360.xml */ +N_("Magenta"); /* ./escp2/inks/f360.xml */ +N_("Yellow"); /* ./escp2/inks/f360.xml */ +N_("Three Color Composite"); /* ./escp2/inks/f360.xml */ +N_("One Color Raw"); /* ./escp2/inks/f360.xml */ +N_("Three Color Raw"); /* ./escp2/inks/f360.xml */ +N_("Four Color Raw"); /* ./escp2/inks/f360.xml */ +N_("Quadtone"); /* ./escp2/inks/f360.xml */ +N_("Gray 3"); /* ./escp2/inks/f360.xml */ +N_("Gray 2"); /* ./escp2/inks/f360.xml */ +N_("Gray 1"); /* ./escp2/inks/f360.xml */ +N_("MIS Quadtone"); /* ./escp2/inks/f360.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/f360_photo.xml */ +N_("Six Color Photo"); /* ./escp2/inks/f360_photo.xml */ +N_("Black"); /* ./escp2/inks/f360_photo.xml */ +N_("Cyan"); /* ./escp2/inks/f360_photo.xml */ +N_("Light Cyan"); /* ./escp2/inks/f360_photo.xml */ +N_("Magenta"); /* ./escp2/inks/f360_photo.xml */ +N_("Light Magenta"); /* ./escp2/inks/f360_photo.xml */ +N_("Yellow"); /* ./escp2/inks/f360_photo.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/f360_photo.xml */ +N_("Four Color Standard"); /* ./escp2/inks/f360_photo.xml */ +N_("Three Color Composite"); /* ./escp2/inks/f360_photo.xml */ +N_("One Color Raw"); /* ./escp2/inks/f360_photo.xml */ +N_("Three Color Raw"); /* ./escp2/inks/f360_photo.xml */ +N_("Four Color Raw"); /* ./escp2/inks/f360_photo.xml */ +N_("Five Color Raw"); /* ./escp2/inks/f360_photo.xml */ +N_("Six Color Raw"); /* ./escp2/inks/f360_photo.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Seven Color Photo"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Black"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Cyan"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Light Cyan"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Magenta"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Light Magenta"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Dark Yellow"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Yellow"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Six Color Enhanced Composite"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Six Color Photo"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Four Color Standard"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Three Color Composite"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("One Color Raw"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Three Color Raw"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Four Color Raw"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Five Color Raw"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Six Color Raw"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("Seven Color Raw"); /* ./escp2/inks/f360_photo7_japan.xml */ +N_("UltraChrome Photo Black"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Seven Color Photo"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Black"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Light Black"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Cyan"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Light Cyan"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Magenta"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Light Magenta"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Yellow"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Six Color Photo"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Four Color Standard"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Three Color Composite"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Two Level Grayscale"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("One Color Raw"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Two Color Raw"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Three Color Raw"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Four Color Raw"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Five Color Raw"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Six Color Raw"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Seven Color Raw"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("UltraChrome Matte Black"); /* ./escp2/inks/f360_ultrachrome.xml */ +N_("Photo Black"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Eight Color Photo"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Black"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Light Black"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Light Light Black"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Cyan"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Light Cyan"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Magenta"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Light Magenta"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Yellow"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Seven Color Photo"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Six Color Photo"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Four Color Standard"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Three Color Composite"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Eight Color Raw"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Matte Black"); /* ./escp2/inks/f360_ultrachrome_k3.xml */ +N_("Photo Black"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Eight Color Photo"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Black"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Light Black"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Light Light Black"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Cyan"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Light Cyan"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Magenta"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Light Magenta"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Yellow"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Seven Color Photo"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Six Color Photo"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Four Color Standard"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Three Color Composite"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Eight Color Raw"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Matte Black"); /* ./escp2/inks/f360_ultrachrome_k3v.xml */ +N_("Photo Black"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Eight Color Photo"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Black"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Light Black"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Light Light Black"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Cyan"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Light Cyan"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Magenta"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Light Magenta"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Yellow"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Seven Color Photo"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Six Color Photo"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Four Color Standard"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Three Color Composite"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Eight Color Raw"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("Matte Black"); /* ./escp2/inks/f360_ultrachrome_k3v_2.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/nx100.xml */ +N_("Four Color Standard"); /* ./escp2/inks/nx100.xml */ +N_("Black"); /* ./escp2/inks/nx100.xml */ +N_("Cyan"); /* ./escp2/inks/nx100.xml */ +N_("Magenta"); /* ./escp2/inks/nx100.xml */ +N_("Yellow"); /* ./escp2/inks/nx100.xml */ +N_("Three Color Composite"); /* ./escp2/inks/nx100.xml */ +N_("One Color Raw"); /* ./escp2/inks/nx100.xml */ +N_("Three Color Raw"); /* ./escp2/inks/nx100.xml */ +N_("Four Color Raw"); /* ./escp2/inks/nx100.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/photo_gen0.xml */ +N_("Six Color Photo"); /* ./escp2/inks/photo_gen0.xml */ +N_("Black"); /* ./escp2/inks/photo_gen0.xml */ +N_("Cyan"); /* ./escp2/inks/photo_gen0.xml */ +N_("Light Cyan"); /* ./escp2/inks/photo_gen0.xml */ +N_("Magenta"); /* ./escp2/inks/photo_gen0.xml */ +N_("Light Magenta"); /* ./escp2/inks/photo_gen0.xml */ +N_("Yellow"); /* ./escp2/inks/photo_gen0.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/photo_gen0.xml */ +N_("Four Color Standard"); /* ./escp2/inks/photo_gen0.xml */ +N_("Three Color Composite"); /* ./escp2/inks/photo_gen0.xml */ +N_("One Color Raw"); /* ./escp2/inks/photo_gen0.xml */ +N_("Three Color Raw"); /* ./escp2/inks/photo_gen0.xml */ +N_("Four Color Raw"); /* ./escp2/inks/photo_gen0.xml */ +N_("Five Color Raw"); /* ./escp2/inks/photo_gen0.xml */ +N_("Six Color Raw"); /* ./escp2/inks/photo_gen0.xml */ +N_("Quadtone"); /* ./escp2/inks/photo_gen0.xml */ +N_("Gray 3"); /* ./escp2/inks/photo_gen0.xml */ +N_("Gray 2"); /* ./escp2/inks/photo_gen0.xml */ +N_("Gray 1"); /* ./escp2/inks/photo_gen0.xml */ +N_("MIS Quadtone"); /* ./escp2/inks/photo_gen0.xml */ +N_("MIS Six Tone"); /* ./escp2/inks/photo_gen0.xml */ +N_("Hextone"); /* ./escp2/inks/photo_gen0.xml */ +N_("Gray 5"); /* ./escp2/inks/photo_gen0.xml */ +N_("Gray 4"); /* ./escp2/inks/photo_gen0.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/photo_gen1.xml */ +N_("Six Color Photo"); /* ./escp2/inks/photo_gen1.xml */ +N_("Black"); /* ./escp2/inks/photo_gen1.xml */ +N_("Cyan"); /* ./escp2/inks/photo_gen1.xml */ +N_("Light Cyan"); /* ./escp2/inks/photo_gen1.xml */ +N_("Magenta"); /* ./escp2/inks/photo_gen1.xml */ +N_("Light Magenta"); /* ./escp2/inks/photo_gen1.xml */ +N_("Yellow"); /* ./escp2/inks/photo_gen1.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/photo_gen1.xml */ +N_("Four Color Standard"); /* ./escp2/inks/photo_gen1.xml */ +N_("Three Color Composite"); /* ./escp2/inks/photo_gen1.xml */ +N_("One Color Raw"); /* ./escp2/inks/photo_gen1.xml */ +N_("Three Color Raw"); /* ./escp2/inks/photo_gen1.xml */ +N_("Four Color Raw"); /* ./escp2/inks/photo_gen1.xml */ +N_("Five Color Raw"); /* ./escp2/inks/photo_gen1.xml */ +N_("Six Color Raw"); /* ./escp2/inks/photo_gen1.xml */ +N_("Quadtone"); /* ./escp2/inks/photo_gen1.xml */ +N_("Gray 3"); /* ./escp2/inks/photo_gen1.xml */ +N_("Gray 2"); /* ./escp2/inks/photo_gen1.xml */ +N_("Gray 1"); /* ./escp2/inks/photo_gen1.xml */ +N_("MIS Quadtone"); /* ./escp2/inks/photo_gen1.xml */ +N_("MIS Six Tone"); /* ./escp2/inks/photo_gen1.xml */ +N_("Hextone"); /* ./escp2/inks/photo_gen1.xml */ +N_("Gray 5"); /* ./escp2/inks/photo_gen1.xml */ +N_("Gray 4"); /* ./escp2/inks/photo_gen1.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/photo_gen2.xml */ +N_("Six Color Photo"); /* ./escp2/inks/photo_gen2.xml */ +N_("Black"); /* ./escp2/inks/photo_gen2.xml */ +N_("Cyan"); /* ./escp2/inks/photo_gen2.xml */ +N_("Light Cyan"); /* ./escp2/inks/photo_gen2.xml */ +N_("Magenta"); /* ./escp2/inks/photo_gen2.xml */ +N_("Light Magenta"); /* ./escp2/inks/photo_gen2.xml */ +N_("Yellow"); /* ./escp2/inks/photo_gen2.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/photo_gen2.xml */ +N_("Four Color Standard"); /* ./escp2/inks/photo_gen2.xml */ +N_("Three Color Composite"); /* ./escp2/inks/photo_gen2.xml */ +N_("One Color Raw"); /* ./escp2/inks/photo_gen2.xml */ +N_("Three Color Raw"); /* ./escp2/inks/photo_gen2.xml */ +N_("Four Color Raw"); /* ./escp2/inks/photo_gen2.xml */ +N_("Five Color Raw"); /* ./escp2/inks/photo_gen2.xml */ +N_("Six Color Raw"); /* ./escp2/inks/photo_gen2.xml */ +N_("Quadtone"); /* ./escp2/inks/photo_gen2.xml */ +N_("Gray 3"); /* ./escp2/inks/photo_gen2.xml */ +N_("Gray 2"); /* ./escp2/inks/photo_gen2.xml */ +N_("Gray 1"); /* ./escp2/inks/photo_gen2.xml */ +N_("MIS Quadtone"); /* ./escp2/inks/photo_gen2.xml */ +N_("MIS Six Tone"); /* ./escp2/inks/photo_gen2.xml */ +N_("Hextone"); /* ./escp2/inks/photo_gen2.xml */ +N_("Gray 5"); /* ./escp2/inks/photo_gen2.xml */ +N_("Gray 4"); /* ./escp2/inks/photo_gen2.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/photo_gen3.xml */ +N_("Six Color Photo"); /* ./escp2/inks/photo_gen3.xml */ +N_("Black"); /* ./escp2/inks/photo_gen3.xml */ +N_("Cyan"); /* ./escp2/inks/photo_gen3.xml */ +N_("Light Cyan"); /* ./escp2/inks/photo_gen3.xml */ +N_("Magenta"); /* ./escp2/inks/photo_gen3.xml */ +N_("Light Magenta"); /* ./escp2/inks/photo_gen3.xml */ +N_("Yellow"); /* ./escp2/inks/photo_gen3.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/photo_gen3.xml */ +N_("Four Color Standard"); /* ./escp2/inks/photo_gen3.xml */ +N_("Three Color Composite"); /* ./escp2/inks/photo_gen3.xml */ +N_("One Color Raw"); /* ./escp2/inks/photo_gen3.xml */ +N_("Three Color Raw"); /* ./escp2/inks/photo_gen3.xml */ +N_("Four Color Raw"); /* ./escp2/inks/photo_gen3.xml */ +N_("Five Color Raw"); /* ./escp2/inks/photo_gen3.xml */ +N_("Six Color Raw"); /* ./escp2/inks/photo_gen3.xml */ +N_("Quadtone"); /* ./escp2/inks/photo_gen3.xml */ +N_("Gray 3"); /* ./escp2/inks/photo_gen3.xml */ +N_("Gray 2"); /* ./escp2/inks/photo_gen3.xml */ +N_("Gray 1"); /* ./escp2/inks/photo_gen3.xml */ +N_("MIS Quadtone"); /* ./escp2/inks/photo_gen3.xml */ +N_("MIS Six Tone"); /* ./escp2/inks/photo_gen3.xml */ +N_("Hextone"); /* ./escp2/inks/photo_gen3.xml */ +N_("Gray 5"); /* ./escp2/inks/photo_gen3.xml */ +N_("Gray 4"); /* ./escp2/inks/photo_gen3.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/photo_gen3_4.xml */ +N_("Four Color Standard"); /* ./escp2/inks/photo_gen3_4.xml */ +N_("Black"); /* ./escp2/inks/photo_gen3_4.xml */ +N_("Cyan"); /* ./escp2/inks/photo_gen3_4.xml */ +N_("Magenta"); /* ./escp2/inks/photo_gen3_4.xml */ +N_("Yellow"); /* ./escp2/inks/photo_gen3_4.xml */ +N_("Three Color Composite"); /* ./escp2/inks/photo_gen3_4.xml */ +N_("One Color Raw"); /* ./escp2/inks/photo_gen3_4.xml */ +N_("Three Color Raw"); /* ./escp2/inks/photo_gen3_4.xml */ +N_("Four Color Raw"); /* ./escp2/inks/photo_gen3_4.xml */ +N_("Quadtone"); /* ./escp2/inks/photo_gen3_4.xml */ +N_("Gray 3"); /* ./escp2/inks/photo_gen3_4.xml */ +N_("Gray 2"); /* ./escp2/inks/photo_gen3_4.xml */ +N_("Gray 1"); /* ./escp2/inks/photo_gen3_4.xml */ +N_("MIS Quadtone"); /* ./escp2/inks/photo_gen3_4.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/photo_gen4.xml */ +N_("Six Color Photo"); /* ./escp2/inks/photo_gen4.xml */ +N_("Black"); /* ./escp2/inks/photo_gen4.xml */ +N_("Cyan"); /* ./escp2/inks/photo_gen4.xml */ +N_("Light Cyan"); /* ./escp2/inks/photo_gen4.xml */ +N_("Magenta"); /* ./escp2/inks/photo_gen4.xml */ +N_("Light Magenta"); /* ./escp2/inks/photo_gen4.xml */ +N_("Yellow"); /* ./escp2/inks/photo_gen4.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/photo_gen4.xml */ +N_("Four Color Standard"); /* ./escp2/inks/photo_gen4.xml */ +N_("Three Color Composite"); /* ./escp2/inks/photo_gen4.xml */ +N_("One Color Raw"); /* ./escp2/inks/photo_gen4.xml */ +N_("Three Color Raw"); /* ./escp2/inks/photo_gen4.xml */ +N_("Four Color Raw"); /* ./escp2/inks/photo_gen4.xml */ +N_("Five Color Raw"); /* ./escp2/inks/photo_gen4.xml */ +N_("Six Color Raw"); /* ./escp2/inks/photo_gen4.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/photo_pigment.xml */ +N_("Six Color Photo"); /* ./escp2/inks/photo_pigment.xml */ +N_("Black"); /* ./escp2/inks/photo_pigment.xml */ +N_("Cyan"); /* ./escp2/inks/photo_pigment.xml */ +N_("Light Cyan"); /* ./escp2/inks/photo_pigment.xml */ +N_("Magenta"); /* ./escp2/inks/photo_pigment.xml */ +N_("Light Magenta"); /* ./escp2/inks/photo_pigment.xml */ +N_("Yellow"); /* ./escp2/inks/photo_pigment.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/photo_pigment.xml */ +N_("Four Color Standard"); /* ./escp2/inks/photo_pigment.xml */ +N_("Three Color Composite"); /* ./escp2/inks/photo_pigment.xml */ +N_("One Color Raw"); /* ./escp2/inks/photo_pigment.xml */ +N_("Three Color Raw"); /* ./escp2/inks/photo_pigment.xml */ +N_("Four Color Raw"); /* ./escp2/inks/photo_pigment.xml */ +N_("Five Color Raw"); /* ./escp2/inks/photo_pigment.xml */ +N_("Six Color Raw"); /* ./escp2/inks/photo_pigment.xml */ +N_("Standard"); /* ./escp2/inks/picturemate_4.xml */ +N_("Four Color Photo"); /* ./escp2/inks/picturemate_4.xml */ +N_("Black"); /* ./escp2/inks/picturemate_4.xml */ +N_("Cyan"); /* ./escp2/inks/picturemate_4.xml */ +N_("Magenta"); /* ./escp2/inks/picturemate_4.xml */ +N_("Yellow"); /* ./escp2/inks/picturemate_4.xml */ +N_("Four Color Raw"); /* ./escp2/inks/picturemate_4.xml */ +N_("Standard"); /* ./escp2/inks/picturemate_6.xml */ +N_("Six Color Photo"); /* ./escp2/inks/picturemate_6.xml */ +N_("Black"); /* ./escp2/inks/picturemate_6.xml */ +N_("Cyan"); /* ./escp2/inks/picturemate_6.xml */ +N_("Magenta"); /* ./escp2/inks/picturemate_6.xml */ +N_("Yellow"); /* ./escp2/inks/picturemate_6.xml */ +N_("Red"); /* ./escp2/inks/picturemate_6.xml */ +N_("Blue"); /* ./escp2/inks/picturemate_6.xml */ +N_("Four Color Photo"); /* ./escp2/inks/picturemate_6.xml */ +N_("Six Color Raw"); /* ./escp2/inks/picturemate_6.xml */ +N_("Four Color Raw"); /* ./escp2/inks/picturemate_6.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/pro_gen1.xml */ +N_("Six Color Photo"); /* ./escp2/inks/pro_gen1.xml */ +N_("Black"); /* ./escp2/inks/pro_gen1.xml */ +N_("Cyan"); /* ./escp2/inks/pro_gen1.xml */ +N_("Light Cyan"); /* ./escp2/inks/pro_gen1.xml */ +N_("Magenta"); /* ./escp2/inks/pro_gen1.xml */ +N_("Light Magenta"); /* ./escp2/inks/pro_gen1.xml */ +N_("Yellow"); /* ./escp2/inks/pro_gen1.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/pro_gen1.xml */ +N_("Four Color Standard"); /* ./escp2/inks/pro_gen1.xml */ +N_("Three Color Composite"); /* ./escp2/inks/pro_gen1.xml */ +N_("One Color Raw"); /* ./escp2/inks/pro_gen1.xml */ +N_("Three Color Raw"); /* ./escp2/inks/pro_gen1.xml */ +N_("Four Color Raw"); /* ./escp2/inks/pro_gen1.xml */ +N_("Five Color Raw"); /* ./escp2/inks/pro_gen1.xml */ +N_("Six Color Raw"); /* ./escp2/inks/pro_gen1.xml */ +N_("Quadtone"); /* ./escp2/inks/pro_gen1.xml */ +N_("Gray 3"); /* ./escp2/inks/pro_gen1.xml */ +N_("Gray 2"); /* ./escp2/inks/pro_gen1.xml */ +N_("Gray 1"); /* ./escp2/inks/pro_gen1.xml */ +N_("MIS Quadtone"); /* ./escp2/inks/pro_gen1.xml */ +N_("MIS Six Tone"); /* ./escp2/inks/pro_gen1.xml */ +N_("Hextone"); /* ./escp2/inks/pro_gen1.xml */ +N_("Gray 5"); /* ./escp2/inks/pro_gen1.xml */ +N_("Gray 4"); /* ./escp2/inks/pro_gen1.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/pro_gen2.xml */ +N_("Six Color Photo"); /* ./escp2/inks/pro_gen2.xml */ +N_("Black"); /* ./escp2/inks/pro_gen2.xml */ +N_("Cyan"); /* ./escp2/inks/pro_gen2.xml */ +N_("Light Cyan"); /* ./escp2/inks/pro_gen2.xml */ +N_("Magenta"); /* ./escp2/inks/pro_gen2.xml */ +N_("Light Magenta"); /* ./escp2/inks/pro_gen2.xml */ +N_("Yellow"); /* ./escp2/inks/pro_gen2.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/pro_gen2.xml */ +N_("Four Color Standard"); /* ./escp2/inks/pro_gen2.xml */ +N_("Three Color Composite"); /* ./escp2/inks/pro_gen2.xml */ +N_("One Color Raw"); /* ./escp2/inks/pro_gen2.xml */ +N_("Three Color Raw"); /* ./escp2/inks/pro_gen2.xml */ +N_("Four Color Raw"); /* ./escp2/inks/pro_gen2.xml */ +N_("Five Color Raw"); /* ./escp2/inks/pro_gen2.xml */ +N_("Six Color Raw"); /* ./escp2/inks/pro_gen2.xml */ +N_("Quadtone"); /* ./escp2/inks/pro_gen2.xml */ +N_("Gray 3"); /* ./escp2/inks/pro_gen2.xml */ +N_("Gray 2"); /* ./escp2/inks/pro_gen2.xml */ +N_("Gray 1"); /* ./escp2/inks/pro_gen2.xml */ +N_("MIS Quadtone"); /* ./escp2/inks/pro_gen2.xml */ +N_("MIS Six Tone"); /* ./escp2/inks/pro_gen2.xml */ +N_("Hextone"); /* ./escp2/inks/pro_gen2.xml */ +N_("Gray 5"); /* ./escp2/inks/pro_gen2.xml */ +N_("Gray 4"); /* ./escp2/inks/pro_gen2.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/pro_pigment.xml */ +N_("Six Color Photo"); /* ./escp2/inks/pro_pigment.xml */ +N_("Black"); /* ./escp2/inks/pro_pigment.xml */ +N_("Cyan"); /* ./escp2/inks/pro_pigment.xml */ +N_("Light Cyan"); /* ./escp2/inks/pro_pigment.xml */ +N_("Magenta"); /* ./escp2/inks/pro_pigment.xml */ +N_("Light Magenta"); /* ./escp2/inks/pro_pigment.xml */ +N_("Yellow"); /* ./escp2/inks/pro_pigment.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/pro_pigment.xml */ +N_("Four Color Standard"); /* ./escp2/inks/pro_pigment.xml */ +N_("Three Color Composite"); /* ./escp2/inks/pro_pigment.xml */ +N_("One Color Raw"); /* ./escp2/inks/pro_pigment.xml */ +N_("Three Color Raw"); /* ./escp2/inks/pro_pigment.xml */ +N_("Four Color Raw"); /* ./escp2/inks/pro_pigment.xml */ +N_("Five Color Raw"); /* ./escp2/inks/pro_pigment.xml */ +N_("Six Color Raw"); /* ./escp2/inks/pro_pigment.xml */ +N_("UltraChrome Photo Black"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Seven Color Photo"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Black"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Light Black"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Cyan"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Light Cyan"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Magenta"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Light Magenta"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Yellow"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Six Color Photo"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Four Color Standard"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Three Color Composite"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Two Level Grayscale"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("One Color Raw"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Two Color Raw"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Three Color Raw"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Four Color Raw"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Five Color Raw"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Six Color Raw"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Seven Color Raw"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("UltraChrome Matte Black"); /* ./escp2/inks/pro_ultrachrome.xml */ +N_("Photo Black"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Eight Color Photo"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Black"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Light Black"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Light Light Black"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Cyan"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Light Cyan"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Magenta"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Light Magenta"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Yellow"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Seven Color Photo"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Six Color Photo"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Four Color Standard"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Three Color Composite"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Eight Color Raw"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Matte Black"); /* ./escp2/inks/pro_ultrachrome_k3.xml */ +N_("Photo Black"); /* ./escp2/inks/pro_ultrachrome_k34.xml */ +N_("Four Color Standard"); /* ./escp2/inks/pro_ultrachrome_k34.xml */ +N_("Black"); /* ./escp2/inks/pro_ultrachrome_k34.xml */ +N_("Cyan"); /* ./escp2/inks/pro_ultrachrome_k34.xml */ +N_("Magenta"); /* ./escp2/inks/pro_ultrachrome_k34.xml */ +N_("Yellow"); /* ./escp2/inks/pro_ultrachrome_k34.xml */ +N_("Three Color Composite"); /* ./escp2/inks/pro_ultrachrome_k34.xml */ +N_("Four Color Raw"); /* ./escp2/inks/pro_ultrachrome_k34.xml */ +N_("Matte Black"); /* ./escp2/inks/pro_ultrachrome_k34.xml */ +N_("Photo Black"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Eight Color Photo"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Black"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Light Black"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Light Light Black"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Cyan"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Light Cyan"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Magenta"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Light Magenta"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Yellow"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Seven Color Photo"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Six Color Photo"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Four Color Standard"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Three Color Composite"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Eight Color Raw"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Matte Black"); /* ./escp2/inks/pro_ultrachrome_k3v.xml */ +N_("Photo Black"); /* ./escp2/inks/pro_ultrachrome_k3v4.xml */ +N_("Four Color Standard"); /* ./escp2/inks/pro_ultrachrome_k3v4.xml */ +N_("Black"); /* ./escp2/inks/pro_ultrachrome_k3v4.xml */ +N_("Cyan"); /* ./escp2/inks/pro_ultrachrome_k3v4.xml */ +N_("Magenta"); /* ./escp2/inks/pro_ultrachrome_k3v4.xml */ +N_("Yellow"); /* ./escp2/inks/pro_ultrachrome_k3v4.xml */ +N_("Three Color Composite"); /* ./escp2/inks/pro_ultrachrome_k3v4.xml */ +N_("Four Color Raw"); /* ./escp2/inks/pro_ultrachrome_k3v4.xml */ +N_("Matte Black"); /* ./escp2/inks/pro_ultrachrome_k3v4.xml */ +N_("Photo Black"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Eight Color Photo"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Black"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Light Black"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Light Light Black"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Cyan"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Light Cyan"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Magenta"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Light Magenta"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Yellow"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Seven Color Photo"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Six Color Photo"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Four Color Standard"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Three Color Composite"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Eight Color Raw"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Ten Color Raw"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Orange"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Green"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Matte Black"); /* ./escp2/inks/pro_ultrachrome_k3v10.xml */ +N_("Photo Black"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Eight Color Photo"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Black"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Light Black"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Light Light Black"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Cyan"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Light Cyan"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Magenta"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Light Magenta"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Yellow"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Seven Color Photo"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Six Color Photo"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Four Color Standard"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Three Color Composite"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Eight Color Raw"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Ten Color Raw"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Orange"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Green"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Matte Black"); /* ./escp2/inks/pro_ultrachrome_k3v10a.xml */ +N_("Photo Black"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Seven Color Photo"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Black"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Light Black"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Cyan"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Light Cyan"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Magenta"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Light Magenta"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Yellow"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Six Color Photo"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Four Color Standard"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Three Color Composite"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Eight Color Raw"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Light Light Black"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Ten Color Raw"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Orange"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Green"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("Matte Black"); /* ./escp2/inks/pro_ultrachrome_k3v10b.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/standard.xml */ +N_("Four Color Standard"); /* ./escp2/inks/standard.xml */ +N_("Black"); /* ./escp2/inks/standard.xml */ +N_("Cyan"); /* ./escp2/inks/standard.xml */ +N_("Magenta"); /* ./escp2/inks/standard.xml */ +N_("Yellow"); /* ./escp2/inks/standard.xml */ +N_("Three Color Composite"); /* ./escp2/inks/standard.xml */ +N_("One Color Raw"); /* ./escp2/inks/standard.xml */ +N_("Three Color Raw"); /* ./escp2/inks/standard.xml */ +N_("Four Color Raw"); /* ./escp2/inks/standard.xml */ +N_("Quadtone"); /* ./escp2/inks/standard.xml */ +N_("Gray 3"); /* ./escp2/inks/standard.xml */ +N_("Gray 2"); /* ./escp2/inks/standard.xml */ +N_("Gray 1"); /* ./escp2/inks/standard.xml */ +N_("MIS Quadtone"); /* ./escp2/inks/standard.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/standard_gen0.xml */ +N_("Four Color Standard"); /* ./escp2/inks/standard_gen0.xml */ +N_("Black"); /* ./escp2/inks/standard_gen0.xml */ +N_("Cyan"); /* ./escp2/inks/standard_gen0.xml */ +N_("Magenta"); /* ./escp2/inks/standard_gen0.xml */ +N_("Yellow"); /* ./escp2/inks/standard_gen0.xml */ +N_("Three Color Composite"); /* ./escp2/inks/standard_gen0.xml */ +N_("One Color Raw"); /* ./escp2/inks/standard_gen0.xml */ +N_("Three Color Raw"); /* ./escp2/inks/standard_gen0.xml */ +N_("Four Color Raw"); /* ./escp2/inks/standard_gen0.xml */ +N_("Quadtone"); /* ./escp2/inks/standard_gen0.xml */ +N_("Gray 3"); /* ./escp2/inks/standard_gen0.xml */ +N_("Gray 2"); /* ./escp2/inks/standard_gen0.xml */ +N_("Gray 1"); /* ./escp2/inks/standard_gen0.xml */ +N_("MIS Quadtone"); /* ./escp2/inks/standard_gen0.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/sx445.xml */ +N_("Four Color Standard"); /* ./escp2/inks/sx445.xml */ +N_("Black"); /* ./escp2/inks/sx445.xml */ +N_("Cyan"); /* ./escp2/inks/sx445.xml */ +N_("Magenta"); /* ./escp2/inks/sx445.xml */ +N_("Yellow"); /* ./escp2/inks/sx445.xml */ +N_("Three Color Composite"); /* ./escp2/inks/sx445.xml */ +N_("One Color Raw"); /* ./escp2/inks/sx445.xml */ +N_("Three Color Raw"); /* ./escp2/inks/sx445.xml */ +N_("Four Color Raw"); /* ./escp2/inks/sx445.xml */ +N_("UltraChrome Photo Black"); /* ./escp2/inks/ultrachrome.xml */ +N_("Seven Color Photo"); /* ./escp2/inks/ultrachrome.xml */ +N_("Black"); /* ./escp2/inks/ultrachrome.xml */ +N_("Light Black"); /* ./escp2/inks/ultrachrome.xml */ +N_("Cyan"); /* ./escp2/inks/ultrachrome.xml */ +N_("Light Cyan"); /* ./escp2/inks/ultrachrome.xml */ +N_("Magenta"); /* ./escp2/inks/ultrachrome.xml */ +N_("Light Magenta"); /* ./escp2/inks/ultrachrome.xml */ +N_("Yellow"); /* ./escp2/inks/ultrachrome.xml */ +N_("Six Color Photo"); /* ./escp2/inks/ultrachrome.xml */ +N_("Five Color Photo Composite"); /* ./escp2/inks/ultrachrome.xml */ +N_("Four Color Standard"); /* ./escp2/inks/ultrachrome.xml */ +N_("Three Color Composite"); /* ./escp2/inks/ultrachrome.xml */ +N_("Two Level Grayscale"); /* ./escp2/inks/ultrachrome.xml */ +N_("One Color Raw"); /* ./escp2/inks/ultrachrome.xml */ +N_("Two Color Raw"); /* ./escp2/inks/ultrachrome.xml */ +N_("Three Color Raw"); /* ./escp2/inks/ultrachrome.xml */ +N_("Four Color Raw"); /* ./escp2/inks/ultrachrome.xml */ +N_("Five Color Raw"); /* ./escp2/inks/ultrachrome.xml */ +N_("Six Color Raw"); /* ./escp2/inks/ultrachrome.xml */ +N_("Seven Color Raw"); /* ./escp2/inks/ultrachrome.xml */ +N_("UltraChrome Matte Black"); /* ./escp2/inks/ultrachrome.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/wf40.xml */ +N_("Four Color Standard"); /* ./escp2/inks/wf40.xml */ +N_("Black"); /* ./escp2/inks/wf40.xml */ +N_("Cyan"); /* ./escp2/inks/wf40.xml */ +N_("Magenta"); /* ./escp2/inks/wf40.xml */ +N_("Yellow"); /* ./escp2/inks/wf40.xml */ +N_("Three Color Composite"); /* ./escp2/inks/wf40.xml */ +N_("One Color Raw"); /* ./escp2/inks/wf40.xml */ +N_("Three Color Raw"); /* ./escp2/inks/wf40.xml */ +N_("Four Color Raw"); /* ./escp2/inks/wf40.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/wf500.xml */ +N_("Four Color Standard"); /* ./escp2/inks/wf500.xml */ +N_("Black"); /* ./escp2/inks/wf500.xml */ +N_("Cyan"); /* ./escp2/inks/wf500.xml */ +N_("Magenta"); /* ./escp2/inks/wf500.xml */ +N_("Yellow"); /* ./escp2/inks/wf500.xml */ +N_("Three Color Composite"); /* ./escp2/inks/wf500.xml */ +N_("One Color Raw"); /* ./escp2/inks/wf500.xml */ +N_("Three Color Raw"); /* ./escp2/inks/wf500.xml */ +N_("Four Color Raw"); /* ./escp2/inks/wf500.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/x80.xml */ +N_("Four Color Standard"); /* ./escp2/inks/x80.xml */ +N_("Black"); /* ./escp2/inks/x80.xml */ +N_("Cyan"); /* ./escp2/inks/x80.xml */ +N_("Magenta"); /* ./escp2/inks/x80.xml */ +N_("Yellow"); /* ./escp2/inks/x80.xml */ +N_("Three Color Composite"); /* ./escp2/inks/x80.xml */ +N_("One Color Raw"); /* ./escp2/inks/x80.xml */ +N_("Three Color Raw"); /* ./escp2/inks/x80.xml */ +N_("Four Color Raw"); /* ./escp2/inks/x80.xml */ +N_("EPSON Standard Inks"); /* ./escp2/inks/xp100.xml */ +N_("Four Color Standard"); /* ./escp2/inks/xp100.xml */ +N_("Black"); /* ./escp2/inks/xp100.xml */ +N_("Cyan"); /* ./escp2/inks/xp100.xml */ +N_("Magenta"); /* ./escp2/inks/xp100.xml */ +N_("Yellow"); /* ./escp2/inks/xp100.xml */ +N_("Three Color Composite"); /* ./escp2/inks/xp100.xml */ +N_("One Color Raw"); /* ./escp2/inks/xp100.xml */ +N_("Three Color Raw"); /* ./escp2/inks/xp100.xml */ +N_("Four Color Raw"); /* ./escp2/inks/xp100.xml */ +N_("Main Tray"); /* ./escp2/inputslots/artisan.xml */ +N_("Photo Tray"); /* ./escp2/inputslots/artisan.xml */ +N_("Print to CD"); /* ./escp2/inputslots/artisan.xml */ +N_("Rear Tray"); /* ./escp2/inputslots/b500.xml */ +N_("Front Tray"); /* ./escp2/inputslots/b500.xml */ +N_("Standard"); /* ./escp2/inputslots/cd.xml */ +N_("Print to CD"); /* ./escp2/inputslots/cd.xml */ +N_("Standard"); /* ./escp2/inputslots/cd_cutter_roll_feed.xml */ +N_("Manual Feed"); /* ./escp2/inputslots/cd_cutter_roll_feed.xml */ +N_("Print to CD"); /* ./escp2/inputslots/cd_cutter_roll_feed.xml */ +N_("Roll Feed (cut each page)"); /* ./escp2/inputslots/cd_cutter_roll_feed.xml */ +N_("Roll Feed (do not cut)"); /* ./escp2/inputslots/cd_cutter_roll_feed.xml */ +N_("Standard"); /* ./escp2/inputslots/cd_roll_feed.xml */ +N_("Manual Feed"); /* ./escp2/inputslots/cd_roll_feed.xml */ +N_("Print to CD"); /* ./escp2/inputslots/cd_roll_feed.xml */ +N_("Roll Feed"); /* ./escp2/inputslots/cd_roll_feed.xml */ +N_("Standard"); /* ./escp2/inputslots/cutter_roll_feed.xml */ +N_("Roll Feed (cut each page)"); /* ./escp2/inputslots/cutter_roll_feed.xml */ +N_("Roll Feed (do not cut)"); /* ./escp2/inputslots/cutter_roll_feed.xml */ +N_("Main Input"); /* ./escp2/inputslots/default-duplex.xml */ +N_("Standard"); /* ./escp2/inputslots/pro3880.xml */ +N_("Manual Sheet Guide"); /* ./escp2/inputslots/pro3880.xml */ +N_("Manual Feed (Front)"); /* ./escp2/inputslots/pro3880.xml */ +N_("Standard"); /* ./escp2/inputslots/pro_roll_feed.xml */ +N_("Roll Feed"); /* ./escp2/inputslots/pro_roll_feed.xml */ +N_("Standard"); /* ./escp2/inputslots/pro_cutter_roll_feed.xml */ +N_("Manual Feed"); /* ./escp2/inputslots/pro_cutter_roll_feed.xml */ +N_("Roll Feed (cut each page)"); /* ./escp2/inputslots/pro_cutter_roll_feed.xml */ +N_("Roll Feed (borderless with single cut)"); /* ./escp2/inputslots/pro_cutter_roll_feed.xml */ +N_("Roll Feed (borderless with double cut)"); /* ./escp2/inputslots/pro_cutter_roll_feed.xml */ +N_("Roll Feed (do not cut)"); /* ./escp2/inputslots/pro_cutter_roll_feed.xml */ +N_("Standard"); /* ./escp2/inputslots/r1800.xml */ +N_("Manual Sheet Guide"); /* ./escp2/inputslots/r1800.xml */ +N_("Manual Feed (Front)"); /* ./escp2/inputslots/r1800.xml */ +N_("Roll Feed"); /* ./escp2/inputslots/r1800.xml */ +N_("Print to CD"); /* ./escp2/inputslots/r1800.xml */ +N_("Standard"); /* ./escp2/inputslots/r2400.xml */ +N_("Manual Sheet Guide"); /* ./escp2/inputslots/r2400.xml */ +N_("Manual Feed (Front)"); /* ./escp2/inputslots/r2400.xml */ +N_("Roll Feed"); /* ./escp2/inputslots/r2400.xml */ +N_("Standard"); /* ./escp2/inputslots/r2880.xml */ +N_("Manual Sheet Guide"); /* ./escp2/inputslots/r2880.xml */ +N_("Manual Feed (Front)"); /* ./escp2/inputslots/r2880.xml */ +N_("Print to CD"); /* ./escp2/inputslots/r2880.xml */ +N_("Roll Feed"); /* ./escp2/inputslots/r2880.xml */ +N_("Rear Tray"); /* ./escp2/inputslots/rx680.xml */ +N_("Front Tray"); /* ./escp2/inputslots/rx680.xml */ +N_("Print to CD"); /* ./escp2/inputslots/rx680.xml */ +N_("Rear Tray"); /* ./escp2/inputslots/rx700.xml */ +N_("Front Tray"); /* ./escp2/inputslots/rx700.xml */ +N_("Print to CD"); /* ./escp2/inputslots/rx700.xml */ +N_("Photo Board"); /* ./escp2/inputslots/rx700.xml */ +N_("Cut Sheet Bin 1"); /* ./escp2/inputslots/spro5000.xml */ +N_("Cut Sheet Bin 2"); /* ./escp2/inputslots/spro5000.xml */ +N_("Cut Sheet Autoselect"); /* ./escp2/inputslots/spro5000.xml */ +N_("Manual Selection"); /* ./escp2/inputslots/spro5000.xml */ +N_("Standard"); /* ./escp2/inputslots/standard_roll_feed.xml */ +N_("Roll Feed"); /* ./escp2/inputslots/standard_roll_feed.xml */ +N_("Tray 1"); /* ./escp2/inputslots/wf7000.xml */ +N_("Tray 2"); /* ./escp2/inputslots/wf7000.xml */ +N_("Black"); /* ./escp2/model/base/bx.xml */ +N_("Magenta"); /* ./escp2/model/base/bx.xml */ +N_("Yellow"); /* ./escp2/model/base/bx.xml */ +N_("Cyan"); /* ./escp2/model/base/bx.xml */ +N_("Black 1"); /* ./escp2/model/base/c1xx.xml */ +N_("Black 2"); /* ./escp2/model/base/c1xx.xml */ +N_("Magenta"); /* ./escp2/model/base/c1xx.xml */ +N_("Cyan"); /* ./escp2/model/base/c1xx.xml */ +N_("Yellow"); /* ./escp2/model/base/c1xx.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/base/c1xx.xml */ +N_("360 DPI"); /* ./escp2/model/base/c1xx.xml */ +N_("360 DPI Enhanced"); /* ./escp2/model/base/c1xx.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/base/c1xx.xml */ +N_("720 x 360 DPI Enhanced"); /* ./escp2/model/base/c1xx.xml */ +N_("720 DPI"); /* ./escp2/model/base/c1xx.xml */ +N_("720 DPI High Quality"); /* ./escp2/model/base/c1xx.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/base/c1xx.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/base/c1xx.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/base/c1xx.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/base/c1xx.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/base/c1xx.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/base/c1xx.xml */ +N_("Black"); /* ./escp2/model/base/c2x.xml */ +N_("Cyan"); /* ./escp2/model/base/c2x.xml */ +N_("Magenta"); /* ./escp2/model/base/c2x.xml */ +N_("Yellow"); /* ./escp2/model/base/c2x.xml */ +N_("Black"); /* ./escp2/model/base/c4x.xml */ +N_("Cyan"); /* ./escp2/model/base/c4x.xml */ +N_("Magenta"); /* ./escp2/model/base/c4x.xml */ +N_("Yellow"); /* ./escp2/model/base/c4x.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/base/c4x.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/base/c4x.xml */ +N_("360 DPI"); /* ./escp2/model/base/c4x.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/base/c4x.xml */ +N_("720 DPI"); /* ./escp2/model/base/c4x.xml */ +N_("720 DPI High Quality"); /* ./escp2/model/base/c4x.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/base/c4x.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/model/base/c4x.xml */ +N_("Black"); /* ./escp2/model/base/c7xx.xml */ +N_("Cyan"); /* ./escp2/model/base/c7xx.xml */ +N_("Magenta"); /* ./escp2/model/base/c7xx.xml */ +N_("Yellow"); /* ./escp2/model/base/c7xx.xml */ +N_("Black"); /* ./escp2/model/base/c8x_base.xml */ +N_("Cyan"); /* ./escp2/model/base/c8x_base.xml */ +N_("Magenta"); /* ./escp2/model/base/c8x_base.xml */ +N_("Yellow"); /* ./escp2/model/base/c8x_base.xml */ +N_("Black"); /* ./escp2/model/base/cpro.xml */ +N_("Cyan"); /* ./escp2/model/base/cpro.xml */ +N_("Magenta"); /* ./escp2/model/base/cpro.xml */ +N_("Yellow"); /* ./escp2/model/base/cpro.xml */ +N_("Black"); /* ./escp2/model/base/photo2.xml */ +N_("Cyan"); /* ./escp2/model/base/photo2.xml */ +N_("Magenta"); /* ./escp2/model/base/photo2.xml */ +N_("Yellow"); /* ./escp2/model/base/photo2.xml */ +N_("Light Cyan"); /* ./escp2/model/base/photo2.xml */ +N_("Light Magenta"); /* ./escp2/model/base/photo2.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/base/picmate.xml */ +N_("1440 x 720 DPI Transposed"); /* ./escp2/model/base/picmate.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/base/picmate.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/base/picmate.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/base/picmate.xml */ +N_("360 DPI"); /* ./escp2/model/base/pro_ultrachrome_k3v10_base.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/base/pro_ultrachrome_k3v10_base.xml */ +N_("720 DPI"); /* ./escp2/model/base/pro_ultrachrome_k3v10_base.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/base/pro_ultrachrome_k3v10_base.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/base/pro_ultrachrome_k3v10_base.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/base/pro_ultrachrome_k3v10_base.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/base/pro_ultrachrome_k3v10_base.xml */ +N_("Black"); /* ./escp2/model/base/pro_x000.xml */ +N_("Cyan"); /* ./escp2/model/base/pro_x000.xml */ +N_("Magenta"); /* ./escp2/model/base/pro_x000.xml */ +N_("Yellow"); /* ./escp2/model/base/pro_x000.xml */ +N_("Light Cyan"); /* ./escp2/model/base/pro_x000.xml */ +N_("Light Magenta"); /* ./escp2/model/base/pro_x000.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/model/base/pro_x000.xml */ +N_("180 DPI Economy"); /* ./escp2/model/base/pro_x000.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/base/pro_x000.xml */ +N_("360 DPI"); /* ./escp2/model/base/pro_x000.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/base/pro_x000.xml */ +N_("720 DPI"); /* ./escp2/model/base/pro_x000.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/base/pro_x000.xml */ +N_("Black"); /* ./escp2/model/base/pro_x500.xml */ +N_("Cyan"); /* ./escp2/model/base/pro_x500.xml */ +N_("Magenta"); /* ./escp2/model/base/pro_x500.xml */ +N_("Yellow"); /* ./escp2/model/base/pro_x500.xml */ +N_("Light Cyan"); /* ./escp2/model/base/pro_x500.xml */ +N_("Light Magenta"); /* ./escp2/model/base/pro_x500.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/model/base/pro_x500.xml */ +N_("180 DPI Economy"); /* ./escp2/model/base/pro_x500.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/base/pro_x500.xml */ +N_("360 DPI"); /* ./escp2/model/base/pro_x500.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/base/pro_x500.xml */ +N_("720 DPI"); /* ./escp2/model/base/pro_x500.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/base/pro_x500.xml */ +N_("Black"); /* ./escp2/model/base/pro_x600.xml */ +N_("Cyan"); /* ./escp2/model/base/pro_x600.xml */ +N_("Magenta"); /* ./escp2/model/base/pro_x600.xml */ +N_("Yellow"); /* ./escp2/model/base/pro_x600.xml */ +N_("Light Cyan"); /* ./escp2/model/base/pro_x600.xml */ +N_("Light Magenta"); /* ./escp2/model/base/pro_x600.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/base/pro_x600.xml */ +N_("360 DPI"); /* ./escp2/model/base/pro_x600.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/base/pro_x600.xml */ +N_("720 DPI"); /* ./escp2/model/base/pro_x600.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/base/pro_x600.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/base/pro_x600.xml */ +N_("Black"); /* ./escp2/model/base/pro_x800.xml */ +N_("Cyan"); /* ./escp2/model/base/pro_x800.xml */ +N_("Magenta"); /* ./escp2/model/base/pro_x800.xml */ +N_("Yellow"); /* ./escp2/model/base/pro_x800.xml */ +N_("Light Cyan"); /* ./escp2/model/base/pro_x800.xml */ +N_("Light Magenta"); /* ./escp2/model/base/pro_x800.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/base/pro_x800.xml */ +N_("360 DPI"); /* ./escp2/model/base/pro_x800.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/base/pro_x800.xml */ +N_("720 DPI"); /* ./escp2/model/base/pro_x800.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/base/pro_x800.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/base/pro_x800.xml */ +N_("Black"); /* ./escp2/model/base/r200.xml */ +N_("Cyan"); /* ./escp2/model/base/r200.xml */ +N_("Light Cyan"); /* ./escp2/model/base/r200.xml */ +N_("Magenta"); /* ./escp2/model/base/r200.xml */ +N_("Light Magenta"); /* ./escp2/model/base/r200.xml */ +N_("Yellow"); /* ./escp2/model/base/r200.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/base/r200.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/base/r200.xml */ +N_("360 DPI"); /* ./escp2/model/base/r200.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/base/r200.xml */ +N_("720 DPI"); /* ./escp2/model/base/r200.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/base/r200.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/base/r200.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/base/r200.xml */ +N_("Black"); /* ./escp2/model/base/r240.xml */ +N_("Cyan"); /* ./escp2/model/base/r240.xml */ +N_("Magenta"); /* ./escp2/model/base/r240.xml */ +N_("Yellow"); /* ./escp2/model/base/r240.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/base/r240.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/base/r240.xml */ +N_("360 DPI"); /* ./escp2/model/base/r240.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/base/r240.xml */ +N_("720 DPI"); /* ./escp2/model/base/r240.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/base/r240.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/base/r240.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/base/r240.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/base/r240.xml */ +N_("Yellow"); /* ./escp2/model/base/r800.xml */ +N_("Magenta"); /* ./escp2/model/base/r800.xml */ +N_("Cyan"); /* ./escp2/model/base/r800.xml */ +N_("Matte Black"); /* ./escp2/model/base/r800.xml */ +N_("Photo Black"); /* ./escp2/model/base/r800.xml */ +N_("Red"); /* ./escp2/model/base/r800.xml */ +N_("Blue"); /* ./escp2/model/base/r800.xml */ +N_("Gloss Optimizer"); /* ./escp2/model/base/r800.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/base/r800.xml */ +N_("360 DPI"); /* ./escp2/model/base/r800.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/base/r800.xml */ +N_("720 DPI"); /* ./escp2/model/base/r800.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/base/r800.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/base/r800.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/base/r800.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/base/r800.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/base/r800.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/base/r800.xml */ +N_("Black"); /* ./escp2/model/base/sc800.xml */ +N_("Cyan"); /* ./escp2/model/base/sc800.xml */ +N_("Magenta"); /* ./escp2/model/base/sc800.xml */ +N_("Yellow"); /* ./escp2/model/base/sc800.xml */ +N_("180 DPI Economy"); /* ./escp2/model/base/sc800.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/base/sc800.xml */ +N_("360 DPI High Quality"); /* ./escp2/model/base/sc800.xml */ +N_("360 DPI"); /* ./escp2/model/base/sc800.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/base/sc800.xml */ +N_("720 DPI"); /* ./escp2/model/base/sc800.xml */ +N_("720 DPI High Quality"); /* ./escp2/model/base/sc800.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/base/sc800.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/model/base/sc800.xml */ +N_("Black"); /* ./escp2/model/base/sp700.xml */ +N_("Cyan"); /* ./escp2/model/base/sp700.xml */ +N_("Magenta"); /* ./escp2/model/base/sp700.xml */ +N_("Yellow"); /* ./escp2/model/base/sp700.xml */ +N_("Light Cyan"); /* ./escp2/model/base/sp700.xml */ +N_("Light Magenta"); /* ./escp2/model/base/sp700.xml */ +N_("Black"); /* ./escp2/model/base/sp750.xml */ +N_("Cyan"); /* ./escp2/model/base/sp750.xml */ +N_("Magenta"); /* ./escp2/model/base/sp750.xml */ +N_("Yellow"); /* ./escp2/model/base/sp750.xml */ +N_("Light Cyan"); /* ./escp2/model/base/sp750.xml */ +N_("Light Magenta"); /* ./escp2/model/base/sp750.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/base/sp950.xml */ +N_("360 DPI"); /* ./escp2/model/base/sp950.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/base/sp950.xml */ +N_("720 DPI"); /* ./escp2/model/base/sp950.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/base/sp950.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/base/sp950.xml */ +N_("Black"); /* ./escp2/model/base/wf7xxx.xml */ +N_("Magenta"); /* ./escp2/model/base/wf7xxx.xml */ +N_("Yellow"); /* ./escp2/model/base/wf7xxx.xml */ +N_("Cyan"); /* ./escp2/model/base/wf7xxx.xml */ +N_("Black"); /* ./escp2/model/model_0.xml */ +N_("Cyan"); /* ./escp2/model/model_0.xml */ +N_("Magenta"); /* ./escp2/model/model_0.xml */ +N_("Yellow"); /* ./escp2/model/model_0.xml */ +N_("Black"); /* ./escp2/model/model_1.xml */ +N_("Cyan"); /* ./escp2/model/model_1.xml */ +N_("Magenta"); /* ./escp2/model/model_1.xml */ +N_("Yellow"); /* ./escp2/model/model_1.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/model/model_1.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_1.xml */ +N_("180 DPI Economy"); /* ./escp2/model/model_1.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/model_1.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_1.xml */ +N_("360 DPI High Quality"); /* ./escp2/model/model_1.xml */ +N_("360 DPI"); /* ./escp2/model/model_1.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_1.xml */ +N_("720 DPI"); /* ./escp2/model/model_1.xml */ +N_("Black"); /* ./escp2/model/model_2.xml */ +N_("Cyan"); /* ./escp2/model/model_2.xml */ +N_("Magenta"); /* ./escp2/model/model_2.xml */ +N_("Yellow"); /* ./escp2/model/model_2.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/model/model_2.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_2.xml */ +N_("180 DPI Economy"); /* ./escp2/model/model_2.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/model_2.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_2.xml */ +N_("360 DPI High Quality"); /* ./escp2/model/model_2.xml */ +N_("360 DPI"); /* ./escp2/model/model_2.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_2.xml */ +N_("720 DPI"); /* ./escp2/model/model_2.xml */ +N_("Black"); /* ./escp2/model/model_3.xml */ +N_("Cyan"); /* ./escp2/model/model_3.xml */ +N_("Magenta"); /* ./escp2/model/model_3.xml */ +N_("Yellow"); /* ./escp2/model/model_3.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/model/model_3.xml */ +N_("180 DPI Economy"); /* ./escp2/model/model_3.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_3.xml */ +N_("360 DPI High Quality"); /* ./escp2/model/model_3.xml */ +N_("360 DPI"); /* ./escp2/model/model_3.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_3.xml */ +N_("720 DPI"); /* ./escp2/model/model_3.xml */ +N_("720 DPI High Quality"); /* ./escp2/model/model_3.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_3.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/model/model_3.xml */ +N_("Black"); /* ./escp2/model/model_9.xml */ +N_("Cyan"); /* ./escp2/model/model_9.xml */ +N_("Magenta"); /* ./escp2/model/model_9.xml */ +N_("Yellow"); /* ./escp2/model/model_9.xml */ +N_("Light Cyan"); /* ./escp2/model/model_9.xml */ +N_("Light Magenta"); /* ./escp2/model/model_9.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/model/model_9.xml */ +N_("180 DPI Economy"); /* ./escp2/model/model_9.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_9.xml */ +N_("360 DPI High Quality"); /* ./escp2/model/model_9.xml */ +N_("360 DPI"); /* ./escp2/model/model_9.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_9.xml */ +N_("720 DPI"); /* ./escp2/model/model_9.xml */ +N_("720 DPI High Quality"); /* ./escp2/model/model_9.xml */ +N_("720 DPI Highest Quality"); /* ./escp2/model/model_9.xml */ +N_("Black"); /* ./escp2/model/model_10.xml */ +N_("Cyan"); /* ./escp2/model/model_10.xml */ +N_("Magenta"); /* ./escp2/model/model_10.xml */ +N_("Yellow"); /* ./escp2/model/model_10.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/model/model_10.xml */ +N_("180 DPI Economy"); /* ./escp2/model/model_10.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_10.xml */ +N_("360 DPI High Quality"); /* ./escp2/model/model_10.xml */ +N_("360 DPI"); /* ./escp2/model/model_10.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_10.xml */ +N_("720 DPI"); /* ./escp2/model/model_10.xml */ +N_("720 DPI High Quality"); /* ./escp2/model/model_10.xml */ +N_("720 DPI Highest Quality"); /* ./escp2/model/model_10.xml */ +N_("Black"); /* ./escp2/model/model_11.xml */ +N_("Cyan"); /* ./escp2/model/model_11.xml */ +N_("Magenta"); /* ./escp2/model/model_11.xml */ +N_("Yellow"); /* ./escp2/model/model_11.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/model/model_11.xml */ +N_("180 DPI Economy"); /* ./escp2/model/model_11.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_11.xml */ +N_("360 DPI High Quality"); /* ./escp2/model/model_11.xml */ +N_("360 DPI"); /* ./escp2/model/model_11.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_11.xml */ +N_("720 DPI"); /* ./escp2/model/model_11.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_11.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/model/model_11.xml */ +N_("Black"); /* ./escp2/model/model_13.xml */ +N_("Cyan"); /* ./escp2/model/model_13.xml */ +N_("Magenta"); /* ./escp2/model/model_13.xml */ +N_("Yellow"); /* ./escp2/model/model_13.xml */ +N_("180 DPI Economy"); /* ./escp2/model/model_13.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_13.xml */ +N_("360 DPI"); /* ./escp2/model/model_13.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_13.xml */ +N_("720 DPI"); /* ./escp2/model/model_13.xml */ +N_("720 DPI High Quality"); /* ./escp2/model/model_13.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_13.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/model/model_13.xml */ +N_("Black"); /* ./escp2/model/model_18.xml */ +N_("Cyan"); /* ./escp2/model/model_18.xml */ +N_("Magenta"); /* ./escp2/model/model_18.xml */ +N_("Yellow"); /* ./escp2/model/model_18.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/model/model_18.xml */ +N_("180 DPI Economy"); /* ./escp2/model/model_18.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_18.xml */ +N_("360 DPI High Quality"); /* ./escp2/model/model_18.xml */ +N_("360 DPI"); /* ./escp2/model/model_18.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_18.xml */ +N_("720 DPI"); /* ./escp2/model/model_18.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_18.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/model/model_18.xml */ +N_("Black"); /* ./escp2/model/model_20.xml */ +N_("Cyan"); /* ./escp2/model/model_20.xml */ +N_("Magenta"); /* ./escp2/model/model_20.xml */ +N_("Yellow"); /* ./escp2/model/model_20.xml */ +N_("Light Cyan"); /* ./escp2/model/model_20.xml */ +N_("Light Magenta"); /* ./escp2/model/model_20.xml */ +N_("Black"); /* ./escp2/model/model_25.xml */ +N_("Cyan"); /* ./escp2/model/model_25.xml */ +N_("Magenta"); /* ./escp2/model/model_25.xml */ +N_("Yellow"); /* ./escp2/model/model_25.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/model/model_25.xml */ +N_("180 DPI Economy"); /* ./escp2/model/model_25.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_25.xml */ +N_("360 DPI"); /* ./escp2/model/model_25.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_25.xml */ +N_("720 DPI"); /* ./escp2/model/model_25.xml */ +N_("720 DPI High Quality"); /* ./escp2/model/model_25.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_25.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/model/model_25.xml */ +N_("Black"); /* ./escp2/model/model_26.xml */ +N_("Cyan"); /* ./escp2/model/model_26.xml */ +N_("Magenta"); /* ./escp2/model/model_26.xml */ +N_("Yellow"); /* ./escp2/model/model_26.xml */ +N_("Light Cyan"); /* ./escp2/model/model_26.xml */ +N_("Light Magenta"); /* ./escp2/model/model_26.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_26.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/model_26.xml */ +N_("360 DPI"); /* ./escp2/model/model_26.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_26.xml */ +N_("720 DPI"); /* ./escp2/model/model_26.xml */ +N_("720 DPI High Quality"); /* ./escp2/model/model_26.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_26.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/model/model_26.xml */ +N_("Black"); /* ./escp2/model/model_27.xml */ +N_("Cyan"); /* ./escp2/model/model_27.xml */ +N_("Magenta"); /* ./escp2/model/model_27.xml */ +N_("Yellow"); /* ./escp2/model/model_27.xml */ +N_("Light Cyan"); /* ./escp2/model/model_27.xml */ +N_("Light Magenta"); /* ./escp2/model/model_27.xml */ +N_("180 DPI Economy"); /* ./escp2/model/model_27.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_27.xml */ +N_("360 DPI"); /* ./escp2/model/model_27.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_27.xml */ +N_("720 DPI"); /* ./escp2/model/model_27.xml */ +N_("720 DPI High Quality"); /* ./escp2/model/model_27.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_27.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/model/model_27.xml */ +N_("Black"); /* ./escp2/model/model_32.xml */ +N_("Cyan"); /* ./escp2/model/model_32.xml */ +N_("Magenta"); /* ./escp2/model/model_32.xml */ +N_("Yellow"); /* ./escp2/model/model_32.xml */ +N_("Black"); /* ./escp2/model/model_34.xml */ +N_("Cyan"); /* ./escp2/model/model_34.xml */ +N_("Magenta"); /* ./escp2/model/model_34.xml */ +N_("Yellow"); /* ./escp2/model/model_34.xml */ +N_("180 DPI Economy"); /* ./escp2/model/model_34.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_34.xml */ +N_("360 DPI"); /* ./escp2/model/model_34.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_34.xml */ +N_("720 DPI"); /* ./escp2/model/model_34.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_34.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/model/model_34.xml */ +N_("2880 x 720 DPI"); /* ./escp2/model/model_34.xml */ +N_("2880 x 720 DPI Highest Quality"); /* ./escp2/model/model_34.xml */ +N_("Black"); /* ./escp2/model/model_41.xml */ +N_("Cyan"); /* ./escp2/model/model_41.xml */ +N_("Magenta"); /* ./escp2/model/model_41.xml */ +N_("Yellow"); /* ./escp2/model/model_41.xml */ +N_("Light Cyan"); /* ./escp2/model/model_41.xml */ +N_("Light Magenta"); /* ./escp2/model/model_41.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/model/model_41.xml */ +N_("180 DPI Economy"); /* ./escp2/model/model_41.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_41.xml */ +N_("360 DPI"); /* ./escp2/model/model_41.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_41.xml */ +N_("720 DPI"); /* ./escp2/model/model_41.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_41.xml */ +N_("Black"); /* ./escp2/model/model_46.xml */ +N_("Cyan"); /* ./escp2/model/model_46.xml */ +N_("Magenta"); /* ./escp2/model/model_46.xml */ +N_("Yellow"); /* ./escp2/model/model_46.xml */ +N_("Light Cyan"); /* ./escp2/model/model_46.xml */ +N_("Light Magenta"); /* ./escp2/model/model_46.xml */ +N_("Black"); /* ./escp2/model/model_47.xml */ +N_("Cyan"); /* ./escp2/model/model_47.xml */ +N_("Magenta"); /* ./escp2/model/model_47.xml */ +N_("Yellow"); /* ./escp2/model/model_47.xml */ +N_("Light Cyan"); /* ./escp2/model/model_47.xml */ +N_("Light Magenta"); /* ./escp2/model/model_47.xml */ +N_("Light Black"); /* ./escp2/model/model_47.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_47.xml */ +N_("360 DPI"); /* ./escp2/model/model_47.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_47.xml */ +N_("720 DPI"); /* ./escp2/model/model_47.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_47.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_47.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_47.xml */ +N_("Black"); /* ./escp2/model/model_50.xml */ +N_("Cyan"); /* ./escp2/model/model_50.xml */ +N_("Magenta"); /* ./escp2/model/model_50.xml */ +N_("Yellow"); /* ./escp2/model/model_50.xml */ +N_("Light Cyan"); /* ./escp2/model/model_50.xml */ +N_("Light Magenta"); /* ./escp2/model/model_50.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_50.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/model_50.xml */ +N_("360 DPI"); /* ./escp2/model/model_50.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_50.xml */ +N_("720 DPI"); /* ./escp2/model/model_50.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_50.xml */ +N_("2880 x 720 DPI"); /* ./escp2/model/model_50.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_50.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_50.xml */ +N_("Black"); /* ./escp2/model/model_51.xml */ +N_("Cyan"); /* ./escp2/model/model_51.xml */ +N_("Magenta"); /* ./escp2/model/model_51.xml */ +N_("Yellow"); /* ./escp2/model/model_51.xml */ +N_("Light Cyan"); /* ./escp2/model/model_51.xml */ +N_("Light Magenta"); /* ./escp2/model/model_51.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_51.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/model_51.xml */ +N_("360 DPI"); /* ./escp2/model/model_51.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_51.xml */ +N_("720 DPI"); /* ./escp2/model/model_51.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_51.xml */ +N_("2880 x 720 DPI"); /* ./escp2/model/model_51.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_51.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_51.xml */ +N_("Black"); /* ./escp2/model/model_52.xml */ +N_("Cyan"); /* ./escp2/model/model_52.xml */ +N_("Magenta"); /* ./escp2/model/model_52.xml */ +N_("Yellow"); /* ./escp2/model/model_52.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_52.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/model_52.xml */ +N_("360 DPI"); /* ./escp2/model/model_52.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_52.xml */ +N_("720 DPI"); /* ./escp2/model/model_52.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_52.xml */ +N_("2880 x 720 DPI"); /* ./escp2/model/model_52.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_52.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_52.xml */ +N_("Black"); /* ./escp2/model/model_53.xml */ +N_("Cyan"); /* ./escp2/model/model_53.xml */ +N_("Magenta"); /* ./escp2/model/model_53.xml */ +N_("Yellow"); /* ./escp2/model/model_53.xml */ +N_("Light Cyan"); /* ./escp2/model/model_53.xml */ +N_("Light Magenta"); /* ./escp2/model/model_53.xml */ +N_("Dark Yellow"); /* ./escp2/model/model_53.xml */ +N_("Black"); /* ./escp2/model/model_54.xml */ +N_("Cyan"); /* ./escp2/model/model_54.xml */ +N_("Magenta"); /* ./escp2/model/model_54.xml */ +N_("Yellow"); /* ./escp2/model/model_54.xml */ +N_("Light Cyan"); /* ./escp2/model/model_54.xml */ +N_("Light Magenta"); /* ./escp2/model/model_54.xml */ +N_("Black"); /* ./escp2/model/model_56.xml */ +N_("Cyan"); /* ./escp2/model/model_56.xml */ +N_("Magenta"); /* ./escp2/model/model_56.xml */ +N_("Yellow"); /* ./escp2/model/model_56.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_56.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/model_56.xml */ +N_("360 DPI"); /* ./escp2/model/model_56.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_56.xml */ +N_("720 DPI"); /* ./escp2/model/model_56.xml */ +N_("720 DPI High Quality"); /* ./escp2/model/model_56.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_56.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/model/model_56.xml */ +N_("Black"); /* ./escp2/model/model_57.xml */ +N_("Cyan"); /* ./escp2/model/model_57.xml */ +N_("Magenta"); /* ./escp2/model/model_57.xml */ +N_("Yellow"); /* ./escp2/model/model_57.xml */ +N_("Light Cyan"); /* ./escp2/model/model_57.xml */ +N_("Light Magenta"); /* ./escp2/model/model_57.xml */ +N_("Dark Yellow"); /* ./escp2/model/model_57.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_57.xml */ +N_("720 DPI"); /* ./escp2/model/model_57.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_57.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_57.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_57.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_57.xml */ +N_("Black"); /* ./escp2/model/model_58.xml */ +N_("Cyan"); /* ./escp2/model/model_58.xml */ +N_("Magenta"); /* ./escp2/model/model_58.xml */ +N_("Yellow"); /* ./escp2/model/model_58.xml */ +N_("Light Cyan"); /* ./escp2/model/model_58.xml */ +N_("Light Magenta"); /* ./escp2/model/model_58.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_58.xml */ +N_("720 DPI"); /* ./escp2/model/model_58.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_58.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_58.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_58.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_58.xml */ +N_("Black"); /* ./escp2/model/model_61.xml */ +N_("Cyan"); /* ./escp2/model/model_61.xml */ +N_("Magenta"); /* ./escp2/model/model_61.xml */ +N_("Yellow"); /* ./escp2/model/model_61.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_61.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/model_61.xml */ +N_("360 DPI"); /* ./escp2/model/model_61.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_61.xml */ +N_("720 DPI"); /* ./escp2/model/model_61.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_61.xml */ +N_("2880 x 720 DPI"); /* ./escp2/model/model_61.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_61.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_61.xml */ +N_("Black"); /* ./escp2/model/model_62.xml */ +N_("Cyan"); /* ./escp2/model/model_62.xml */ +N_("Magenta"); /* ./escp2/model/model_62.xml */ +N_("Yellow"); /* ./escp2/model/model_62.xml */ +N_("Light Cyan"); /* ./escp2/model/model_62.xml */ +N_("Light Magenta"); /* ./escp2/model/model_62.xml */ +N_("Cyan"); /* ./escp2/model/model_65.xml */ +N_("Magenta"); /* ./escp2/model/model_65.xml */ +N_("Yellow"); /* ./escp2/model/model_65.xml */ +N_("Black"); /* ./escp2/model/model_65.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_65.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/model_65.xml */ +N_("360 DPI"); /* ./escp2/model/model_65.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_65.xml */ +N_("720 DPI"); /* ./escp2/model/model_65.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_65.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_65.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_65.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_65.xml */ +N_("Black"); /* ./escp2/model/model_66.xml */ +N_("Cyan"); /* ./escp2/model/model_66.xml */ +N_("Magenta"); /* ./escp2/model/model_66.xml */ +N_("Yellow"); /* ./escp2/model/model_66.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_66.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/model_66.xml */ +N_("360 DPI"); /* ./escp2/model/model_66.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_66.xml */ +N_("720 DPI"); /* ./escp2/model/model_66.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_66.xml */ +N_("2880 x 720 DPI"); /* ./escp2/model/model_66.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_66.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_66.xml */ +N_("Yellow"); /* ./escp2/model/model_68.xml */ +N_("Magenta"); /* ./escp2/model/model_68.xml */ +N_("Cyan"); /* ./escp2/model/model_68.xml */ +N_("Matte Black"); /* ./escp2/model/model_68.xml */ +N_("Photo Black"); /* ./escp2/model/model_68.xml */ +N_("Red"); /* ./escp2/model/model_68.xml */ +N_("Blue"); /* ./escp2/model/model_68.xml */ +N_("Gloss Optimizer"); /* ./escp2/model/model_68.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_68.xml */ +N_("360 DPI"); /* ./escp2/model/model_68.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_68.xml */ +N_("720 DPI"); /* ./escp2/model/model_68.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_68.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_68.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_68.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_68.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_68.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_68.xml */ +N_("Black"); /* ./escp2/model/model_70.xml */ +N_("Cyan"); /* ./escp2/model/model_70.xml */ +N_("Light Cyan"); /* ./escp2/model/model_70.xml */ +N_("Magenta"); /* ./escp2/model/model_70.xml */ +N_("Light Magenta"); /* ./escp2/model/model_70.xml */ +N_("Yellow"); /* ./escp2/model/model_70.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_70.xml */ +N_("360 DPI"); /* ./escp2/model/model_70.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_70.xml */ +N_("720 DPI"); /* ./escp2/model/model_70.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_70.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_70.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_70.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_70.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_70.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_70.xml */ +N_("Light Light Black"); /* ./escp2/model/model_71.xml */ +N_("Light Magenta"); /* ./escp2/model/model_71.xml */ +N_("Light Cyan"); /* ./escp2/model/model_71.xml */ +N_("Light Black"); /* ./escp2/model/model_71.xml */ +N_("Black"); /* ./escp2/model/model_71.xml */ +N_("Cyan"); /* ./escp2/model/model_71.xml */ +N_("Magenta"); /* ./escp2/model/model_71.xml */ +N_("Yellow"); /* ./escp2/model/model_71.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_71.xml */ +N_("360 DPI"); /* ./escp2/model/model_71.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_71.xml */ +N_("720 DPI"); /* ./escp2/model/model_71.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_71.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_71.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_71.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_71.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_71.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_71.xml */ +N_("Cyan"); /* ./escp2/model/model_72.xml */ +N_("Yellow"); /* ./escp2/model/model_72.xml */ +N_("Magenta"); /* ./escp2/model/model_72.xml */ +N_("Black"); /* ./escp2/model/model_72.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_72.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/model_72.xml */ +N_("360 DPI"); /* ./escp2/model/model_72.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_72.xml */ +N_("720 DPI"); /* ./escp2/model/model_72.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_72.xml */ +N_("2880 x 720 DPI"); /* ./escp2/model/model_72.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_72.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_72.xml */ +N_("Yellow"); /* ./escp2/model/model_73.xml */ +N_("Magenta"); /* ./escp2/model/model_73.xml */ +N_("Cyan"); /* ./escp2/model/model_73.xml */ +N_("Black"); /* ./escp2/model/model_73.xml */ +N_("Red"); /* ./escp2/model/model_73.xml */ +N_("Blue"); /* ./escp2/model/model_73.xml */ +N_("Black"); /* ./escp2/model/model_74.xml */ +N_("Cyan"); /* ./escp2/model/model_74.xml */ +N_("Magenta"); /* ./escp2/model/model_74.xml */ +N_("Yellow"); /* ./escp2/model/model_74.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_74.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/model_74.xml */ +N_("360 DPI"); /* ./escp2/model/model_74.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_74.xml */ +N_("720 DPI"); /* ./escp2/model/model_74.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_74.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_74.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_74.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_74.xml */ +N_("Black"); /* ./escp2/model/model_75.xml */ +N_("Cyan"); /* ./escp2/model/model_75.xml */ +N_("Magenta"); /* ./escp2/model/model_75.xml */ +N_("Yellow"); /* ./escp2/model/model_75.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_75.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/model_75.xml */ +N_("360 DPI"); /* ./escp2/model/model_75.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_75.xml */ +N_("720 DPI"); /* ./escp2/model/model_75.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_75.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_75.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_75.xml */ +N_("Black"); /* ./escp2/model/model_76.xml */ +N_("Cyan"); /* ./escp2/model/model_76.xml */ +N_("Magenta"); /* ./escp2/model/model_76.xml */ +N_("Yellow"); /* ./escp2/model/model_76.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_76.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/model_76.xml */ +N_("360 DPI"); /* ./escp2/model/model_76.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_76.xml */ +N_("720 DPI"); /* ./escp2/model/model_76.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_76.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_76.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_76.xml */ +N_("Black"); /* ./escp2/model/model_80.xml */ +N_("Cyan"); /* ./escp2/model/model_80.xml */ +N_("Magenta"); /* ./escp2/model/model_80.xml */ +N_("Yellow"); /* ./escp2/model/model_80.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_80.xml */ +N_("360 DPI"); /* ./escp2/model/model_80.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_80.xml */ +N_("720 DPI"); /* ./escp2/model/model_80.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_80.xml */ +N_("2880 x 720 DPI"); /* ./escp2/model/model_80.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_80.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_80.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_80.xml */ +N_("Yellow"); /* ./escp2/model/model_81.xml */ +N_("Black"); /* ./escp2/model/model_81.xml */ +N_("Light Cyan"); /* ./escp2/model/model_81.xml */ +N_("Light Magenta"); /* ./escp2/model/model_81.xml */ +N_("Magenta"); /* ./escp2/model/model_81.xml */ +N_("Cyan"); /* ./escp2/model/model_81.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/model/model_81.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_81.xml */ +N_("360 DPI"); /* ./escp2/model/model_81.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_81.xml */ +N_("720 DPI"); /* ./escp2/model/model_81.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_81.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_81.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_81.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_81.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_81.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_81.xml */ +N_("Yellow"); /* ./escp2/model/model_82.xml */ +N_("Black"); /* ./escp2/model/model_82.xml */ +N_("Light Cyan"); /* ./escp2/model/model_82.xml */ +N_("Light Magenta"); /* ./escp2/model/model_82.xml */ +N_("Magenta"); /* ./escp2/model/model_82.xml */ +N_("Cyan"); /* ./escp2/model/model_82.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/model/model_82.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_82.xml */ +N_("360 DPI"); /* ./escp2/model/model_82.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_82.xml */ +N_("720 x 360 DPI Enhanced"); /* ./escp2/model/model_82.xml */ +N_("720 DPI"); /* ./escp2/model/model_82.xml */ +N_("720 DPI High Quality"); /* ./escp2/model/model_82.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_82.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_82.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_82.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_82.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_82.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_82.xml */ +N_("Yellow"); /* ./escp2/model/model_86.xml */ +N_("Magenta"); /* ./escp2/model/model_86.xml */ +N_("Cyan"); /* ./escp2/model/model_86.xml */ +N_("Black"); /* ./escp2/model/model_86.xml */ +N_("Black"); /* ./escp2/model/model_87.xml */ +N_("Cyan"); /* ./escp2/model/model_87.xml */ +N_("Magenta"); /* ./escp2/model/model_87.xml */ +N_("Yellow"); /* ./escp2/model/model_87.xml */ +N_("360 DPI"); /* ./escp2/model/model_87.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_87.xml */ +N_("720 x 360 DPI Enhanced"); /* ./escp2/model/model_87.xml */ +N_("720 DPI"); /* ./escp2/model/model_87.xml */ +N_("720 DPI High Quality"); /* ./escp2/model/model_87.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_87.xml */ +N_("1440 x 720 DPI High Quality"); /* ./escp2/model/model_87.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_87.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_87.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_87.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_87.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_87.xml */ +N_("Yellow"); /* ./escp2/model/model_91.xml */ +N_("Magenta"); /* ./escp2/model/model_91.xml */ +N_("Cyan"); /* ./escp2/model/model_91.xml */ +N_("Matte Black"); /* ./escp2/model/model_91.xml */ +N_("Photo Black"); /* ./escp2/model/model_91.xml */ +N_("Red"); /* ./escp2/model/model_91.xml */ +N_("Orange"); /* ./escp2/model/model_91.xml */ +N_("Gloss Optimizer"); /* ./escp2/model/model_91.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_91.xml */ +N_("360 DPI"); /* ./escp2/model/model_91.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_91.xml */ +N_("720 DPI"); /* ./escp2/model/model_91.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_91.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_91.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_91.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_91.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_91.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_91.xml */ +N_("Cyan"); /* ./escp2/model/model_93.xml */ +N_("Magenta"); /* ./escp2/model/model_93.xml */ +N_("Yellow"); /* ./escp2/model/model_93.xml */ +N_("Black"); /* ./escp2/model/model_93.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_93.xml */ +N_("360 DPI"); /* ./escp2/model/model_93.xml */ +N_("360 DPI Enhanced"); /* ./escp2/model/model_93.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_93.xml */ +N_("720 x 360 DPI Enhanced"); /* ./escp2/model/model_93.xml */ +N_("720 DPI"); /* ./escp2/model/model_93.xml */ +N_("720 DPI High Quality"); /* ./escp2/model/model_93.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_93.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_93.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_93.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_93.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_93.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_93.xml */ +N_("Cyan"); /* ./escp2/model/model_94.xml */ +N_("Magenta"); /* ./escp2/model/model_94.xml */ +N_("Yellow"); /* ./escp2/model/model_94.xml */ +N_("Black"); /* ./escp2/model/model_94.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_94.xml */ +N_("360 DPI"); /* ./escp2/model/model_94.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_94.xml */ +N_("720 DPI"); /* ./escp2/model/model_94.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_94.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_94.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_94.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_94.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_94.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_94.xml */ +N_("Cyan"); /* ./escp2/model/model_95.xml */ +N_("Magenta"); /* ./escp2/model/model_95.xml */ +N_("Yellow"); /* ./escp2/model/model_95.xml */ +N_("Black"); /* ./escp2/model/model_95.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_95.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/model/model_95.xml */ +N_("360 DPI"); /* ./escp2/model/model_95.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_95.xml */ +N_("720 DPI"); /* ./escp2/model/model_95.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_95.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_95.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_95.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_95.xml */ +N_("Cyan"); /* ./escp2/model/model_96.xml */ +N_("Yellow"); /* ./escp2/model/model_96.xml */ +N_("Light Cyan"); /* ./escp2/model/model_96.xml */ +N_("Black"); /* ./escp2/model/model_96.xml */ +N_("Magenta"); /* ./escp2/model/model_96.xml */ +N_("Light Magenta"); /* ./escp2/model/model_96.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_96.xml */ +N_("360 DPI"); /* ./escp2/model/model_96.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_96.xml */ +N_("720 DPI"); /* ./escp2/model/model_96.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_96.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_96.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_96.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_96.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_96.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_96.xml */ +N_("Yellow"); /* ./escp2/model/model_97.xml */ +N_("Black"); /* ./escp2/model/model_97.xml */ +N_("Light Cyan"); /* ./escp2/model/model_97.xml */ +N_("Light Magenta"); /* ./escp2/model/model_97.xml */ +N_("Magenta"); /* ./escp2/model/model_97.xml */ +N_("Cyan"); /* ./escp2/model/model_97.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/model/model_97.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_97.xml */ +N_("360 DPI"); /* ./escp2/model/model_97.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_97.xml */ +N_("720 DPI"); /* ./escp2/model/model_97.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_97.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_97.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_97.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_97.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_97.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_97.xml */ +N_("Light Light Black"); /* ./escp2/model/model_98.xml */ +N_("Vivid Light Magenta"); /* ./escp2/model/model_98.xml */ +N_("Light Cyan"); /* ./escp2/model/model_98.xml */ +N_("Light Black"); /* ./escp2/model/model_98.xml */ +N_("Black"); /* ./escp2/model/model_98.xml */ +N_("Cyan"); /* ./escp2/model/model_98.xml */ +N_("Vivid Magenta"); /* ./escp2/model/model_98.xml */ +N_("Yellow"); /* ./escp2/model/model_98.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_98.xml */ +N_("360 DPI"); /* ./escp2/model/model_98.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_98.xml */ +N_("720 DPI"); /* ./escp2/model/model_98.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_98.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_98.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_98.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_98.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_98.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_98.xml */ +N_("Black 1"); /* ./escp2/model/model_100.xml */ +N_("Black 2"); /* ./escp2/model/model_100.xml */ +N_("Magenta"); /* ./escp2/model/model_100.xml */ +N_("Cyan"); /* ./escp2/model/model_100.xml */ +N_("Yellow"); /* ./escp2/model/model_100.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_100.xml */ +N_("360 DPI"); /* ./escp2/model/model_100.xml */ +N_("360 DPI Enhanced"); /* ./escp2/model/model_100.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_100.xml */ +N_("720 x 360 DPI Enhanced"); /* ./escp2/model/model_100.xml */ +N_("720 DPI"); /* ./escp2/model/model_100.xml */ +N_("720 DPI High Quality"); /* ./escp2/model/model_100.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_100.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_100.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_100.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_100.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_100.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_100.xml */ +N_("Cyan"); /* ./escp2/model/model_101.xml */ +N_("Magenta"); /* ./escp2/model/model_101.xml */ +N_("Yellow"); /* ./escp2/model/model_101.xml */ +N_("Black"); /* ./escp2/model/model_101.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_101.xml */ +N_("360 DPI"); /* ./escp2/model/model_101.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_101.xml */ +N_("720 DPI"); /* ./escp2/model/model_101.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_101.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_101.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_101.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_101.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_101.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_101.xml */ +N_("Light Light Black"); /* ./escp2/model/model_108.xml */ +N_("Light Magenta"); /* ./escp2/model/model_108.xml */ +N_("Light Cyan"); /* ./escp2/model/model_108.xml */ +N_("Light Black"); /* ./escp2/model/model_108.xml */ +N_("Black"); /* ./escp2/model/model_108.xml */ +N_("Cyan"); /* ./escp2/model/model_108.xml */ +N_("Magenta"); /* ./escp2/model/model_108.xml */ +N_("Yellow"); /* ./escp2/model/model_108.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_115.xml */ +N_("360 DPI"); /* ./escp2/model/model_115.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_115.xml */ +N_("720 DPI"); /* ./escp2/model/model_115.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_115.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_115.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_115.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_115.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_115.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_115.xml */ +N_("Cyan"); /* ./escp2/model/model_121.xml */ +N_("Magenta"); /* ./escp2/model/model_121.xml */ +N_("Yellow"); /* ./escp2/model/model_121.xml */ +N_("Black"); /* ./escp2/model/model_121.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_121.xml */ +N_("360 DPI"); /* ./escp2/model/model_121.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_121.xml */ +N_("720 DPI"); /* ./escp2/model/model_121.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_121.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_121.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_121.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_121.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_121.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_121.xml */ +N_("Yellow"); /* ./escp2/model/model_122.xml */ +N_("Black"); /* ./escp2/model/model_122.xml */ +N_("Light Cyan"); /* ./escp2/model/model_122.xml */ +N_("Light Magenta"); /* ./escp2/model/model_122.xml */ +N_("Magenta"); /* ./escp2/model/model_122.xml */ +N_("Cyan"); /* ./escp2/model/model_122.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/model/model_122.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_122.xml */ +N_("360 DPI"); /* ./escp2/model/model_122.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_122.xml */ +N_("720 DPI"); /* ./escp2/model/model_122.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_122.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_122.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_122.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_122.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_122.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_122.xml */ +N_("Cyan"); /* ./escp2/model/model_123.xml */ +N_("Magenta"); /* ./escp2/model/model_123.xml */ +N_("Yellow"); /* ./escp2/model/model_123.xml */ +N_("Black"); /* ./escp2/model/model_123.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/model/model_123.xml */ +N_("360 DPI"); /* ./escp2/model/model_123.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_123.xml */ +N_("720 DPI"); /* ./escp2/model/model_123.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_123.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_123.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_123.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_123.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_123.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_123.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_130.xml */ +N_("360 DPI"); /* ./escp2/model/model_130.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_130.xml */ +N_("720 DPI"); /* ./escp2/model/model_130.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_130.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_130.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_130.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_130.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_130.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_130.xml */ +N_("Light Black"); /* ./escp2/model/model_132.xml */ +N_("Black"); /* ./escp2/model/model_132.xml */ +N_("Cyan"); /* ./escp2/model/model_132.xml */ +N_("Magenta"); /* ./escp2/model/model_132.xml */ +N_("Yellow"); /* ./escp2/model/model_132.xml */ +N_("Red"); /* ./escp2/model/model_132.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/model/model_132.xml */ +N_("360 DPI"); /* ./escp2/model/model_132.xml */ +N_("720 x 360 DPI"); /* ./escp2/model/model_132.xml */ +N_("720 DPI"); /* ./escp2/model/model_132.xml */ +N_("1440 x 720 DPI"); /* ./escp2/model/model_132.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/model/model_132.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/model/model_132.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/model/model_132.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/model/model_132.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/model/model_132.xml */ +N_("Plain Paper"); /* ./escp2/media/artisan.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/artisan.xml */ +N_("Bright White Paper"); /* ./escp2/media/artisan.xml */ +N_("Postcard"); /* ./escp2/media/artisan.xml */ +N_("Glossy Film"); /* ./escp2/media/artisan.xml */ +N_("Transparencies"); /* ./escp2/media/artisan.xml */ +N_("Envelopes"); /* ./escp2/media/artisan.xml */ +N_("Back Light Film"); /* ./escp2/media/artisan.xml */ +N_("Matte Paper"); /* ./escp2/media/artisan.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/artisan.xml */ +N_("Premium Presentation Paper Matte"); /* ./escp2/media/artisan.xml */ +N_("Inkjet Paper"); /* ./escp2/media/artisan.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/artisan.xml */ +N_("Photo Paper"); /* ./escp2/media/artisan.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/artisan.xml */ +N_("Ultra Glossy Photo Paper"); /* ./escp2/media/artisan.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/artisan.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/artisan.xml */ +N_("Ultra Premium Photo Paper Luster"); /* ./escp2/media/artisan.xml */ +N_("CD or DVD"); /* ./escp2/media/artisan.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/artisan.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/artisan.xml */ +N_("ColorLife Paper"); /* ./escp2/media/artisan.xml */ +N_("Other"); /* ./escp2/media/artisan.xml */ +N_("Plain Paper"); /* ./escp2/media/b500.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/b500.xml */ +N_("Bright White Paper"); /* ./escp2/media/b500.xml */ +N_("Postcard"); /* ./escp2/media/b500.xml */ +N_("Transparencies"); /* ./escp2/media/b500.xml */ +N_("Envelopes"); /* ./escp2/media/b500.xml */ +N_("Back Light Film"); /* ./escp2/media/b500.xml */ +N_("Matte Paper"); /* ./escp2/media/b500.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/b500.xml */ +N_("Premium Presentation Paper Matte"); /* ./escp2/media/b500.xml */ +N_("Inkjet Paper"); /* ./escp2/media/b500.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/b500.xml */ +N_("Photo Paper"); /* ./escp2/media/b500.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/b500.xml */ +N_("Premium Glossy Photo Paper 170 wt"); /* ./escp2/media/b500.xml */ +N_("Premium Glossy Photo Paper 250 wt"); /* ./escp2/media/b500.xml */ +N_("Ultra Glossy Photo Paper"); /* ./escp2/media/b500.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/b500.xml */ +N_("Premium Semigloss Photo Paper 170 wt"); /* ./escp2/media/b500.xml */ +N_("Premium Semigloss Photo Paper 250 wt"); /* ./escp2/media/b500.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/b500.xml */ +N_("Premium Luster Photo Paper 250 wt"); /* ./escp2/media/b500.xml */ +N_("Ultra Premium Photo Paper Luster"); /* ./escp2/media/b500.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/b500.xml */ +N_("ColorLife Paper"); /* ./escp2/media/b500.xml */ +N_("Other"); /* ./escp2/media/b500.xml */ +N_("Plain Paper"); /* ./escp2/media/c120.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/c120.xml */ +N_("Postcard"); /* ./escp2/media/c120.xml */ +N_("Glossy Film"); /* ./escp2/media/c120.xml */ +N_("Transparencies"); /* ./escp2/media/c120.xml */ +N_("Envelopes"); /* ./escp2/media/c120.xml */ +N_("Back Light Film"); /* ./escp2/media/c120.xml */ +N_("Matte Paper"); /* ./escp2/media/c120.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/c120.xml */ +N_("Inkjet Paper"); /* ./escp2/media/c120.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/c120.xml */ +N_("Photo Paper"); /* ./escp2/media/c120.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/c120.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/c120.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/c120.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/c120.xml */ +N_("ColorLife Paper"); /* ./escp2/media/c120.xml */ +N_("Other"); /* ./escp2/media/c120.xml */ +N_("Plain Paper"); /* ./escp2/media/c64.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/c64.xml */ +N_("Quadtone"); /* ./escp2/media/c64.xml */ +N_("MISQuadtone"); /* ./escp2/media/c64.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/c64.xml */ +N_("Postcard"); /* ./escp2/media/c64.xml */ +N_("Glossy Film"); /* ./escp2/media/c64.xml */ +N_("Transparencies"); /* ./escp2/media/c64.xml */ +N_("Envelopes"); /* ./escp2/media/c64.xml */ +N_("Back Light Film"); /* ./escp2/media/c64.xml */ +N_("Matte Paper"); /* ./escp2/media/c64.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/c64.xml */ +N_("Inkjet Paper"); /* ./escp2/media/c64.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/c64.xml */ +N_("Photo Paper"); /* ./escp2/media/c64.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/c64.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/c64.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/c64.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/c64.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/c64.xml */ +N_("ColorLife Paper"); /* ./escp2/media/c64.xml */ +N_("Other"); /* ./escp2/media/c64.xml */ +N_("Plain Paper"); /* ./escp2/media/c80.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/c80.xml */ +N_("Quadtone"); /* ./escp2/media/c80.xml */ +N_("MISQuadtone"); /* ./escp2/media/c80.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/c80.xml */ +N_("Postcard"); /* ./escp2/media/c80.xml */ +N_("Glossy Film"); /* ./escp2/media/c80.xml */ +N_("Transparencies"); /* ./escp2/media/c80.xml */ +N_("Envelopes"); /* ./escp2/media/c80.xml */ +N_("Back Light Film"); /* ./escp2/media/c80.xml */ +N_("Matte Paper"); /* ./escp2/media/c80.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/c80.xml */ +N_("Inkjet Paper"); /* ./escp2/media/c80.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/c80.xml */ +N_("Photo Paper"); /* ./escp2/media/c80.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/c80.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/c80.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/c80.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/c80.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/c80.xml */ +N_("ColorLife Paper"); /* ./escp2/media/c80.xml */ +N_("Other"); /* ./escp2/media/c80.xml */ +N_("Plain Paper"); /* ./escp2/media/c82.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/c82.xml */ +N_("Quadtone"); /* ./escp2/media/c82.xml */ +N_("MISQuadtone"); /* ./escp2/media/c82.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/c82.xml */ +N_("Postcard"); /* ./escp2/media/c82.xml */ +N_("Glossy Film"); /* ./escp2/media/c82.xml */ +N_("Transparencies"); /* ./escp2/media/c82.xml */ +N_("Envelopes"); /* ./escp2/media/c82.xml */ +N_("Back Light Film"); /* ./escp2/media/c82.xml */ +N_("Matte Paper"); /* ./escp2/media/c82.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/c82.xml */ +N_("Inkjet Paper"); /* ./escp2/media/c82.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/c82.xml */ +N_("Photo Paper"); /* ./escp2/media/c82.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/c82.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/c82.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/c82.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/c82.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/c82.xml */ +N_("ColorLife Paper"); /* ./escp2/media/c82.xml */ +N_("Other"); /* ./escp2/media/c82.xml */ +N_("Plain Paper"); /* ./escp2/media/claria.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/claria.xml */ +N_("Quadtone"); /* ./escp2/media/claria.xml */ +N_("MISQuadtone"); /* ./escp2/media/claria.xml */ +N_("MIS Hextone"); /* ./escp2/media/claria.xml */ +N_("Bright White Paper"); /* ./escp2/media/claria.xml */ +N_("Postcard"); /* ./escp2/media/claria.xml */ +N_("Glossy Film"); /* ./escp2/media/claria.xml */ +N_("Transparencies"); /* ./escp2/media/claria.xml */ +N_("Envelopes"); /* ./escp2/media/claria.xml */ +N_("Back Light Film"); /* ./escp2/media/claria.xml */ +N_("Matte Paper"); /* ./escp2/media/claria.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/claria.xml */ +N_("Premium Presentation Paper Matte"); /* ./escp2/media/claria.xml */ +N_("Inkjet Paper"); /* ./escp2/media/claria.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/claria.xml */ +N_("Photo Paper"); /* ./escp2/media/claria.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/claria.xml */ +N_("Ultra Glossy Photo Paper"); /* ./escp2/media/claria.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/claria.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/claria.xml */ +N_("Ultra Premium Photo Paper Luster"); /* ./escp2/media/claria.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/claria.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/claria.xml */ +N_("ColorLife Paper"); /* ./escp2/media/claria.xml */ +N_("Other"); /* ./escp2/media/claria.xml */ +N_("Plain Paper"); /* ./escp2/media/claria_xp.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/claria_xp.xml */ +N_("Quadtone"); /* ./escp2/media/claria_xp.xml */ +N_("MISQuadtone"); /* ./escp2/media/claria_xp.xml */ +N_("MIS Hextone"); /* ./escp2/media/claria_xp.xml */ +N_("Bright White Paper"); /* ./escp2/media/claria_xp.xml */ +N_("Postcard"); /* ./escp2/media/claria_xp.xml */ +N_("Glossy Film"); /* ./escp2/media/claria_xp.xml */ +N_("Transparencies"); /* ./escp2/media/claria_xp.xml */ +N_("Envelopes"); /* ./escp2/media/claria_xp.xml */ +N_("Back Light Film"); /* ./escp2/media/claria_xp.xml */ +N_("Matte Paper"); /* ./escp2/media/claria_xp.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/claria_xp.xml */ +N_("Premium Presentation Paper Matte"); /* ./escp2/media/claria_xp.xml */ +N_("Inkjet Paper"); /* ./escp2/media/claria_xp.xml */ +N_("CD or DVD"); /* ./escp2/media/claria_xp.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/claria_xp.xml */ +N_("Photo Paper"); /* ./escp2/media/claria_xp.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/claria_xp.xml */ +N_("Ultra Glossy Photo Paper"); /* ./escp2/media/claria_xp.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/claria_xp.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/claria_xp.xml */ +N_("Ultra Premium Photo Paper Luster"); /* ./escp2/media/claria_xp.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/claria_xp.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/claria_xp.xml */ +N_("ColorLife Paper"); /* ./escp2/media/claria_xp.xml */ +N_("Other"); /* ./escp2/media/claria_xp.xml */ +N_("Plain Paper"); /* ./escp2/media/claria1400.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/claria1400.xml */ +N_("Quadtone"); /* ./escp2/media/claria1400.xml */ +N_("MISQuadtone"); /* ./escp2/media/claria1400.xml */ +N_("MIS Hextone"); /* ./escp2/media/claria1400.xml */ +N_("Bright White Paper"); /* ./escp2/media/claria1400.xml */ +N_("Postcard"); /* ./escp2/media/claria1400.xml */ +N_("Glossy Film"); /* ./escp2/media/claria1400.xml */ +N_("Transparencies"); /* ./escp2/media/claria1400.xml */ +N_("Envelopes"); /* ./escp2/media/claria1400.xml */ +N_("Back Light Film"); /* ./escp2/media/claria1400.xml */ +N_("Matte Paper"); /* ./escp2/media/claria1400.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/claria1400.xml */ +N_("Premium Presentation Paper Matte"); /* ./escp2/media/claria1400.xml */ +N_("Inkjet Paper"); /* ./escp2/media/claria1400.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/claria1400.xml */ +N_("Photo Paper"); /* ./escp2/media/claria1400.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/claria1400.xml */ +N_("Ultra Glossy Photo Paper"); /* ./escp2/media/claria1400.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/claria1400.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/claria1400.xml */ +N_("Ultra Premium Photo Paper Luster"); /* ./escp2/media/claria1400.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/claria1400.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/claria1400.xml */ +N_("ColorLife Paper"); /* ./escp2/media/claria1400.xml */ +N_("Other"); /* ./escp2/media/claria1400.xml */ +N_("Plain Paper"); /* ./escp2/media/cmy.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/cmy.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/cmy.xml */ +N_("Postcard"); /* ./escp2/media/cmy.xml */ +N_("Glossy Film"); /* ./escp2/media/cmy.xml */ +N_("Transparencies"); /* ./escp2/media/cmy.xml */ +N_("Envelopes"); /* ./escp2/media/cmy.xml */ +N_("Back Light Film"); /* ./escp2/media/cmy.xml */ +N_("Matte Paper"); /* ./escp2/media/cmy.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/cmy.xml */ +N_("Inkjet Paper"); /* ./escp2/media/cmy.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/cmy.xml */ +N_("Photo Paper"); /* ./escp2/media/cmy.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/cmy.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/cmy.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/cmy.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/cmy.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/cmy.xml */ +N_("ColorLife Paper"); /* ./escp2/media/cmy.xml */ +N_("Other"); /* ./escp2/media/cmy.xml */ +N_("Plain Paper"); /* ./escp2/media/cmykrb.xml */ +N_("Photo Black"); /* ./escp2/media/cmykrb.xml */ +N_("Matte Black"); /* ./escp2/media/cmykrb.xml */ +N_("Postcard"); /* ./escp2/media/cmykrb.xml */ +N_("Glossy Film"); /* ./escp2/media/cmykrb.xml */ +N_("Transparencies"); /* ./escp2/media/cmykrb.xml */ +N_("Envelopes"); /* ./escp2/media/cmykrb.xml */ +N_("Back Light Film"); /* ./escp2/media/cmykrb.xml */ +N_("Matte Paper"); /* ./escp2/media/cmykrb.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/cmykrb.xml */ +N_("Inkjet Paper"); /* ./escp2/media/cmykrb.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/cmykrb.xml */ +N_("Photo Paper"); /* ./escp2/media/cmykrb.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/cmykrb.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/cmykrb.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/cmykrb.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/cmykrb.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/cmykrb.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/cmykrb.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/cmykrb.xml */ +N_("ColorLife Paper"); /* ./escp2/media/cmykrb.xml */ +N_("Other"); /* ./escp2/media/cmykrb.xml */ +N_("Plain Paper"); /* ./escp2/media/cmykro.xml */ +N_("Photo Black"); /* ./escp2/media/cmykro.xml */ +N_("Matte Black"); /* ./escp2/media/cmykro.xml */ +N_("Postcard"); /* ./escp2/media/cmykro.xml */ +N_("Glossy Film"); /* ./escp2/media/cmykro.xml */ +N_("Transparencies"); /* ./escp2/media/cmykro.xml */ +N_("Envelopes"); /* ./escp2/media/cmykro.xml */ +N_("Back Light Film"); /* ./escp2/media/cmykro.xml */ +N_("Matte Paper"); /* ./escp2/media/cmykro.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/cmykro.xml */ +N_("Inkjet Paper"); /* ./escp2/media/cmykro.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/cmykro.xml */ +N_("Photo Paper"); /* ./escp2/media/cmykro.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/cmykro.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/cmykro.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/cmykro.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/cmykro.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/cmykro.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/cmykro.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/cmykro.xml */ +N_("ColorLife Paper"); /* ./escp2/media/cmykro.xml */ +N_("Other"); /* ./escp2/media/cmykro.xml */ +N_("Plain Paper"); /* ./escp2/media/cx3650.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/cx3650.xml */ +N_("Quadtone"); /* ./escp2/media/cx3650.xml */ +N_("MISQuadtone"); /* ./escp2/media/cx3650.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/cx3650.xml */ +N_("Postcard"); /* ./escp2/media/cx3650.xml */ +N_("Glossy Film"); /* ./escp2/media/cx3650.xml */ +N_("Transparencies"); /* ./escp2/media/cx3650.xml */ +N_("Envelopes"); /* ./escp2/media/cx3650.xml */ +N_("Back Light Film"); /* ./escp2/media/cx3650.xml */ +N_("Matte Paper"); /* ./escp2/media/cx3650.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/cx3650.xml */ +N_("Inkjet Paper"); /* ./escp2/media/cx3650.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/cx3650.xml */ +N_("Photo Paper"); /* ./escp2/media/cx3650.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/cx3650.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/cx3650.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/cx3650.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/cx3650.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/cx3650.xml */ +N_("ColorLife Paper"); /* ./escp2/media/cx3650.xml */ +N_("Other"); /* ./escp2/media/cx3650.xml */ +N_("Plain Paper"); /* ./escp2/media/f360.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/f360.xml */ +N_("Quadtone"); /* ./escp2/media/f360.xml */ +N_("MISQuadtone"); /* ./escp2/media/f360.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/f360.xml */ +N_("Postcard"); /* ./escp2/media/f360.xml */ +N_("Glossy Film"); /* ./escp2/media/f360.xml */ +N_("Transparencies"); /* ./escp2/media/f360.xml */ +N_("Envelopes"); /* ./escp2/media/f360.xml */ +N_("Back Light Film"); /* ./escp2/media/f360.xml */ +N_("Matte Paper"); /* ./escp2/media/f360.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/f360.xml */ +N_("Inkjet Paper"); /* ./escp2/media/f360.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/f360.xml */ +N_("Photo Paper"); /* ./escp2/media/f360.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/f360.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/f360.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/f360.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/f360.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/f360.xml */ +N_("ColorLife Paper"); /* ./escp2/media/f360.xml */ +N_("Other"); /* ./escp2/media/f360.xml */ +N_("Plain Paper"); /* ./escp2/media/f360_photo.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/f360_photo.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/f360_photo.xml */ +N_("Postcard"); /* ./escp2/media/f360_photo.xml */ +N_("Glossy Film"); /* ./escp2/media/f360_photo.xml */ +N_("Transparencies"); /* ./escp2/media/f360_photo.xml */ +N_("Envelopes"); /* ./escp2/media/f360_photo.xml */ +N_("Back Light Film"); /* ./escp2/media/f360_photo.xml */ +N_("Matte Paper"); /* ./escp2/media/f360_photo.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/f360_photo.xml */ +N_("Inkjet Paper"); /* ./escp2/media/f360_photo.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/f360_photo.xml */ +N_("Photo Paper"); /* ./escp2/media/f360_photo.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/f360_photo.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/f360_photo.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/f360_photo.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/f360_photo.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/f360_photo.xml */ +N_("ColorLife Paper"); /* ./escp2/media/f360_photo.xml */ +N_("Other"); /* ./escp2/media/f360_photo.xml */ +N_("Plain Paper"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Postcard"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Glossy Film"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Transparencies"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Envelopes"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Back Light Film"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Matte Paper"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Inkjet Paper"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Photo Paper"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("ColorLife Paper"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Other"); /* ./escp2/media/f360_photo7_japan.xml */ +N_("Plain Paper"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("UltraChrome Photo Black"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("UltraChrome Matte Black"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Postcard"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Glossy Film"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Transparencies"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Envelopes"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Back Light Film"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Matte Paper"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Inkjet Paper"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Photo Paper"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("ColorLife Paper"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Other"); /* ./escp2/media/f360_ultrachrome.xml */ +N_("Plain Paper"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("UltraChrome Photo Black"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("UltraChrome Matte Black"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Postcard"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Glossy Film"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Transparencies"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Envelopes"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Back Light Film"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Matte Paper"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Inkjet Paper"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Photo Paper"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("ColorLife Paper"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Other"); /* ./escp2/media/f360_ultrachrome_k3.xml */ +N_("Plain Paper"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("UltraChrome Photo Black"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("UltraChrome Matte Black"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Postcard"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Glossy Film"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Transparencies"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Envelopes"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Back Light Film"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Matte Paper"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Inkjet Paper"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Photo Paper"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("ColorLife Paper"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Other"); /* ./escp2/media/f360_ultrachrome_k3v.xml */ +N_("Plain Paper"); /* ./escp2/media/nx100.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/nx100.xml */ +N_("Postcard"); /* ./escp2/media/nx100.xml */ +N_("Glossy Film"); /* ./escp2/media/nx100.xml */ +N_("Transparencies"); /* ./escp2/media/nx100.xml */ +N_("Envelopes"); /* ./escp2/media/nx100.xml */ +N_("Back Light Film"); /* ./escp2/media/nx100.xml */ +N_("Matte Paper"); /* ./escp2/media/nx100.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/nx100.xml */ +N_("Inkjet Paper"); /* ./escp2/media/nx100.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/nx100.xml */ +N_("Photo Paper"); /* ./escp2/media/nx100.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/nx100.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/nx100.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/nx100.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/nx100.xml */ +N_("ColorLife Paper"); /* ./escp2/media/nx100.xml */ +N_("Other"); /* ./escp2/media/nx100.xml */ +N_("Plain Paper"); /* ./escp2/media/photo_gen0.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/photo_gen0.xml */ +N_("Quadtone"); /* ./escp2/media/photo_gen0.xml */ +N_("MISQuadtone"); /* ./escp2/media/photo_gen0.xml */ +N_("MIS Hextone"); /* ./escp2/media/photo_gen0.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/photo_gen0.xml */ +N_("Postcard"); /* ./escp2/media/photo_gen0.xml */ +N_("Glossy Film"); /* ./escp2/media/photo_gen0.xml */ +N_("Transparencies"); /* ./escp2/media/photo_gen0.xml */ +N_("Envelopes"); /* ./escp2/media/photo_gen0.xml */ +N_("Back Light Film"); /* ./escp2/media/photo_gen0.xml */ +N_("Matte Paper"); /* ./escp2/media/photo_gen0.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/photo_gen0.xml */ +N_("Inkjet Paper"); /* ./escp2/media/photo_gen0.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/photo_gen0.xml */ +N_("Photo Paper"); /* ./escp2/media/photo_gen0.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/photo_gen0.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/photo_gen0.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/photo_gen0.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/photo_gen0.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/photo_gen0.xml */ +N_("ColorLife Paper"); /* ./escp2/media/photo_gen0.xml */ +N_("Other"); /* ./escp2/media/photo_gen0.xml */ +N_("Plain Paper"); /* ./escp2/media/photo_gen1.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/photo_gen1.xml */ +N_("Quadtone"); /* ./escp2/media/photo_gen1.xml */ +N_("MISQuadtone"); /* ./escp2/media/photo_gen1.xml */ +N_("MIS Hextone"); /* ./escp2/media/photo_gen1.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/photo_gen1.xml */ +N_("Postcard"); /* ./escp2/media/photo_gen1.xml */ +N_("Glossy Film"); /* ./escp2/media/photo_gen1.xml */ +N_("Transparencies"); /* ./escp2/media/photo_gen1.xml */ +N_("Envelopes"); /* ./escp2/media/photo_gen1.xml */ +N_("Back Light Film"); /* ./escp2/media/photo_gen1.xml */ +N_("Matte Paper"); /* ./escp2/media/photo_gen1.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/photo_gen1.xml */ +N_("Inkjet Paper"); /* ./escp2/media/photo_gen1.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/photo_gen1.xml */ +N_("Photo Paper"); /* ./escp2/media/photo_gen1.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/photo_gen1.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/photo_gen1.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/photo_gen1.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/photo_gen1.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/photo_gen1.xml */ +N_("ColorLife Paper"); /* ./escp2/media/photo_gen1.xml */ +N_("Other"); /* ./escp2/media/photo_gen1.xml */ +N_("Plain Paper"); /* ./escp2/media/photo_gen2.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/photo_gen2.xml */ +N_("Quadtone"); /* ./escp2/media/photo_gen2.xml */ +N_("MISQuadtone"); /* ./escp2/media/photo_gen2.xml */ +N_("MIS Hextone"); /* ./escp2/media/photo_gen2.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/photo_gen2.xml */ +N_("Postcard"); /* ./escp2/media/photo_gen2.xml */ +N_("Glossy Film"); /* ./escp2/media/photo_gen2.xml */ +N_("Transparencies"); /* ./escp2/media/photo_gen2.xml */ +N_("Envelopes"); /* ./escp2/media/photo_gen2.xml */ +N_("Back Light Film"); /* ./escp2/media/photo_gen2.xml */ +N_("Matte Paper"); /* ./escp2/media/photo_gen2.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/photo_gen2.xml */ +N_("Inkjet Paper"); /* ./escp2/media/photo_gen2.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/photo_gen2.xml */ +N_("Photo Paper"); /* ./escp2/media/photo_gen2.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/photo_gen2.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/photo_gen2.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/photo_gen2.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/photo_gen2.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/photo_gen2.xml */ +N_("ColorLife Paper"); /* ./escp2/media/photo_gen2.xml */ +N_("Other"); /* ./escp2/media/photo_gen2.xml */ +N_("Plain Paper"); /* ./escp2/media/photo_gen3.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/photo_gen3.xml */ +N_("Quadtone"); /* ./escp2/media/photo_gen3.xml */ +N_("MISQuadtone"); /* ./escp2/media/photo_gen3.xml */ +N_("MIS Hextone"); /* ./escp2/media/photo_gen3.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/photo_gen3.xml */ +N_("Postcard"); /* ./escp2/media/photo_gen3.xml */ +N_("Glossy Film"); /* ./escp2/media/photo_gen3.xml */ +N_("Transparencies"); /* ./escp2/media/photo_gen3.xml */ +N_("Envelopes"); /* ./escp2/media/photo_gen3.xml */ +N_("Back Light Film"); /* ./escp2/media/photo_gen3.xml */ +N_("Matte Paper"); /* ./escp2/media/photo_gen3.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/photo_gen3.xml */ +N_("Inkjet Paper"); /* ./escp2/media/photo_gen3.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/photo_gen3.xml */ +N_("Photo Paper"); /* ./escp2/media/photo_gen3.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/photo_gen3.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/photo_gen3.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/photo_gen3.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/photo_gen3.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/photo_gen3.xml */ +N_("ColorLife Paper"); /* ./escp2/media/photo_gen3.xml */ +N_("Other"); /* ./escp2/media/photo_gen3.xml */ +N_("Plain Paper"); /* ./escp2/media/photo_gen3_4.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Quadtone"); /* ./escp2/media/photo_gen3_4.xml */ +N_("MISQuadtone"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Hextone"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Postcard"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Glossy Film"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Transparencies"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Envelopes"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Back Light Film"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Matte Paper"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Inkjet Paper"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Photo Paper"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/photo_gen3_4.xml */ +N_("ColorLife Paper"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Other"); /* ./escp2/media/photo_gen3_4.xml */ +N_("Plain Paper"); /* ./escp2/media/photo_gen4.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/photo_gen4.xml */ +N_("Postcard"); /* ./escp2/media/photo_gen4.xml */ +N_("Glossy Film"); /* ./escp2/media/photo_gen4.xml */ +N_("Transparencies"); /* ./escp2/media/photo_gen4.xml */ +N_("Envelopes"); /* ./escp2/media/photo_gen4.xml */ +N_("Back Light Film"); /* ./escp2/media/photo_gen4.xml */ +N_("Matte Paper"); /* ./escp2/media/photo_gen4.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/photo_gen4.xml */ +N_("Inkjet Paper"); /* ./escp2/media/photo_gen4.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/photo_gen4.xml */ +N_("Photo Paper"); /* ./escp2/media/photo_gen4.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/photo_gen4.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/photo_gen4.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/photo_gen4.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/photo_gen4.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/photo_gen4.xml */ +N_("ColorLife Paper"); /* ./escp2/media/photo_gen4.xml */ +N_("Other"); /* ./escp2/media/photo_gen4.xml */ +N_("Plain Paper"); /* ./escp2/media/photo_pigment.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/photo_pigment.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/photo_pigment.xml */ +N_("Postcard"); /* ./escp2/media/photo_pigment.xml */ +N_("Glossy Film"); /* ./escp2/media/photo_pigment.xml */ +N_("Transparencies"); /* ./escp2/media/photo_pigment.xml */ +N_("Envelopes"); /* ./escp2/media/photo_pigment.xml */ +N_("Back Light Film"); /* ./escp2/media/photo_pigment.xml */ +N_("Matte Paper"); /* ./escp2/media/photo_pigment.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/photo_pigment.xml */ +N_("Inkjet Paper"); /* ./escp2/media/photo_pigment.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/photo_pigment.xml */ +N_("Photo Paper"); /* ./escp2/media/photo_pigment.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/photo_pigment.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/photo_pigment.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/photo_pigment.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/photo_pigment.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/photo_pigment.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/photo_pigment.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/photo_pigment.xml */ +N_("ColorLife Paper"); /* ./escp2/media/photo_pigment.xml */ +N_("Other"); /* ./escp2/media/photo_pigment.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/picturemate_4.xml */ +N_("Standard"); /* ./escp2/media/picturemate_4.xml */ +N_("Other"); /* ./escp2/media/picturemate_4.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/picturemate_6.xml */ +N_("Standard"); /* ./escp2/media/picturemate_6.xml */ +N_("Other"); /* ./escp2/media/picturemate_6.xml */ +N_("Plain Paper"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Photo Black"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Matte Black"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Postcard"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Glossy Film"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Transparencies"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Envelopes"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Back Light Film"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Matte Paper"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Inkjet Paper"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Photo Paper"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("ColorLife Paper"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Other"); /* ./escp2/media/pro3880_ultrachrome_k3v.xml */ +N_("Plain Paper"); /* ./escp2/media/pro_gen1.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/pro_gen1.xml */ +N_("Quadtone"); /* ./escp2/media/pro_gen1.xml */ +N_("MISQuadtone"); /* ./escp2/media/pro_gen1.xml */ +N_("MIS Hextone"); /* ./escp2/media/pro_gen1.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/pro_gen1.xml */ +N_("Postcard"); /* ./escp2/media/pro_gen1.xml */ +N_("Glossy Film"); /* ./escp2/media/pro_gen1.xml */ +N_("Transparencies"); /* ./escp2/media/pro_gen1.xml */ +N_("Envelopes"); /* ./escp2/media/pro_gen1.xml */ +N_("Back Light Film"); /* ./escp2/media/pro_gen1.xml */ +N_("Matte Paper"); /* ./escp2/media/pro_gen1.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/pro_gen1.xml */ +N_("Inkjet Paper"); /* ./escp2/media/pro_gen1.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/pro_gen1.xml */ +N_("Photo Paper"); /* ./escp2/media/pro_gen1.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/pro_gen1.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/pro_gen1.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/pro_gen1.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/pro_gen1.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/pro_gen1.xml */ +N_("ColorLife Paper"); /* ./escp2/media/pro_gen1.xml */ +N_("Other"); /* ./escp2/media/pro_gen1.xml */ +N_("Plain Paper"); /* ./escp2/media/pro_gen2.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/pro_gen2.xml */ +N_("Quadtone"); /* ./escp2/media/pro_gen2.xml */ +N_("MISQuadtone"); /* ./escp2/media/pro_gen2.xml */ +N_("MIS Hextone"); /* ./escp2/media/pro_gen2.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/pro_gen2.xml */ +N_("Postcard"); /* ./escp2/media/pro_gen2.xml */ +N_("Glossy Film"); /* ./escp2/media/pro_gen2.xml */ +N_("Transparencies"); /* ./escp2/media/pro_gen2.xml */ +N_("Envelopes"); /* ./escp2/media/pro_gen2.xml */ +N_("Back Light Film"); /* ./escp2/media/pro_gen2.xml */ +N_("Matte Paper"); /* ./escp2/media/pro_gen2.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/pro_gen2.xml */ +N_("Inkjet Paper"); /* ./escp2/media/pro_gen2.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/pro_gen2.xml */ +N_("Photo Paper"); /* ./escp2/media/pro_gen2.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/pro_gen2.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/pro_gen2.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/pro_gen2.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/pro_gen2.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/pro_gen2.xml */ +N_("ColorLife Paper"); /* ./escp2/media/pro_gen2.xml */ +N_("Other"); /* ./escp2/media/pro_gen2.xml */ +N_("Plain Paper"); /* ./escp2/media/pro_pigment.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/pro_pigment.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/pro_pigment.xml */ +N_("Postcard"); /* ./escp2/media/pro_pigment.xml */ +N_("Glossy Film"); /* ./escp2/media/pro_pigment.xml */ +N_("Transparencies"); /* ./escp2/media/pro_pigment.xml */ +N_("Envelopes"); /* ./escp2/media/pro_pigment.xml */ +N_("Back Light Film"); /* ./escp2/media/pro_pigment.xml */ +N_("Matte Paper"); /* ./escp2/media/pro_pigment.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/pro_pigment.xml */ +N_("Inkjet Paper"); /* ./escp2/media/pro_pigment.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/pro_pigment.xml */ +N_("Photo Paper"); /* ./escp2/media/pro_pigment.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/pro_pigment.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/pro_pigment.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/pro_pigment.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/pro_pigment.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/pro_pigment.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/pro_pigment.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/pro_pigment.xml */ +N_("ColorLife Paper"); /* ./escp2/media/pro_pigment.xml */ +N_("Other"); /* ./escp2/media/pro_pigment.xml */ +N_("Plain Paper"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("UltraChrome Photo Black"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("UltraChrome Matte Black"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Postcard"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Glossy Film"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Transparencies"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Envelopes"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Back Light Film"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Matte Paper"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Inkjet Paper"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Photo Paper"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("ColorLife Paper"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Other"); /* ./escp2/media/pro_ultrachrome.xml */ +N_("Plain Paper"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("UltraChrome Photo Black"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("UltraChrome Matte Black"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Postcard"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Glossy Film"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Transparencies"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Envelopes"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Back Light Film"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Matte Paper"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Inkjet Paper"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("ColorLife Paper"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Other"); /* ./escp2/media/pro_ultrachrome_k3.xml */ +N_("Plain Paper"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("UltraChrome Photo Black"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("UltraChrome Matte Black"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Postcard"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Glossy Film"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Transparencies"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Envelopes"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Back Light Film"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Matte Paper"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Inkjet Paper"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("ColorLife Paper"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Other"); /* ./escp2/media/pro_ultrachrome_k3v.xml */ +N_("Plain Paper"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("UltraChrome Photo Black"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("UltraChrome Matte Black"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Postcard"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Glossy Film"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Transparencies"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Envelopes"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Back Light Film"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Matte Paper"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Inkjet Paper"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("ColorLife Paper"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Other"); /* ./escp2/media/pro_ultrachrome_k3v10.xml */ +N_("Plain Paper"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("UltraChrome Photo Black"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("UltraChrome Matte Black"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Postcard"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Glossy Film"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Transparencies"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Envelopes"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Back Light Film"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Matte Paper"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Inkjet Paper"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("ColorLife Paper"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Other"); /* ./escp2/media/pro_ultrachrome_k3v10a.xml */ +N_("Plain Paper"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("UltraChrome Photo Black"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("UltraChrome Matte Black"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Postcard"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Glossy Film"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Transparencies"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Envelopes"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Back Light Film"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Matte Paper"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Inkjet Paper"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("ColorLife Paper"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Other"); /* ./escp2/media/pro_ultrachrome_k3v10b.xml */ +N_("Plain Paper"); /* ./escp2/media/r800.xml */ +N_("Photo Black"); /* ./escp2/media/r800.xml */ +N_("Matte Black"); /* ./escp2/media/r800.xml */ +N_("Postcard"); /* ./escp2/media/r800.xml */ +N_("Glossy Film"); /* ./escp2/media/r800.xml */ +N_("Transparencies"); /* ./escp2/media/r800.xml */ +N_("Envelopes"); /* ./escp2/media/r800.xml */ +N_("Back Light Film"); /* ./escp2/media/r800.xml */ +N_("Matte Paper"); /* ./escp2/media/r800.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/r800.xml */ +N_("Inkjet Paper"); /* ./escp2/media/r800.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/r800.xml */ +N_("Photo Paper"); /* ./escp2/media/r800.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/r800.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/r800.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/r800.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/r800.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/r800.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/r800.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/r800.xml */ +N_("ColorLife Paper"); /* ./escp2/media/r800.xml */ +N_("Other"); /* ./escp2/media/r800.xml */ +N_("Plain Paper"); /* ./escp2/media/standard.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/standard.xml */ +N_("Quadtone"); /* ./escp2/media/standard.xml */ +N_("MISQuadtone"); /* ./escp2/media/standard.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/standard.xml */ +N_("Postcard"); /* ./escp2/media/standard.xml */ +N_("Glossy Film"); /* ./escp2/media/standard.xml */ +N_("Transparencies"); /* ./escp2/media/standard.xml */ +N_("Envelopes"); /* ./escp2/media/standard.xml */ +N_("Back Light Film"); /* ./escp2/media/standard.xml */ +N_("Matte Paper"); /* ./escp2/media/standard.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/standard.xml */ +N_("Inkjet Paper"); /* ./escp2/media/standard.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/standard.xml */ +N_("Photo Paper"); /* ./escp2/media/standard.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/standard.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/standard.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/standard.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/standard.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/standard.xml */ +N_("ColorLife Paper"); /* ./escp2/media/standard.xml */ +N_("Other"); /* ./escp2/media/standard.xml */ +N_("Plain Paper"); /* ./escp2/media/standard_gen0.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/standard_gen0.xml */ +N_("Quadtone"); /* ./escp2/media/standard_gen0.xml */ +N_("MISQuadtone"); /* ./escp2/media/standard_gen0.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/standard_gen0.xml */ +N_("Postcard"); /* ./escp2/media/standard_gen0.xml */ +N_("Glossy Film"); /* ./escp2/media/standard_gen0.xml */ +N_("Transparencies"); /* ./escp2/media/standard_gen0.xml */ +N_("Envelopes"); /* ./escp2/media/standard_gen0.xml */ +N_("Back Light Film"); /* ./escp2/media/standard_gen0.xml */ +N_("Matte Paper"); /* ./escp2/media/standard_gen0.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/standard_gen0.xml */ +N_("Inkjet Paper"); /* ./escp2/media/standard_gen0.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/standard_gen0.xml */ +N_("Photo Paper"); /* ./escp2/media/standard_gen0.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/standard_gen0.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/standard_gen0.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/standard_gen0.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/standard_gen0.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/standard_gen0.xml */ +N_("ColorLife Paper"); /* ./escp2/media/standard_gen0.xml */ +N_("Other"); /* ./escp2/media/standard_gen0.xml */ +N_("Plain Paper"); /* ./escp2/media/ultrachrome.xml */ +N_("UltraChrome Photo Black"); /* ./escp2/media/ultrachrome.xml */ +N_("UltraChrome Matte Black"); /* ./escp2/media/ultrachrome.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/ultrachrome.xml */ +N_("Postcard"); /* ./escp2/media/ultrachrome.xml */ +N_("Glossy Film"); /* ./escp2/media/ultrachrome.xml */ +N_("Transparencies"); /* ./escp2/media/ultrachrome.xml */ +N_("Envelopes"); /* ./escp2/media/ultrachrome.xml */ +N_("Back Light Film"); /* ./escp2/media/ultrachrome.xml */ +N_("Matte Paper"); /* ./escp2/media/ultrachrome.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/ultrachrome.xml */ +N_("Inkjet Paper"); /* ./escp2/media/ultrachrome.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/ultrachrome.xml */ +N_("Photo Paper"); /* ./escp2/media/ultrachrome.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/ultrachrome.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/ultrachrome.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/ultrachrome.xml */ +N_("Archival Matte Paper"); /* ./escp2/media/ultrachrome.xml */ +N_("Watercolor Paper - Radiant White"); /* ./escp2/media/ultrachrome.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/ultrachrome.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/ultrachrome.xml */ +N_("ColorLife Paper"); /* ./escp2/media/ultrachrome.xml */ +N_("Other"); /* ./escp2/media/ultrachrome.xml */ +N_("Plain Paper"); /* ./escp2/media/wf500.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/wf500.xml */ +N_("Postcard"); /* ./escp2/media/wf500.xml */ +N_("Glossy Film"); /* ./escp2/media/wf500.xml */ +N_("Transparencies"); /* ./escp2/media/wf500.xml */ +N_("Envelopes"); /* ./escp2/media/wf500.xml */ +N_("Back Light Film"); /* ./escp2/media/wf500.xml */ +N_("Matte Paper"); /* ./escp2/media/wf500.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/wf500.xml */ +N_("Inkjet Paper"); /* ./escp2/media/wf500.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/wf500.xml */ +N_("Photo Paper"); /* ./escp2/media/wf500.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/wf500.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/wf500.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/wf500.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/wf500.xml */ +N_("ColorLife Paper"); /* ./escp2/media/wf500.xml */ +N_("Other"); /* ./escp2/media/wf500.xml */ +N_("Plain Paper"); /* ./escp2/media/x80.xml */ +N_("EPSON Standard Inks"); /* ./escp2/media/x80.xml */ +N_("Plain Paper Fast Load"); /* ./escp2/media/x80.xml */ +N_("Postcard"); /* ./escp2/media/x80.xml */ +N_("Glossy Film"); /* ./escp2/media/x80.xml */ +N_("Transparencies"); /* ./escp2/media/x80.xml */ +N_("Envelopes"); /* ./escp2/media/x80.xml */ +N_("Back Light Film"); /* ./escp2/media/x80.xml */ +N_("Matte Paper"); /* ./escp2/media/x80.xml */ +N_("Matte Paper Heavyweight"); /* ./escp2/media/x80.xml */ +N_("Inkjet Paper"); /* ./escp2/media/x80.xml */ +N_("Photo Quality Inkjet Paper"); /* ./escp2/media/x80.xml */ +N_("Photo Paper"); /* ./escp2/media/x80.xml */ +N_("Premium Glossy Photo Paper"); /* ./escp2/media/x80.xml */ +N_("Premium Semigloss Photo Paper"); /* ./escp2/media/x80.xml */ +N_("Premium Luster Photo Paper"); /* ./escp2/media/x80.xml */ +N_("Photo Quality Glossy Paper"); /* ./escp2/media/x80.xml */ +N_("Ilford Heavy Paper"); /* ./escp2/media/x80.xml */ +N_("ColorLife Paper"); /* ./escp2/media/x80.xml */ +N_("Other"); /* ./escp2/media/x80.xml */ +N_("Fast Economy"); /* ./escp2/qualitypresets/p1_5.xml */ +N_("Economy"); /* ./escp2/qualitypresets/p1_5.xml */ +N_("Draft"); /* ./escp2/qualitypresets/p1_5.xml */ +N_("Standard"); /* ./escp2/qualitypresets/p1_5.xml */ +N_("High"); /* ./escp2/qualitypresets/p1_5.xml */ +N_("Photo"); /* ./escp2/qualitypresets/p1_5.xml */ +N_("Super Photo"); /* ./escp2/qualitypresets/p1_5.xml */ +N_("Ultra Photo"); /* ./escp2/qualitypresets/p1_5.xml */ +N_("Best"); /* ./escp2/qualitypresets/p1_5.xml */ +N_("Draft"); /* ./escp2/qualitypresets/picturemate.xml */ +N_("Standard"); /* ./escp2/qualitypresets/picturemate.xml */ +N_("Photo"); /* ./escp2/qualitypresets/picturemate.xml */ +N_("High"); /* ./escp2/qualitypresets/picturemate.xml */ +N_("Super Photo"); /* ./escp2/qualitypresets/picturemate.xml */ +N_("Ultra Photo"); /* ./escp2/qualitypresets/picturemate.xml */ +N_("Best"); /* ./escp2/qualitypresets/picturemate.xml */ +N_("Fast Economy"); /* ./escp2/qualitypresets/prox900.xml */ +N_("Economy"); /* ./escp2/qualitypresets/prox900.xml */ +N_("Draft"); /* ./escp2/qualitypresets/prox900.xml */ +N_("Standard"); /* ./escp2/qualitypresets/prox900.xml */ +N_("High"); /* ./escp2/qualitypresets/prox900.xml */ +N_("Photo"); /* ./escp2/qualitypresets/prox900.xml */ +N_("Super Photo"); /* ./escp2/qualitypresets/prox900.xml */ +N_("Ultra Photo"); /* ./escp2/qualitypresets/prox900.xml */ +N_("Best"); /* ./escp2/qualitypresets/prox900.xml */ +N_("Fast Economy"); /* ./escp2/qualitypresets/standard.xml */ +N_("Economy"); /* ./escp2/qualitypresets/standard.xml */ +N_("Draft"); /* ./escp2/qualitypresets/standard.xml */ +N_("Standard"); /* ./escp2/qualitypresets/standard.xml */ +N_("High"); /* ./escp2/qualitypresets/standard.xml */ +N_("Photo"); /* ./escp2/qualitypresets/standard.xml */ +N_("Super Photo"); /* ./escp2/qualitypresets/standard.xml */ +N_("Ultra Photo"); /* ./escp2/qualitypresets/standard.xml */ +N_("Best"); /* ./escp2/qualitypresets/standard.xml */ +N_("Fast Economy"); /* ./escp2/qualitypresets/v2880.xml */ +N_("Economy"); /* ./escp2/qualitypresets/v2880.xml */ +N_("Draft"); /* ./escp2/qualitypresets/v2880.xml */ +N_("Standard"); /* ./escp2/qualitypresets/v2880.xml */ +N_("High"); /* ./escp2/qualitypresets/v2880.xml */ +N_("Photo"); /* ./escp2/qualitypresets/v2880.xml */ +N_("Super Photo"); /* ./escp2/qualitypresets/v2880.xml */ +N_("Ultra Photo"); /* ./escp2/qualitypresets/v2880.xml */ +N_("Best"); /* ./escp2/qualitypresets/v2880.xml */ +N_("Economy"); /* ./escp2/qualitypresets/wf40.xml */ +N_("Draft"); /* ./escp2/qualitypresets/wf40.xml */ +N_("Standard"); /* ./escp2/qualitypresets/wf40.xml */ +N_("High"); /* ./escp2/qualitypresets/wf40.xml */ +N_("Photo"); /* ./escp2/qualitypresets/wf40.xml */ +N_("Super Photo"); /* ./escp2/qualitypresets/wf40.xml */ +N_("Ultra Photo"); /* ./escp2/qualitypresets/wf40.xml */ +N_("Best"); /* ./escp2/qualitypresets/wf40.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/resolutions/c8x.xml */ +N_("360 DPI"); /* ./escp2/resolutions/c8x.xml */ +N_("720 x 360 DPI"); /* ./escp2/resolutions/c8x.xml */ +N_("720 DPI"); /* ./escp2/resolutions/c8x.xml */ +N_("1440 x 720 DPI"); /* ./escp2/resolutions/c8x.xml */ +N_("2880 x 720 DPI"); /* ./escp2/resolutions/c8x.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/resolutions/c8x.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/resolutions/c8x.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/resolutions/c8x.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/resolutions/escp2-i.xml */ +N_("180 DPI Economy"); /* ./escp2/resolutions/escp2-i.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/resolutions/escp2-i.xml */ +N_("360 DPI High Quality"); /* ./escp2/resolutions/escp2-i.xml */ +N_("360 DPI"); /* ./escp2/resolutions/escp2-i.xml */ +N_("720 x 360 DPI"); /* ./escp2/resolutions/escp2-i.xml */ +N_("720 DPI"); /* ./escp2/resolutions/escp2-i.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/resolutions/prox600.xml */ +N_("360 DPI"); /* ./escp2/resolutions/prox600.xml */ +N_("720 x 360 DPI"); /* ./escp2/resolutions/prox600.xml */ +N_("720 DPI"); /* ./escp2/resolutions/prox600.xml */ +N_("1440 x 720 DPI"); /* ./escp2/resolutions/prox600.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/resolutions/prox600.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/resolutions/prox600.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/resolutions/prox600.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/resolutions/sc480.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/resolutions/sc480.xml */ +N_("360 DPI"); /* ./escp2/resolutions/sc480.xml */ +N_("720 x 360 DPI"); /* ./escp2/resolutions/sc480.xml */ +N_("720 DPI"); /* ./escp2/resolutions/sc480.xml */ +N_("720 DPI High Quality"); /* ./escp2/resolutions/sc480.xml */ +N_("720 DPI Highest Quality"); /* ./escp2/resolutions/sc480.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/resolutions/sc680.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/resolutions/sc680.xml */ +N_("360 DPI"); /* ./escp2/resolutions/sc680.xml */ +N_("720 x 360 DPI"); /* ./escp2/resolutions/sc680.xml */ +N_("720 DPI"); /* ./escp2/resolutions/sc680.xml */ +N_("1440 x 720 DPI"); /* ./escp2/resolutions/sc680.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/resolutions/sc680.xml */ +N_("2880 x 720 DPI"); /* ./escp2/resolutions/sc680.xml */ +N_("2880 x 720 DPI Highest Quality"); /* ./escp2/resolutions/sc680.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/resolutions/sc740.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/resolutions/sc740.xml */ +N_("360 DPI"); /* ./escp2/resolutions/sc740.xml */ +N_("720 x 360 DPI"); /* ./escp2/resolutions/sc740.xml */ +N_("720 DPI"); /* ./escp2/resolutions/sc740.xml */ +N_("720 DPI High Quality"); /* ./escp2/resolutions/sc740.xml */ +N_("1440 x 720 DPI"); /* ./escp2/resolutions/sc740.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/resolutions/sc740.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/resolutions/sc860.xml */ +N_("360 x 240 DPI Draft"); /* ./escp2/resolutions/sc860.xml */ +N_("360 DPI"); /* ./escp2/resolutions/sc860.xml */ +N_("720 x 360 DPI"); /* ./escp2/resolutions/sc860.xml */ +N_("720 DPI"); /* ./escp2/resolutions/sc860.xml */ +N_("720 DPI High Quality"); /* ./escp2/resolutions/sc860.xml */ +N_("1440 x 720 DPI"); /* ./escp2/resolutions/sc860.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/resolutions/sc860.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/resolutions/sp700.xml */ +N_("180 DPI Economy"); /* ./escp2/resolutions/sp700.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/resolutions/sp700.xml */ +N_("360 DPI High Quality"); /* ./escp2/resolutions/sp700.xml */ +N_("360 DPI"); /* ./escp2/resolutions/sp700.xml */ +N_("720 x 360 DPI"); /* ./escp2/resolutions/sp700.xml */ +N_("720 DPI"); /* ./escp2/resolutions/sp700.xml */ +N_("720 DPI High Quality"); /* ./escp2/resolutions/sp700.xml */ +N_("1440 x 720 DPI"); /* ./escp2/resolutions/sp700.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/resolutions/sp700.xml */ +N_("360 x 90 DPI Fast Economy"); /* ./escp2/resolutions/sp720.xml */ +N_("180 DPI Economy"); /* ./escp2/resolutions/sp720.xml */ +N_("360 x 180 DPI Draft"); /* ./escp2/resolutions/sp720.xml */ +N_("360 DPI"); /* ./escp2/resolutions/sp720.xml */ +N_("720 x 360 DPI"); /* ./escp2/resolutions/sp720.xml */ +N_("720 DPI"); /* ./escp2/resolutions/sp720.xml */ +N_("720 DPI High Quality"); /* ./escp2/resolutions/sp720.xml */ +N_("1440 x 720 DPI"); /* ./escp2/resolutions/sp720.xml */ +N_("1440 x 720 DPI Highest Quality"); /* ./escp2/resolutions/sp720.xml */ +N_("360 x 120 DPI Economy"); /* ./escp2/resolutions/wf6xx.xml */ +N_("360 DPI"); /* ./escp2/resolutions/wf6xx.xml */ +N_("360 DPI Enhanced"); /* ./escp2/resolutions/wf6xx.xml */ +N_("720 x 360 DPI"); /* ./escp2/resolutions/wf6xx.xml */ +N_("720 x 360 DPI Enhanced"); /* ./escp2/resolutions/wf6xx.xml */ +N_("720 DPI"); /* ./escp2/resolutions/wf6xx.xml */ +N_("720 DPI High Quality"); /* ./escp2/resolutions/wf6xx.xml */ +N_("1440 x 720 DPI"); /* ./escp2/resolutions/wf6xx.xml */ +N_("1440 x 1440 DPI"); /* ./escp2/resolutions/wf6xx.xml */ +N_("2880 x 1440 DPI"); /* ./escp2/resolutions/wf6xx.xml */ +N_("5760 x 1440 DPI"); /* ./escp2/resolutions/wf6xx.xml */ +N_("2880 x 2880 DPI"); /* ./escp2/resolutions/wf6xx.xml */ +N_("5760 x 2880 DPI"); /* ./escp2/resolutions/wf6xx.xml */ +N_("Off"); /* ./escp2/weaves/pro7000.xml */ +N_("Interleave"); /* ./escp2/weaves/pro7000.xml */ +N_("Full Overlap"); /* ./escp2/weaves/pro7000.xml */ +N_("Four Pass"); /* ./escp2/weaves/pro7000.xml */ +N_("Full Overlap 2"); /* ./escp2/weaves/pro7000.xml */ +N_("Off"); /* ./escp2/weaves/pro7500.xml */ +N_("Interleave"); /* ./escp2/weaves/pro7500.xml */ +N_("Full Overlap"); /* ./escp2/weaves/pro7500.xml */ +N_("Four Pass"); /* ./escp2/weaves/pro7500.xml */ +N_("Full Overlap 2"); /* ./escp2/weaves/pro7500.xml */ +N_("Interleave 2"); /* ./escp2/weaves/pro7500.xml */ +N_("Off"); /* ./escp2/weaves/pro7600.xml */ +N_("Interleave"); /* ./escp2/weaves/pro7600.xml */ +N_("Full Overlap"); /* ./escp2/weaves/pro7600.xml */ +N_("Four Pass"); /* ./escp2/weaves/pro7600.xml */ +N_("Full Overlap 2"); /* ./escp2/weaves/pro7600.xml */ +N_("Interleave 2"); /* ./escp2/weaves/pro7600.xml */ +N_("Eight Pass"); /* ./escp2/weaves/pro7600.xml */ +N_("Off"); /* ./escp2/weaves/standard.xml */ +N_("On"); /* ./escp2/weaves/standard.xml */ +N_("Letter"); /* ./papers/standard.xml */ +N_("Legal"); /* ./papers/standard.xml */ +N_("Tabloid"); /* ./papers/standard.xml */ +N_("Executive"); /* ./papers/standard.xml */ +N_("Postcard"); /* ./papers/standard.xml */ +N_("CD - 5 inch"); /* ./papers/standard.xml */ +N_("CD - 3 inch"); /* ./papers/standard.xml */ +N_("CD - Custom"); /* ./papers/standard.xml */ +N_("3x5"); /* ./papers/standard.xml */ +N_("3 1/2 x5"); /* ./papers/standard.xml */ +N_("L"); /* ./papers/standard.xml */ +N_("2x6"); /* ./papers/standard.xml */ +N_("4x6"); /* ./papers/standard.xml */ +N_("KG"); /* ./papers/standard.xml */ +N_("Epson 4x6 Photo Paper (tear-off borders)"); /* ./papers/standard.xml */ +N_("Epson L Photo Paper (tear-off borders)"); /* ./papers/standard.xml */ +N_("4x8"); /* ./papers/standard.xml */ +N_("5x7"); /* ./papers/standard.xml */ +N_("2L"); /* ./papers/standard.xml */ +N_("5x8"); /* ./papers/standard.xml */ +N_("6x8"); /* ./papers/standard.xml */ +N_("6x9"); /* ./papers/standard.xml */ +N_("8x10"); /* ./papers/standard.xml */ +N_("Rokukire"); /* ./papers/standard.xml */ +N_("Manual"); /* ./papers/standard.xml */ +N_("12x18"); /* ./papers/standard.xml */ +N_("Super B 13x19"); /* ./papers/standard.xml */ +N_("Engineering C 17x22"); /* ./papers/standard.xml */ +N_("5x5"); /* ./papers/standard.xml */ +N_("8x12"); /* ./papers/standard.xml */ +N_("YonKire"); /* ./papers/standard.xml */ +N_("11x14"); /* ./papers/standard.xml */ +N_("HanKire"); /* ./papers/standard.xml */ +N_("16x20"); /* ./papers/standard.xml */ +N_("16x24"); /* ./papers/standard.xml */ +N_("20x24"); /* ./papers/standard.xml */ +N_("20x30"); /* ./papers/standard.xml */ +N_("22x30"); /* ./papers/standard.xml */ +N_("24x30"); /* ./papers/standard.xml */ +N_("Super A1 24x36"); /* ./papers/standard.xml */ +N_("30x40"); /* ./papers/standard.xml */ +N_("4A"); /* ./papers/standard.xml */ +N_("2A"); /* ./papers/standard.xml */ +N_("Super A0"); /* ./papers/standard.xml */ +N_("A0"); /* ./papers/standard.xml */ +N_("A1"); /* ./papers/standard.xml */ +N_("A2"); /* ./papers/standard.xml */ +N_("A3"); /* ./papers/standard.xml */ +N_("A4"); /* ./papers/standard.xml */ +N_("A5"); /* ./papers/standard.xml */ +N_("A6"); /* ./papers/standard.xml */ +N_("A7"); /* ./papers/standard.xml */ +N_("A8"); /* ./papers/standard.xml */ +N_("A9"); /* ./papers/standard.xml */ +N_("A10"); /* ./papers/standard.xml */ +N_("RA0"); /* ./papers/standard.xml */ +N_("RA1"); /* ./papers/standard.xml */ +N_("RA2"); /* ./papers/standard.xml */ +N_("RA3"); /* ./papers/standard.xml */ +N_("RA4"); /* ./papers/standard.xml */ +N_("SRA0"); /* ./papers/standard.xml */ +N_("SRA1"); /* ./papers/standard.xml */ +N_("SRA2"); /* ./papers/standard.xml */ +N_("SRA3"); /* ./papers/standard.xml */ +N_("SRA4"); /* ./papers/standard.xml */ +N_("4B ISO"); /* ./papers/standard.xml */ +N_("2B ISO"); /* ./papers/standard.xml */ +N_("B0 ISO"); /* ./papers/standard.xml */ +N_("B1 ISO"); /* ./papers/standard.xml */ +N_("B2 ISO"); /* ./papers/standard.xml */ +N_("B3 ISO"); /* ./papers/standard.xml */ +N_("B4 ISO"); /* ./papers/standard.xml */ +N_("B5 ISO"); /* ./papers/standard.xml */ +N_("B6 ISO"); /* ./papers/standard.xml */ +N_("B7 ISO"); /* ./papers/standard.xml */ +N_("B8 ISO"); /* ./papers/standard.xml */ +N_("B9 ISO"); /* ./papers/standard.xml */ +N_("B10 ISO"); /* ./papers/standard.xml */ +N_("Super B0 JIS"); /* ./papers/standard.xml */ +N_("B0 JIS"); /* ./papers/standard.xml */ +N_("B1 JIS"); /* ./papers/standard.xml */ +N_("B2 JIS"); /* ./papers/standard.xml */ +N_("B3 JIS"); /* ./papers/standard.xml */ +N_("B4 JIS"); /* ./papers/standard.xml */ +N_("B5 JIS"); /* ./papers/standard.xml */ +N_("B6 JIS"); /* ./papers/standard.xml */ +N_("B7 JIS"); /* ./papers/standard.xml */ +N_("B8 JIS"); /* ./papers/standard.xml */ +N_("B9 JIS"); /* ./papers/standard.xml */ +N_("B10 JIS"); /* ./papers/standard.xml */ +N_("C0"); /* ./papers/standard.xml */ +N_("C0 landscape"); /* ./papers/standard.xml */ +N_("C1"); /* ./papers/standard.xml */ +N_("C1 landscape"); /* ./papers/standard.xml */ +N_("C2"); /* ./papers/standard.xml */ +N_("C2 landscape"); /* ./papers/standard.xml */ +N_("C3"); /* ./papers/standard.xml */ +N_("C3 landscape"); /* ./papers/standard.xml */ +N_("C4"); /* ./papers/standard.xml */ +N_("C4 landscape"); /* ./papers/standard.xml */ +N_("C5"); /* ./papers/standard.xml */ +N_("C5 landscape"); /* ./papers/standard.xml */ +N_("B6-C4"); /* ./papers/standard.xml */ +N_("B6-C4 landscape"); /* ./papers/standard.xml */ +N_("C6"); /* ./papers/standard.xml */ +N_("C6 landscape"); /* ./papers/standard.xml */ +N_("DL"); /* ./papers/standard.xml */ +N_("DL landscape"); /* ./papers/standard.xml */ +N_("C7-6"); /* ./papers/standard.xml */ +N_("C7-6 landscape"); /* ./papers/standard.xml */ +N_("C7"); /* ./papers/standard.xml */ +N_("C7 landscape"); /* ./papers/standard.xml */ +N_("C8"); /* ./papers/standard.xml */ +N_("C8 landscape"); /* ./papers/standard.xml */ +N_("C9"); /* ./papers/standard.xml */ +N_("C9 landscape"); /* ./papers/standard.xml */ +N_("C10"); /* ./papers/standard.xml */ +N_("C10 landscape"); /* ./papers/standard.xml */ +N_("EA5"); /* ./papers/standard.xml */ +N_("EA5 landscape"); /* ./papers/standard.xml */ +N_("ArchA"); /* ./papers/standard.xml */ +N_("ArchA transposed"); /* ./papers/standard.xml */ +N_("ArchB"); /* ./papers/standard.xml */ +N_("ArchB transposed"); /* ./papers/standard.xml */ +N_("ArchC"); /* ./papers/standard.xml */ +N_("ArchC transposed"); /* ./papers/standard.xml */ +N_("ArchD"); /* ./papers/standard.xml */ +N_("ArchD transposed"); /* ./papers/standard.xml */ +N_("ArchE"); /* ./papers/standard.xml */ +N_("ArchE transposed"); /* ./papers/standard.xml */ +N_("American foolscap"); /* ./papers/standard.xml */ +N_("European foolscap"); /* ./papers/standard.xml */ +N_("Crown Quarto"); /* ./papers/standard.xml */ +N_("Large Crown Quarto"); /* ./papers/standard.xml */ +N_("Demy Quarto"); /* ./papers/standard.xml */ +N_("Royal Quarto"); /* ./papers/standard.xml */ +N_("Crown Octavo"); /* ./papers/standard.xml */ +N_("Large Crown Octavo"); /* ./papers/standard.xml */ +N_("Demy Octavo"); /* ./papers/standard.xml */ +N_("Royal Octavo"); /* ./papers/standard.xml */ +N_("Small paperback"); /* ./papers/standard.xml */ +N_("Penguin small paperback"); /* ./papers/standard.xml */ +N_("Penguin large paperback"); /* ./papers/standard.xml */ +N_("10cm x 15cm"); /* ./papers/standard.xml */ +N_("Hagaki Card"); /* ./papers/standard.xml */ +N_("Oufuku Card"); /* ./papers/standard.xml */ +N_("Japanese long envelope #3"); /* ./papers/standard.xml */ +N_("Japanese long envelope #3 landscape"); /* ./papers/standard.xml */ +N_("Japanese long envelope #4"); /* ./papers/standard.xml */ +N_("Japanese long envelope #4 landscape"); /* ./papers/standard.xml */ +N_("Japanese Western-style envelope #4"); /* ./papers/standard.xml */ +N_("Japanese Western-style envelope #4 landscape"); /* ./papers/standard.xml */ +N_("Japanese Western-style envelope #6"); /* ./papers/standard.xml */ +N_("Japanese Western-style envelope #6 landscape"); /* ./papers/standard.xml */ +N_("Japanese Kaku envelope #4"); /* ./papers/standard.xml */ +N_("Japanese Kaku envelope #4 landscape"); /* ./papers/standard.xml */ +N_("Commercial 10"); /* ./papers/standard.xml */ +N_("Commercial 10 landscape"); /* ./papers/standard.xml */ +N_("A2 Invitation"); /* ./papers/standard.xml */ +N_("Monarch Envelope"); /* ./papers/standard.xml */ +N_("Monarch Envelope landscape"); /* ./papers/standard.xml */ +N_("4x5 3/8"); /* ./papers/standard.xml */ +N_("4x7"); /* ./papers/standard.xml */ +N_("Wide 101.6x180.6"); /* ./papers/standard.xml */ +N_("CP_L"); /* ./papers/standard.xml */ +N_("Credit Card"); /* ./papers/standard.xml */ +N_("Japanese Business Card"); /* ./papers/standard.xml */ +N_("Wide Postcard"); /* ./papers/standard.xml */ +N_("Chilean Office"); /* ./papers/standard.xml */ +N_("Chilean Double Letter"); /* ./papers/standard.xml */ +N_("Chilean Double Office"); /* ./papers/standard.xml */ +N_("A3+"); /* ./papers/standard.xml */ +N_("Legal (India)"); /* ./papers/standard.xml */ +N_("Oficio"); /* ./papers/standard.xml */ +N_(" Brazil Oficio"); /* ./papers/standard.xml */ +N_("Mexico Oficio"); /* ./papers/standard.xml */ +N_("Custom"); /* ./papers/standard.xml */ +N_("89 mm Roll Paper"); /* ./papers/standard.xml */ +N_("4 Inch Roll Paper"); /* ./papers/standard.xml */ +N_("5 Inch Roll Paper"); /* ./papers/standard.xml */ +N_("210 mm Roll Paper"); /* ./papers/standard.xml */ +N_("13 Inch Roll Paper"); /* ./papers/standard.xml */ +N_("17 Inch Roll Paper"); /* ./papers/standard.xml */ +N_("22 Inch Roll Paper"); /* ./papers/standard.xml */ +N_("24 Inch Roll Paper"); /* ./papers/standard.xml */ +N_("36 Inch Roll Paper"); /* ./papers/standard.xml */ +N_("44 Inch Roll Paper"); /* ./papers/standard.xml */ +N_("60 Inch Roll Paper"); /* ./papers/standard.xml */ +N_("64 Inch Roll Paper"); /* ./papers/standard.xml */ +N_("4.00x6.00 in label"); /* ./papers/labels.xml */ +N_("1.00x4.00 in label"); /* ./papers/labels.xml */ +N_("1.31x4.00 in label"); /* ./papers/labels.xml */ +N_("0.56x3.44 in label"); /* ./papers/labels.xml */ +N_("3.19x3.50 in label"); /* ./papers/labels.xml */ +N_("1.00x2.63 in label"); /* ./papers/labels.xml */ +N_("2.00x1.00 in label"); /* ./papers/labels.xml */ +N_("2.00x1.50 in label"); /* ./papers/labels.xml */ +N_("2.00x4.00 in label"); /* ./papers/labels.xml */ +N_("2.25x5.50 in label"); /* ./papers/labels.xml */ +N_("3.00x2.00 in label"); /* ./papers/labels.xml */ +N_("3.00x3.00 in label"); /* ./papers/labels.xml */ +N_("3.19x1.75 in label"); /* ./papers/labels.xml */ +N_("3.50x2.00 in label"); /* ./papers/labels.xml */ +N_("4.00x2.00 in label"); /* ./papers/labels.xml */ +N_("4.00x3.00 in label"); /* ./papers/labels.xml */ +N_("4.00x4.00 in label"); /* ./papers/labels.xml */ +N_("4.00x5.00 in label"); /* ./papers/labels.xml */ +N_("4.00x6.50 in label"); /* ./papers/labels.xml */ +N_("4.00x8.00 in label"); /* ./papers/labels.xml */ +N_("4.00x13.00 in label"); /* ./papers/labels.xml */ +N_("6.00x2.00 in label"); /* ./papers/labels.xml */ +N_("6.00x3.00 in label"); /* ./papers/labels.xml */ +N_("6.00x4.00 in label"); /* ./papers/labels.xml */ +N_("6.00x5.00 in label"); /* ./papers/labels.xml */ +N_("6.00x6.00 in label"); /* ./papers/labels.xml */ +N_("8.00x12.00 in label"); /* ./papers/labels.xml */ +N_("8.50x6.00 in label"); /* ./papers/labels.xml */ +N_("8.50x11.00 in label"); /* ./papers/labels.xml */ +N_("2.50x3.13 in label"); /* ./papers/labels.xml */ +N_("0.50x1.75 in label"); /* ./papers/labels.xml */ +N_("1.75x3.00 in label"); /* ./papers/labels.xml */ +N_("0.75x5.75 label"); /* ./papers/labels.xml */ +N_("44x31 mm label"); /* ./papers/labels.xml */ +N_("62x44 mm label"); /* ./papers/labels.xml */ +N_("74x52 mm label"); /* ./papers/labels.xml */ +N_("88x62 mm label"); /* ./papers/labels.xml */ +N_("105x74 mm label"); /* ./papers/labels.xml */ +N_("125x88 mm label"); /* ./papers/labels.xml */ +N_("148x105 mm label"); /* ./papers/labels.xml */ +N_("176x125 mm label"); /* ./papers/labels.xml */ +N_("210x148 mm label"); /* ./papers/labels.xml */ +N_("250x176 mm label"); /* ./papers/labels.xml */ +N_("297x210 mm label"); /* ./papers/labels.xml */ +N_("Custom"); /* ./papers/labels.xml */ +N_("Canon BJ-30"); /* ./printers/canon.xml */ +N_("Canon BJC-50"); /* ./printers/canon.xml */ +N_("Canon BJC-55"); /* ./printers/canon.xml */ +N_("Canon BJC-80"); /* ./printers/canon.xml */ +N_("Canon BJC-85"); /* ./printers/canon.xml */ +N_("Canon BJC-210"); /* ./printers/canon.xml */ +N_("Canon BJC-240"); /* ./printers/canon.xml */ +N_("Canon BJC-250"); /* ./printers/canon.xml */ +N_("Canon BJC-1000"); /* ./printers/canon.xml */ +N_("Canon BJC-2000"); /* ./printers/canon.xml */ +N_("Canon BJC-2010"); /* ./printers/canon.xml */ +N_("Canon BJC-2100"); /* ./printers/canon.xml */ +N_("Canon BJC-2110"); /* ./printers/canon.xml */ +N_("Canon BJC-3000"); /* ./printers/canon.xml */ +N_("Canon BJC-4000"); /* ./printers/canon.xml */ +N_("Canon BJC-4300"); /* ./printers/canon.xml */ +N_("Canon BJC-4400"); /* ./printers/canon.xml */ +N_("Canon BJC-4550"); /* ./printers/canon.xml */ +N_("Canon BJC-5100"); /* ./printers/canon.xml */ +N_("Canon BJC-5500"); /* ./printers/canon.xml */ +N_("Canon BJC-5500J"); /* ./printers/canon.xml */ +N_("Canon BJC-6000"); /* ./printers/canon.xml */ +N_("Canon BJC-6100"); /* ./printers/canon.xml */ +N_("Canon BJC-6200"); /* ./printers/canon.xml */ +N_("Canon BJC-6500"); /* ./printers/canon.xml */ +N_("Canon BJC-7000"); /* ./printers/canon.xml */ +N_("Canon BJC-7100"); /* ./printers/canon.xml */ +N_("Canon BJC-8200"); /* ./printers/canon.xml */ +N_("Canon BJC-8500"); /* ./printers/canon.xml */ +N_("Canon S100"); /* ./printers/canon.xml */ +N_("Canon S200"); /* ./printers/canon.xml */ +N_("Canon S300"); /* ./printers/canon.xml */ +N_("Canon S330"); /* ./printers/canon.xml */ +N_("Canon S400"); /* ./printers/canon.xml */ +N_("Canon S450"); /* ./printers/canon.xml */ +N_("Canon S500"); /* ./printers/canon.xml */ +N_("Canon S520"); /* ./printers/canon.xml */ +N_("Canon S530D"); /* ./printers/canon.xml */ +N_("Canon S600"); /* ./printers/canon.xml */ +N_("Canon S630"); /* ./printers/canon.xml */ +N_("Canon S750"); /* ./printers/canon.xml */ +N_("Canon S800"); /* ./printers/canon.xml */ +N_("Canon S820"); /* ./printers/canon.xml */ +N_("Canon S830D"); /* ./printers/canon.xml */ +N_("Canon S900"); /* ./printers/canon.xml */ +N_("Canon S9000"); /* ./printers/canon.xml */ +N_("Canon S4500"); /* ./printers/canon.xml */ +N_("Canon SELPHY DS700"); /* ./printers/canon.xml */ +N_("Canon SELPHY DS810"); /* ./printers/canon.xml */ +N_("Canon PIXMA mini220"); /* ./printers/canon.xml */ +N_("Canon PIXUS mini220"); /* ./printers/canon.xml */ +N_("Canon PIXMA mini320"); /* ./printers/canon.xml */ +N_("Canon PIXMA mini360"); /* ./printers/canon.xml */ +N_("Canon PIXUS mini360"); /* ./printers/canon.xml */ +N_("Canon iP90 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP90"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP90"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP90v"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP90v"); /* ./printers/canon.xml */ +N_("Canon iP110 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP110"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP110"); /* ./printers/canon.xml */ +N_("Canon iP2000 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2000"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP2000"); /* ./printers/canon.xml */ +N_("Canon iP2700 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2700"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP2700"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2701"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2702"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2740"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2760"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2770"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2772"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2780"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2788"); /* ./printers/canon.xml */ +N_("Canon iP2800 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2810"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2820"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2840"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2850"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2870"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2872"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2880"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP2890"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP3000"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP3100"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP3100"); /* ./printers/canon.xml */ +N_("Canon iP3300 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP3300"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP3300"); /* ./printers/canon.xml */ +N_("Canon iP3500 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP3500"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP3500"); /* ./printers/canon.xml */ +N_("Canon iP3600 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP3600"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP3600"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP3680"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4000"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4000R"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4100"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP4100"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP4100R"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4100R"); /* ./printers/canon.xml */ +N_("Canon iP4200 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4200"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP4200"); /* ./printers/canon.xml */ +N_("Canon iP4300 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4300"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP4300"); /* ./printers/canon.xml */ +N_("Canon iP4500 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4500"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP4500"); /* ./printers/canon.xml */ +N_("Canon iP4600 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4600"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP4600"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4680"); /* ./printers/canon.xml */ +N_("Canon iP4700 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4700"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP4700"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4760"); /* ./printers/canon.xml */ +N_("Canon iP4800 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4800"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4810"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4820"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP4830"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4840"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4850"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4870"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4880"); /* ./printers/canon.xml */ +N_("Canon iP4900 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4900"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4910"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4920"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP4930"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4940"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4950"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4970"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP4980"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP5000"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP5200"); /* ./printers/canon.xml */ +N_("Canon iP5200R series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP5200R"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP5200R"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP5300"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP6000D"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP6100D"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP6100D"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP6210D"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP6220D"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP6310D"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP6320D"); /* ./printers/canon.xml */ +N_("Canon iP6600D series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP6600D"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP6600D"); /* ./printers/canon.xml */ +N_("Canon iP6700D series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP6700D"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP6700D"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP7100"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP7100"); /* ./printers/canon.xml */ +N_("Canon iP7200 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP7210"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP7220"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP7230"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP7240"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP7250"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP7260"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP7270"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP7280"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP7500"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP7500"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP8100"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP8100"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP8500"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP8600"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP8600"); /* ./printers/canon.xml */ +N_("Canon iP8700 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP7810"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP8720"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP8730"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP8740"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP8750"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP8760"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP8770"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP8780"); /* ./printers/canon.xml */ +N_("Canon PIXMA iP9910"); /* ./printers/canon.xml */ +N_("Canon PIXUS iP9910"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX4000"); /* ./printers/canon.xml */ +N_("Canon iX5000 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX5000"); /* ./printers/canon.xml */ +N_("Canon PIXUS iX5000"); /* ./printers/canon.xml */ +N_("Canon iX6500 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6500"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6510"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6520"); /* ./printers/canon.xml */ +N_("Canon PIXUS iX6530"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6540"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6550"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6560"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6580"); /* ./printers/canon.xml */ +N_("Canon iX6700 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6770"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6780"); /* ./printers/canon.xml */ +N_("Canon iX6800 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6810"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6820"); /* ./printers/canon.xml */ +N_("Canon PIXUS iX6830"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6840"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6850"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6860"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6870"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX6880"); /* ./printers/canon.xml */ +N_("Canon iX7000 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA iX7000"); /* ./printers/canon.xml */ +N_("Canon PIXUS iX7000"); /* ./printers/canon.xml */ +N_("Canon Pro9000 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA Pro9000"); /* ./printers/canon.xml */ +N_("Canon PIXUS Pro9000"); /* ./printers/canon.xml */ +N_("Canon Pro9000 Mk.II series"); /* ./printers/canon.xml */ +N_("Canon PIXMA Pro9000mk2"); /* ./printers/canon.xml */ +N_("Canon PIXUS Pro9000mk2"); /* ./printers/canon.xml */ +N_("Canon Pro9500 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA Pro9500"); /* ./printers/canon.xml */ +N_("Canon PIXUS Pro9500"); /* ./printers/canon.xml */ +N_("Canon Pro9500 Mk.II series"); /* ./printers/canon.xml */ +N_("Canon PIXMA Pro9500mk2"); /* ./printers/canon.xml */ +N_("Canon PIXUS Pro9500mk2"); /* ./printers/canon.xml */ +N_("Canon SmartBase MPC400"); /* ./printers/canon.xml */ +N_("Canon SmartBase MPC600F"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP55"); /* ./printers/canon.xml */ +N_("Canon MP140 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP140"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP145"); /* ./printers/canon.xml */ +N_("Canon MP150 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP150"); /* ./printers/canon.xml */ +N_("Canon MP160 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP160"); /* ./printers/canon.xml */ +N_("Canon MP170 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP170"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP170"); /* ./printers/canon.xml */ +N_("Canon MP180 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP180"); /* ./printers/canon.xml */ +N_("Canon MP190 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP190"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP198"); /* ./printers/canon.xml */ +N_("Canon MP210 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP210"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP218"); /* ./printers/canon.xml */ +N_("Canon MP220 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP220"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP228"); /* ./printers/canon.xml */ +N_("Canon MP230 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP230"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP236"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP237"); /* ./printers/canon.xml */ +N_("Canon MP240 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP240"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP245"); /* ./printers/canon.xml */ +N_("Canon MP250 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP250"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP252"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP258"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP259"); /* ./printers/canon.xml */ +N_("Canon MP260 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP260"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP268"); /* ./printers/canon.xml */ +N_("Canon MP270 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP270"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP270"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP272"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP276"); /* ./printers/canon.xml */ +N_("Canon MP280 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP280"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP280"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP282"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP287"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP288"); /* ./printers/canon.xml */ +N_("Canon MP360 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP360"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP360"); /* ./printers/canon.xml */ +N_("Canon SmartBase MP360"); /* ./printers/canon.xml */ +N_("Canon SmartBase MP360S"); /* ./printers/canon.xml */ +N_("Canon MultiPASS MP360"); /* ./printers/canon.xml */ +N_("Canon MP370 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP370"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP370"); /* ./printers/canon.xml */ +N_("Canon SmartBase MP370"); /* ./printers/canon.xml */ +N_("Canon MultiPASS MP370"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP375R"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP375R"); /* ./printers/canon.xml */ +N_("Canon MP390 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP390"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP390"); /* ./printers/canon.xml */ +N_("Canon SmartBase MP390"); /* ./printers/canon.xml */ +N_("Canon MultiPASS MP390"); /* ./printers/canon.xml */ +N_("Canon MP450 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP450"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP450"); /* ./printers/canon.xml */ +N_("Canon MP460 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP460"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP460"); /* ./printers/canon.xml */ +N_("Canon MP470 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP470"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP470"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP476"); /* ./printers/canon.xml */ +N_("Canon MP480 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP480"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP480"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP486"); /* ./printers/canon.xml */ +N_("Canon MP490 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP490"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP490"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP492"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP493"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP493"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP495"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP496"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP497"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP498"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP499"); /* ./printers/canon.xml */ +N_("Canon MP500 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP500"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP500"); /* ./printers/canon.xml */ +N_("Canon MP510 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP510"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP510"); /* ./printers/canon.xml */ +N_("Canon MP520 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP520"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP520"); /* ./printers/canon.xml */ +N_("Canon MP530 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP530"); /* ./printers/canon.xml */ +N_("Canon MP540 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP540"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP540"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP545"); /* ./printers/canon.xml */ +N_("Canon MP550 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP550"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP550"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP558"); /* ./printers/canon.xml */ +N_("Canon MP560 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP560"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP560"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP568"); /* ./printers/canon.xml */ +N_("Canon MP600 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP600"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP600"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP600R"); /* ./printers/canon.xml */ +N_("Canon MP610 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP610"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP610"); /* ./printers/canon.xml */ +N_("Canon MP620 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP620"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP620B"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP620"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP628"); /* ./printers/canon.xml */ +N_("Canon MP630 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP630"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP630"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP638"); /* ./printers/canon.xml */ +N_("Canon MP640 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP640"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP640R"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP640"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP648"); /* ./printers/canon.xml */ +N_("Canon MP700 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP700"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP700"); /* ./printers/canon.xml */ +N_("Canon SmartBase MP700"); /* ./printers/canon.xml */ +N_("Canon MultiPASS MP700"); /* ./printers/canon.xml */ +N_("Canon MP710 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP710"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP710"); /* ./printers/canon.xml */ +N_("Canon MP730 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP730"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP730"); /* ./printers/canon.xml */ +N_("Canon SmartBase MP730"); /* ./printers/canon.xml */ +N_("Canon MultiPASS MP730"); /* ./printers/canon.xml */ +N_("Canon MP740 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP740"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP740"); /* ./printers/canon.xml */ +N_("Canon MP750 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP750"); /* ./printers/canon.xml */ +N_("Canon MP760 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP760"); /* ./printers/canon.xml */ +N_("Canon MP770 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP770"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP770"); /* ./printers/canon.xml */ +N_("Canon MP780 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP780"); /* ./printers/canon.xml */ +N_("Canon MP790 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP790"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP790"); /* ./printers/canon.xml */ +N_("Canon MP800 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP800"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP800"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP800R"); /* ./printers/canon.xml */ +N_("Canon MP810 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP810"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP810"); /* ./printers/canon.xml */ +N_("Canon MP830 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP830"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP830"); /* ./printers/canon.xml */ +N_("Canon MP900 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP900"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP900"); /* ./printers/canon.xml */ +N_("Canon MP950 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP950"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP950"); /* ./printers/canon.xml */ +N_("Canon MP960 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP960"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP960"); /* ./printers/canon.xml */ +N_("Canon MP970 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP970"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP970"); /* ./printers/canon.xml */ +N_("Canon MP980 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP980"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP980"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP988"); /* ./printers/canon.xml */ +N_("Canon MP990 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP990"); /* ./printers/canon.xml */ +N_("Canon PIXUS MP990"); /* ./printers/canon.xml */ +N_("Canon PIXMA MP996"); /* ./printers/canon.xml */ +N_("Canon MG2100 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2100"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2110"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2120"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG2130"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2140"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2150"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2160"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2170"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2180"); /* ./printers/canon.xml */ +N_("Canon MG2200 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2210"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2220"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2240"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2250"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2260"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2270"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2280"); /* ./printers/canon.xml */ +N_("Canon MG2400 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2400"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2410"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2420"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2440"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2450"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2460"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2470"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2490"); /* ./printers/canon.xml */ +N_("Canon MG2500 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2510"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2520"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2522"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2525"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2540"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2540S"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2545S"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2550"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2550S"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2555S"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2560"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2570"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2570S"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2580"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2580S"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2590"); /* ./printers/canon.xml */ +N_("Canon MG2900 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2910"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2920"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2922"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2924"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2940"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2950"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2960"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2970"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2980"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG2990"); /* ./printers/canon.xml */ +N_("Canon MG3000 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3010"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3020"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3022"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3030"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3040"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3050"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3051"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3052"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3053"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3060"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3070"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3077"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3080"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3090"); /* ./printers/canon.xml */ +N_("Canon MG3100 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3100"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3110"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3120"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3122"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG3130"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3140"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3150"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3160"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3170"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3180"); /* ./printers/canon.xml */ +N_("Canon MG3200 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3210"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3220"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3222"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG3230"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3240"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3250"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3260"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3270"); /* ./printers/canon.xml */ +N_("Canon MG3500 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3510"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3520"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3522"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG3530"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3540"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3550"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3560"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3570"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3580"); /* ./printers/canon.xml */ +N_("Canon MG3600 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3610"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3620"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG3630"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3640"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3650"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3670"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG3680"); /* ./printers/canon.xml */ +N_("Canon MG4100 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG4100"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG4110"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG4120"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG4130"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG4140"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG4150"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG4160"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG4170"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG4180"); /* ./printers/canon.xml */ +N_("Canon MG4200 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG4210"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG4220"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG4230"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG4240"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG4250"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG4260"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG4270"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG4280"); /* ./printers/canon.xml */ +N_("Canon MG5100 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5100"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5120"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG5130"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5140"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5150"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5170"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5180"); /* ./printers/canon.xml */ +N_("Canon MG5200 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5200"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5210"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5220"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG5230"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5240"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5250"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5270"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5280"); /* ./printers/canon.xml */ +N_("Canon MG5300 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5300"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5310"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5320"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG5330"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5340"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5350"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5370"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5380"); /* ./printers/canon.xml */ +N_("Canon MG5400 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5410"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5420"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5422"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG5430"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5440"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5450"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5460"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5470"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5480"); /* ./printers/canon.xml */ +N_("Canon MG5500 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5510"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5520"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5522"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG5530"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5540"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5550"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5560"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5570"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5580"); /* ./printers/canon.xml */ +N_("Canon MG5600 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5610"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5620"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5622"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG5630"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5640"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5650"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5660"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5670"); /* ./printers/canon.xml */ +N_("Canon Mommy Photo MG5670"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5680"); /* ./printers/canon.xml */ +N_("Canon MG5700 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5710"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5720"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5721"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5722"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG5730"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5740"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5750"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5751"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5752"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5753"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5770"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5780"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5790"); /* ./printers/canon.xml */ +N_("Canon Mommy Photo MG5790"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG5795"); /* ./printers/canon.xml */ +N_("Canon MG6100 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6100"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6110"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6120"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG6130"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6140"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6150"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6170"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6180"); /* ./printers/canon.xml */ +N_("Canon MG6200 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6200"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6210"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6220"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG6230"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6240"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6250"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6270"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6280"); /* ./printers/canon.xml */ +N_("Canon MG6300 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6310"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6320"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG6330"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6340"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6350"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6360"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6370"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6380"); /* ./printers/canon.xml */ +N_("Canon MG6400 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6400"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6410"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6420"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6440"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6450"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6470"); /* ./printers/canon.xml */ +N_("Canon MG6500 series"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG6530"); /* ./printers/canon.xml */ +N_("Canon MG6600 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6610"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6620"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6622"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6640"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6650"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6660"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6670"); /* ./printers/canon.xml */ +N_("Canon Mommy Photo MG6670"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6680"); /* ./printers/canon.xml */ +N_("Canon MG6700 series"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG6730"); /* ./printers/canon.xml */ +N_("Canon MG6800 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6810"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6820"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6821"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6822"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6840"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6850"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6851"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6852"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6853"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6870"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG6880"); /* ./printers/canon.xml */ +N_("Canon MG6900 series"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG6930"); /* ./printers/canon.xml */ +N_("Canon MG7100 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7110"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7120"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG7130"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7140"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7150"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7170"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7180"); /* ./printers/canon.xml */ +N_("Canon MG7500 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7510"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7520"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG7530"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG7530F"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7540"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7550"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7560"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7570"); /* ./printers/canon.xml */ +N_("Canon Mommy Photo MG7570"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7580"); /* ./printers/canon.xml */ +N_("Canon MG7700 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7710"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7720"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG7730"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG7730F"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7740"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7750"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7751"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7752"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7753"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7770"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7780"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG7790"); /* ./printers/canon.xml */ +N_("Canon MG8100 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG8100"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG8120"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG8120B"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG8130"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG8140"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG8150"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG8170"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG8180"); /* ./printers/canon.xml */ +N_("Canon MG8200 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG8200"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG8220"); /* ./printers/canon.xml */ +N_("Canon PIXUS MG8230"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG8240"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG8250"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG8270"); /* ./printers/canon.xml */ +N_("Canon PIXMA MG8280"); /* ./printers/canon.xml */ +N_("Canon MX300 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX300"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX308"); /* ./printers/canon.xml */ +N_("Canon MX310 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX310"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX318"); /* ./printers/canon.xml */ +N_("Canon MX320 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX320"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX328"); /* ./printers/canon.xml */ +N_("Canon MX330 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX330"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX338"); /* ./printers/canon.xml */ +N_("Canon MX340 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX340"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX347"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX348"); /* ./printers/canon.xml */ +N_("Canon MX350 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX350"); /* ./printers/canon.xml */ +N_("Canon PIXUS MX350"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX357"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX358"); /* ./printers/canon.xml */ +N_("Canon MX360 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX360"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX366"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX368"); /* ./printers/canon.xml */ +N_("Canon MX370 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX370"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX371"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX372"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX374"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX375"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX376"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX377"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX378"); /* ./printers/canon.xml */ +N_("Canon MX390 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX391"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX392"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX394"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX395"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX396"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX397"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX398"); /* ./printers/canon.xml */ +N_("Canon MX410 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX410"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX416"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX418"); /* ./printers/canon.xml */ +N_("Canon MX420 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX420"); /* ./printers/canon.xml */ +N_("Canon PIXUS MX420"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX426"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX428"); /* ./printers/canon.xml */ +N_("Canon MX430 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX430"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX431"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX432"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX434"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX435"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX436"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX437"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX438"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX439"); /* ./printers/canon.xml */ +N_("Canon MX450 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX451"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX452"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX454"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX455"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX456"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX457"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX458"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX459"); /* ./printers/canon.xml */ +N_("Canon MX470 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX471"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX472"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX474"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX475"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX476"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX477"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX478"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX479"); /* ./printers/canon.xml */ +N_("Canon MX490 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX490"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX492"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX494"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX495"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX496"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX497"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX498"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX499"); /* ./printers/canon.xml */ +N_("Canon MX510 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX510"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX511"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX512"); /* ./printers/canon.xml */ +N_("Canon PIXUS MX513"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX514"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX515"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX516"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX517"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX518"); /* ./printers/canon.xml */ +N_("Canon MX520 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX521"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX522"); /* ./printers/canon.xml */ +N_("Canon PIXUS MX523"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX524"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX525"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX526"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX527"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX528"); /* ./printers/canon.xml */ +N_("Canon MX530 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX531"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX532"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX534"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX535"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX536"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX537"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX538"); /* ./printers/canon.xml */ +N_("Canon MX700 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX700"); /* ./printers/canon.xml */ +N_("Canon MX710 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX710"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX711"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX712"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX714"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX715"); /* ./printers/canon.xml */ +N_("Canon MX720 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX721"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX722"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX725"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX726"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX727"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX728"); /* ./printers/canon.xml */ +N_("Canon MX850 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX850"); /* ./printers/canon.xml */ +N_("Canon PIXUS MX850"); /* ./printers/canon.xml */ +N_("Canon MX860 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX860"); /* ./printers/canon.xml */ +N_("Canon PIXUS MX860"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX868"); /* ./printers/canon.xml */ +N_("Canon MX870 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX870"); /* ./printers/canon.xml */ +N_("Canon PIXUS MX870"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX876"); /* ./printers/canon.xml */ +N_("Canon MX880 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX880"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX882"); /* ./printers/canon.xml */ +N_("Canon PIXUS MX883"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX884"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX885"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX886"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX888"); /* ./printers/canon.xml */ +N_("Canon MX890 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX890"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX892"); /* ./printers/canon.xml */ +N_("Canon PIXUS MX893"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX894"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX895"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX897"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX898"); /* ./printers/canon.xml */ +N_("Canon MX920 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX922"); /* ./printers/canon.xml */ +N_("Canon PIXUS MX923"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX924"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX925"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX926"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX927"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX928"); /* ./printers/canon.xml */ +N_("Canon MX7600 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA MX7600"); /* ./printers/canon.xml */ +N_("Canon PIXUS MX7600"); /* ./printers/canon.xml */ +N_("Canon E400 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA E400"); /* ./printers/canon.xml */ +N_("Canon PIXMA E401"); /* ./printers/canon.xml */ +N_("Canon PIXMA E404"); /* ./printers/canon.xml */ +N_("Canon PIXMA E408"); /* ./printers/canon.xml */ +N_("Canon PIXMA E409"); /* ./printers/canon.xml */ +N_("Canon E410 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA E410"); /* ./printers/canon.xml */ +N_("Canon PIXMA E414"); /* ./printers/canon.xml */ +N_("Canon PIXMA E417"); /* ./printers/canon.xml */ +N_("Canon PIXMA E418"); /* ./printers/canon.xml */ +N_("Canon E460 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA E460"); /* ./printers/canon.xml */ +N_("Canon PIXMA E461"); /* ./printers/canon.xml */ +N_("Canon PIXMA E464"); /* ./printers/canon.xml */ +N_("Canon PIXMA E468"); /* ./printers/canon.xml */ +N_("Canon E470 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA E470"); /* ./printers/canon.xml */ +N_("Canon PIXMA E471"); /* ./printers/canon.xml */ +N_("Canon PIXMA E474"); /* ./printers/canon.xml */ +N_("Canon PIXMA E477"); /* ./printers/canon.xml */ +N_("Canon PIXMA E478"); /* ./printers/canon.xml */ +N_("Canon E480 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA E480"); /* ./printers/canon.xml */ +N_("Canon PIXMA E481"); /* ./printers/canon.xml */ +N_("Canon PIXMA E484"); /* ./printers/canon.xml */ +N_("Canon PIXMA E488"); /* ./printers/canon.xml */ +N_("Canon PIXMA E489"); /* ./printers/canon.xml */ +N_("Canon E500 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA E500"); /* ./printers/canon.xml */ +N_("Canon E510 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA E510"); /* ./printers/canon.xml */ +N_("Canon PIXMA E514"); /* ./printers/canon.xml */ +N_("Canon PIXMA E518"); /* ./printers/canon.xml */ +N_("Canon E560 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA E560"); /* ./printers/canon.xml */ +N_("Canon PIXMA E568"); /* ./printers/canon.xml */ +N_("Canon PIXMA E569"); /* ./printers/canon.xml */ +N_("Canon E600 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA E600"); /* ./printers/canon.xml */ +N_("Canon PIXMA E608"); /* ./printers/canon.xml */ +N_("Canon E610 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA E610"); /* ./printers/canon.xml */ +N_("Canon PIXMA E618"); /* ./printers/canon.xml */ +N_("Canon E3100 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA E3170"); /* ./printers/canon.xml */ +N_("Canon G1000 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA G1000"); /* ./printers/canon.xml */ +N_("Canon PIXMA G1100"); /* ./printers/canon.xml */ +N_("Canon PIXMA G1200"); /* ./printers/canon.xml */ +N_("Canon PIXMA G1400"); /* ./printers/canon.xml */ +N_("Canon PIXMA G1500"); /* ./printers/canon.xml */ +N_("Canon PIXMA G1800"); /* ./printers/canon.xml */ +N_("Canon PIXMA G1900"); /* ./printers/canon.xml */ +N_("Canon G2000 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA G2000"); /* ./printers/canon.xml */ +N_("Canon PIXMA G2002"); /* ./printers/canon.xml */ +N_("Canon PIXMA G2100"); /* ./printers/canon.xml */ +N_("Canon PIXMA G2200"); /* ./printers/canon.xml */ +N_("Canon PIXMA G2400"); /* ./printers/canon.xml */ +N_("Canon PIXMA G2500"); /* ./printers/canon.xml */ +N_("Canon PIXMA G2600"); /* ./printers/canon.xml */ +N_("Canon PIXMA G2800"); /* ./printers/canon.xml */ +N_("Canon PIXMA G2900"); /* ./printers/canon.xml */ +N_("Canon G3000 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA G3000"); /* ./printers/canon.xml */ +N_("Canon PIXMA G3100"); /* ./printers/canon.xml */ +N_("Canon PIXMA G3200"); /* ./printers/canon.xml */ +N_("Canon PIXMA G3400"); /* ./printers/canon.xml */ +N_("Canon PIXMA G3500"); /* ./printers/canon.xml */ +N_("Canon PIXMA G3600"); /* ./printers/canon.xml */ +N_("Canon PIXMA G3800"); /* ./printers/canon.xml */ +N_("Canon PIXMA G3900"); /* ./printers/canon.xml */ +N_("Canon G4000 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA G4000"); /* ./printers/canon.xml */ +N_("Canon PIXMA G4100"); /* ./printers/canon.xml */ +N_("Canon PIXMA G4200"); /* ./printers/canon.xml */ +N_("Canon PIXMA G4400"); /* ./printers/canon.xml */ +N_("Canon PIXMA G4500"); /* ./printers/canon.xml */ +N_("Canon PIXMA G4600"); /* ./printers/canon.xml */ +N_("Canon PIXMA G4800"); /* ./printers/canon.xml */ +N_("Canon PIXMA G4900"); /* ./printers/canon.xml */ +N_("Canon PIXMA P200"); /* ./printers/canon.xml */ +N_("Canon TS3100 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS3110"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS3120"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS3130"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS3140"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS3150"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS3160"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS3170"); /* ./printers/canon.xml */ +N_("Canon TS5000 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS5010"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS5020"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS5030"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS5040"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS5050"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS5051"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS5053"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS5055"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS5060"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS5070"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS5080"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS5090"); /* ./printers/canon.xml */ +N_("Canon TS6000 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS6010"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS6020"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS6030"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS6040"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS6050"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS6051"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS6052"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS6060"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS6070"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS6080"); /* ./printers/canon.xml */ +N_("Canon TS8000 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS8010"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS8020"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS8030"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS8040"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS8050"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS8051"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS8052"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS8053"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS8060"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS8070"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS8080"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS8090"); /* ./printers/canon.xml */ +N_("Canon TS9000 series"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS9010"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS9020"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS9030"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS9040"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS9050"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS9055"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS9060"); /* ./printers/canon.xml */ +N_("Canon PIXMA TS9080"); /* ./printers/canon.xml */ +N_("Canon iB4000 series"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4010"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4020"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4030"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4040"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4050"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4060"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4070"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4080"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4090"); /* ./printers/canon.xml */ +N_("Canon iB4100 series"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4110"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4120"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4130"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4140"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4150"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4170"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4180"); /* ./printers/canon.xml */ +N_("Canon MAXIFY iB4190"); /* ./printers/canon.xml */ +N_("Canon MB2000 series"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2010"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2020"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2030"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2040"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2050"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2060"); /* ./printers/canon.xml */ +N_("Canon MB2100 series"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2110"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2120"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2130"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2140"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2150"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2160"); /* ./printers/canon.xml */ +N_("Canon MB2300 series"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2320"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2330"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2340"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2350"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2360"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2390"); /* ./printers/canon.xml */ +N_("Canon MB2700 series"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2710"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2720"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2730"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2740"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2750"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2760"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB2790"); /* ./printers/canon.xml */ +N_("Canon MB5000 series"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5020"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5030"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5040"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5050"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5060"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5070"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5080"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5090"); /* ./printers/canon.xml */ +N_("Canon MB5100 series"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5110"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5120"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5130"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5140"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5150"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5160"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5170"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5180"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5190"); /* ./printers/canon.xml */ +N_("Canon MB5300 series"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5310"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5320"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5330"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5340"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5350"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5360"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5370"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5390"); /* ./printers/canon.xml */ +N_("Canon MB5400 series"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5410"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5420"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5430"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5440"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5450"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5460"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5470"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5480"); /* ./printers/canon.xml */ +N_("Canon MAXIFY MB5490"); /* ./printers/canon.xml */ +N_("Canon PIXUS 50i"); /* ./printers/canon.xml */ +N_("Canon PIXUS 80i"); /* ./printers/canon.xml */ +N_("Canon PIXUS 450i"); /* ./printers/canon.xml */ +N_("Canon PIXUS 455i"); /* ./printers/canon.xml */ +N_("Canon PIXUS 470PD"); /* ./printers/canon.xml */ +N_("Canon PIXUS 475PD"); /* ./printers/canon.xml */ +N_("Canon PIXUS 550i"); /* ./printers/canon.xml */ +N_("Canon PIXUS 560i"); /* ./printers/canon.xml */ +N_("Canon PIXUS 850i"); /* ./printers/canon.xml */ +N_("Canon PIXUS 860i"); /* ./printers/canon.xml */ +N_("Canon PIXUS 865R"); /* ./printers/canon.xml */ +N_("Canon PIXUS 900PD"); /* ./printers/canon.xml */ +N_("Canon PIXUS 950i"); /* ./printers/canon.xml */ +N_("Canon PIXUS 960i"); /* ./printers/canon.xml */ +N_("Canon PIXUS 990i"); /* ./printers/canon.xml */ +N_("Canon PIXUS 6100i"); /* ./printers/canon.xml */ +N_("Canon PIXUS 6500i"); /* ./printers/canon.xml */ +N_("Canon PIXUS 9100i"); /* ./printers/canon.xml */ +N_("Canon PIXUS 9900i"); /* ./printers/canon.xml */ +N_("Canon i70"); /* ./printers/canon.xml */ +N_("Canon i80"); /* ./printers/canon.xml */ +N_("Canon i450"); /* ./printers/canon.xml */ +N_("Canon i450X"); /* ./printers/canon.xml */ +N_("Canon i455"); /* ./printers/canon.xml */ +N_("Canon i455X"); /* ./printers/canon.xml */ +N_("Canon i470D"); /* ./printers/canon.xml */ +N_("Canon i475D"); /* ./printers/canon.xml */ +N_("Canon i550"); /* ./printers/canon.xml */ +N_("Canon i550X"); /* ./printers/canon.xml */ +N_("Canon i560"); /* ./printers/canon.xml */ +N_("Canon i560X"); /* ./printers/canon.xml */ +N_("Canon i850old"); /* ./printers/canon.xml */ +N_("Canon i850"); /* ./printers/canon.xml */ +N_("Canon i860old"); /* ./printers/canon.xml */ +N_("Canon i860"); /* ./printers/canon.xml */ +N_("Canon i865old"); /* ./printers/canon.xml */ +N_("Canon i865"); /* ./printers/canon.xml */ +N_("Canon i900D"); /* ./printers/canon.xml */ +N_("Canon i905D"); /* ./printers/canon.xml */ +N_("Canon i950"); /* ./printers/canon.xml */ +N_("Canon i960"); /* ./printers/canon.xml */ +N_("Canon i965"); /* ./printers/canon.xml */ +N_("Canon i990"); /* ./printers/canon.xml */ +N_("Canon i6100"); /* ./printers/canon.xml */ +N_("Canon i6500"); /* ./printers/canon.xml */ +N_("Canon i9100"); /* ./printers/canon.xml */ +N_("Canon i9900"); /* ./printers/canon.xml */ +N_("Canon i9950"); /* ./printers/canon.xml */ +N_("Datamax-ONeil I4212e Mark II"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil I4310e Mark II"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil I4606e Mark II"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil E4204B Mark III"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil E4304B Mark III"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil E4205A Mark III"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil E4305A Mark III"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil E4206P Mark III"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil E4305P Mark III"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil E4206L Mark III"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil E4305L Mark III"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil RL3e"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil RL4e"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil H4212"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil H4212X"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil H4310"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil H4310X"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil H4408"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil H4606"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil H4606X"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil H6210"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil H6210X"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil H6212"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil H6212X"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil H6308"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil H6310X"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil H8308"); /* ./printers/dpl.xml */ +N_("Datamax-ONeil H8308X"); /* ./printers/dpl.xml */ +N_("Honeywell RP2"); /* ./printers/dpl.xml */ +N_("Honeywell RP4"); /* ./printers/dpl.xml */ +N_("Olympus P-10"); /* ./printers/dyesub.xml */ +N_("Olympus P-11"); /* ./printers/dyesub.xml */ +N_("Olympus P-200"); /* ./printers/dyesub.xml */ +N_("Olympus P-300"); /* ./printers/dyesub.xml */ +N_("Olympus P-300E"); /* ./printers/dyesub.xml */ +N_("Olympus P-300U"); /* ./printers/dyesub.xml */ +N_("Olympus P-330E"); /* ./printers/dyesub.xml */ +N_("Olympus P-330NE"); /* ./printers/dyesub.xml */ +N_("Olympus P-400"); /* ./printers/dyesub.xml */ +N_("Olympus P-440"); /* ./printers/dyesub.xml */ +N_("Olympus P-S100"); /* ./printers/dyesub.xml */ +N_("Canon CP-10"); /* ./printers/dyesub.xml */ +N_("Canon CP-100"); /* ./printers/dyesub.xml */ +N_("Canon CP-200"); /* ./printers/dyesub.xml */ +N_("Canon CP-220"); /* ./printers/dyesub.xml */ +N_("Canon CP-300"); /* ./printers/dyesub.xml */ +N_("Canon CP-330"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP400"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP500"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP510"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP520"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP530"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP600"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP710"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP720"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP730"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP740"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP750"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP760"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP770"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP780"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP790"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP800"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP810"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP820"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP900"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP910"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP1000"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP1200"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY CP1300"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY ES1"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY ES2"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY ES3"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY ES20"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY ES30"); /* ./printers/dyesub.xml */ +N_("Canon SELPHY ES40"); /* ./printers/dyesub.xml */ +N_("CIAAT Brava 21"); /* ./printers/dyesub.xml */ +N_("Citizen CW-01"); /* ./printers/dyesub.xml */ +N_("Citizen CW-02"); /* ./printers/dyesub.xml */ +N_("Citizen CX"); /* ./printers/dyesub.xml */ +N_("Citizen CX-02"); /* ./printers/dyesub.xml */ +N_("Citizen CX-W"); /* ./printers/dyesub.xml */ +N_("Citizen CY"); /* ./printers/dyesub.xml */ +N_("Citizen CY-02"); /* ./printers/dyesub.xml */ +N_("Citizen OP900"); /* ./printers/dyesub.xml */ +N_("Citizen OP900II"); /* ./printers/dyesub.xml */ +N_("Dai Nippon Printing DS40"); /* ./printers/dyesub.xml */ +N_("Dai Nippon Printing DS80"); /* ./printers/dyesub.xml */ +N_("Dai Nippon Printing DS80DX"); /* ./printers/dyesub.xml */ +N_("Dai Nippon Printing DS620"); /* ./printers/dyesub.xml */ +N_("Dai Nippon Printing DS820"); /* ./printers/dyesub.xml */ +N_("Dai Nippon Printing DSRX1"); /* ./printers/dyesub.xml */ +N_("Dai Nippon Printing SL10"); /* ./printers/dyesub.xml */ +N_("Fujifilm ASK-300"); /* ./printers/dyesub.xml */ +N_("Fujifilm ASK-2000"); /* ./printers/dyesub.xml */ +N_("Fujifilm ASK-2500"); /* ./printers/dyesub.xml */ +N_("Fujifilm ASK-4000"); /* ./printers/dyesub.xml */ +N_("Fujifilm FinePix-NX-500"); /* ./printers/dyesub.xml */ +N_("Fujifilm Printpix-CX-400"); /* ./printers/dyesub.xml */ +N_("Fujifilm Printpix-CX-550"); /* ./printers/dyesub.xml */ +N_("Kodak 305"); /* ./printers/dyesub.xml */ +N_("Kodak 605"); /* ./printers/dyesub.xml */ +N_("Kodak 1400"); /* ./printers/dyesub.xml */ +N_("Kodak 6800"); /* ./printers/dyesub.xml */ +N_("Kodak 6850"); /* ./printers/dyesub.xml */ +N_("Kodak 7000"); /* ./printers/dyesub.xml */ +N_("Kodak 7010"); /* ./printers/dyesub.xml */ +N_("Kodak 7015"); /* ./printers/dyesub.xml */ +N_("Kodak 805"); /* ./printers/dyesub.xml */ +N_("Kodak 8500"); /* ./printers/dyesub.xml */ +N_("Kodak 8800"); /* ./printers/dyesub.xml */ +N_("Kodak 8810"); /* ./printers/dyesub.xml */ +N_("Kodak 9810"); /* ./printers/dyesub.xml */ +N_("Kodak EasyShare-G600-Printer-Dock"); /* ./printers/dyesub.xml */ +N_("Kodak Easyshare-Printer-Dock"); /* ./printers/dyesub.xml */ +N_("Kodak PD-4000"); /* ./printers/dyesub.xml */ +N_("Kodak PD-6000"); /* ./printers/dyesub.xml */ +N_("Kodak Photo-Printer"); /* ./printers/dyesub.xml */ +N_("Kodak Photo-Printer-500"); /* ./printers/dyesub.xml */ +N_("Kodak Printer-Dock-Plus"); /* ./printers/dyesub.xml */ +N_("Kodak Printer-Dock-Plus-S3"); /* ./printers/dyesub.xml */ +N_("Magicard Tango 2E"); /* ./printers/dyesub.xml */ +N_("Magicard Rio 2E"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-3020D"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-3020DA"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-3020DAE"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-3020DE"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-3020DU"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-3800DW"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-9500DW"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-9550D"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-9550DW"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-9550DW-S"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-9550DZ"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-9600DW"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-9800D"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-9800DW"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-9800DW-S"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-9800DZ"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-9810D"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-9810DW"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-D80DW"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-D90DW"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-D70DW"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-D707DW"); /* ./printers/dyesub.xml */ +N_("Mitsubishi CP-K60DW-S"); /* ./printers/dyesub.xml */ +N_("Mitsubishi P93D"); /* ./printers/dyesub.xml */ +N_("Mitsubishi P95D"); /* ./printers/dyesub.xml */ +N_("Nidac Copal DPB-4000"); /* ./printers/dyesub.xml */ +N_("Nidac Copal DPB-6000"); /* ./printers/dyesub.xml */ +N_("Nidac Copal DPB-7000"); /* ./printers/dyesub.xml */ +N_("Shinko CHC-S1245"); /* ./printers/dyesub.xml */ +N_("Shinko CHC-S2145"); /* ./printers/dyesub.xml */ +N_("Shinko CHC-S6145"); /* ./printers/dyesub.xml */ +N_("Shinko CHC-S6245"); /* ./printers/dyesub.xml */ +N_("Shinko CHC-S9045"); /* ./printers/dyesub.xml */ +N_("Sinfonia CHC-S1245/E1"); /* ./printers/dyesub.xml */ +N_("Sinfonia CHC-S6145/CS2"); /* ./printers/dyesub.xml */ +N_("Sinfonia CHC-S6245/CE1"); /* ./printers/dyesub.xml */ +N_("Sinfonia S2145/S2"); /* ./printers/dyesub.xml */ +N_("Sony UP-DP10"); /* ./printers/dyesub.xml */ +N_("Sony UP-DR150"); /* ./printers/dyesub.xml */ +N_("Sony DPP-EX5"); /* ./printers/dyesub.xml */ +N_("Sony DPP-EX7"); /* ./printers/dyesub.xml */ +N_("Sony UP-DR100"); /* ./printers/dyesub.xml */ +N_("Sony UP-DR200"); /* ./printers/dyesub.xml */ +N_("Sony UP-CR10L"); /* ./printers/dyesub.xml */ +N_("Epson Artisan 50"); /* ./printers/escp2.xml */ +N_("Epson Artisan 700"); /* ./printers/escp2.xml */ +N_("Epson Artisan 710"); /* ./printers/escp2.xml */ +N_("Epson Artisan 800"); /* ./printers/escp2.xml */ +N_("Epson Artisan 810"); /* ./printers/escp2.xml */ +N_("Epson Artisan 835"); /* ./printers/escp2.xml */ +N_("Epson Artisan 1430"); /* ./printers/escp2.xml */ +N_("Epson B-300"); /* ./printers/escp2.xml */ +N_("Epson B-308"); /* ./printers/escp2.xml */ +N_("Epson B-310"); /* ./printers/escp2.xml */ +N_("Epson B-310N"); /* ./printers/escp2.xml */ +N_("Epson B-500DN"); /* ./printers/escp2.xml */ +N_("Epson B-508DN"); /* ./printers/escp2.xml */ +N_("Epson B-510DN"); /* ./printers/escp2.xml */ +N_("Epson Expression ET-2550 EcoTank"); /* ./printers/escp2.xml */ +N_("Epson Expression ET-2600 EcoTank"); /* ./printers/escp2.xml */ +N_("Epson Expression ET-2650 EcoTank"); /* ./printers/escp2.xml */ +N_("Epson Expression ET-2700 EcoTank"); /* ./printers/escp2.xml */ +N_("Epson Expression ET-2750 EcoTank"); /* ./printers/escp2.xml */ +N_("Epson Expression ET-2750 EcoTank Business Edition"); /* ./printers/escp2.xml */ +N_("Epson XP-15000 Series"); /* ./printers/escp2.xml */ +N_("Epson L120"); /* ./printers/escp2.xml */ +N_("Epson L210"); /* ./printers/escp2.xml */ +N_("Epson L310"); /* ./printers/escp2.xml */ +N_("Epson L1300"); /* ./printers/escp2.xml */ +N_("Epson L1800"); /* ./printers/escp2.xml */ +N_("Epson SC-P400 Series"); /* ./printers/escp2.xml */ +N_("Epson SC-P600 Series"); /* ./printers/escp2.xml */ +N_("Epson SC-P800 Series"); /* ./printers/escp2.xml */ +N_("Epson SC-P6000 Series"); /* ./printers/escp2.xml */ +N_("Epson SC-P7000 Series"); /* ./printers/escp2.xml */ +N_("Epson SC-P8000 Series"); /* ./printers/escp2.xml */ +N_("Epson SC-P9000 Series"); /* ./printers/escp2.xml */ +N_("Epson SC-P10000 Series"); /* ./printers/escp2.xml */ +N_("Epson SC-P20000 Series"); /* ./printers/escp2.xml */ +N_("Epson Stylus C20"); /* ./printers/escp2.xml */ +N_("Epson Stylus C20SX"); /* ./printers/escp2.xml */ +N_("Epson Stylus C20UX"); /* ./printers/escp2.xml */ +N_("Epson Stylus C40"); /* ./printers/escp2.xml */ +N_("Epson Stylus C40SX"); /* ./printers/escp2.xml */ +N_("Epson Stylus C40UX"); /* ./printers/escp2.xml */ +N_("Epson Stylus C41"); /* ./printers/escp2.xml */ +N_("Epson Stylus C41SX"); /* ./printers/escp2.xml */ +N_("Epson Stylus C41UX"); /* ./printers/escp2.xml */ +N_("Epson Stylus C42"); /* ./printers/escp2.xml */ +N_("Epson Stylus C42SX"); /* ./printers/escp2.xml */ +N_("Epson Stylus C42UX"); /* ./printers/escp2.xml */ +N_("Epson Stylus C43"); /* ./printers/escp2.xml */ +N_("Epson Stylus C43SX"); /* ./printers/escp2.xml */ +N_("Epson Stylus C43UX"); /* ./printers/escp2.xml */ +N_("Epson Stylus C44"); /* ./printers/escp2.xml */ +N_("Epson Stylus C44SX"); /* ./printers/escp2.xml */ +N_("Epson Stylus C44UX"); /* ./printers/escp2.xml */ +N_("Epson Stylus C45"); /* ./printers/escp2.xml */ +N_("Epson Stylus C46"); /* ./printers/escp2.xml */ +N_("Epson Stylus C48"); /* ./printers/escp2.xml */ +N_("Epson Stylus C50"); /* ./printers/escp2.xml */ +N_("Epson Stylus C60"); /* ./printers/escp2.xml */ +N_("Epson Stylus C61"); /* ./printers/escp2.xml */ +N_("Epson Stylus C62"); /* ./printers/escp2.xml */ +N_("Epson Stylus C63"); /* ./printers/escp2.xml */ +N_("Epson Stylus C64"); /* ./printers/escp2.xml */ +N_("Epson Stylus C65"); /* ./printers/escp2.xml */ +N_("Epson Stylus C66"); /* ./printers/escp2.xml */ +N_("Epson Stylus C68"); /* ./printers/escp2.xml */ +N_("Epson Stylus C70"); /* ./printers/escp2.xml */ +N_("Epson Stylus C79"); /* ./printers/escp2.xml */ +N_("Epson Stylus C80"); /* ./printers/escp2.xml */ +N_("Epson Stylus C82"); /* ./printers/escp2.xml */ +N_("Epson Stylus C83"); /* ./printers/escp2.xml */ +N_("Epson Stylus C84"); /* ./printers/escp2.xml */ +N_("Epson Stylus C85"); /* ./printers/escp2.xml */ +N_("Epson Stylus C86"); /* ./printers/escp2.xml */ +N_("Epson Stylus C87"); /* ./printers/escp2.xml */ +N_("Epson Stylus C88"); /* ./printers/escp2.xml */ +N_("Epson Stylus C92"); /* ./printers/escp2.xml */ +N_("Epson Stylus C110"); /* ./printers/escp2.xml */ +N_("Epson Stylus C120"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color I"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color II"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color IIs"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color PRO"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro XL"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 400"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 440"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 460"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 480"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 500"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 580"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 600"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 640"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 660"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 670"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 680"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 740"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 760"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 777"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 800"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 850"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 860"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 880"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 8 3"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 900"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 980"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 1160"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 1500"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 1520"); /* ./printers/escp2.xml */ +N_("Epson Stylus Color 3000"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office B30"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office B33"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office B40W"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office B42WD"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office B1100"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office T30"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office T33"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office T40W"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office T1100"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office T1110"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office BX300F"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office BX525WD"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office BX535WD"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office BX600FW"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office BX625FWD"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office BX630FW"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office BX635FWD"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office SX600FW"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office SX620FW"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office TX300F"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office TX600FW"); /* ./printers/escp2.xml */ +N_("Epson Stylus Office TX620FWD"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 700"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo EX"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo EX3"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 720"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 750"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 780"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 785"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 790"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 810"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 820"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 825"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 830"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 830U"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 870"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 875"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 890"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 895"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 900"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 915"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 925"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 935"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 950"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 960"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 1200"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 1270"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 1280"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 1290"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 1290s"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 1400"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 1410"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 2000P"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 2100"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo 2200"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo P50"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R200"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R210"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R220"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R230"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R240"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R245"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R260"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R265"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R270"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R280"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R285"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R290"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R300"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R310"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R320"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R340"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R350"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R360"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R380"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R390"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R800"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R1800"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R1900"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R2000"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R2400"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R2880"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo R3000"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX400"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX420"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX425"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX430"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX500"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX510"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX560"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX580"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX585"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX590"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX595"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX600"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX610"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX620"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX630"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX640"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX650"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX680"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX685"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX690"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo RX700"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo TX700W"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo TX710W"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo TX800FW"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo TX810FW"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 3800"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 3880"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 3885"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 4000"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 4800/4880 Back Compatible"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 4800"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 4880"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 4900"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 5000"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 5500"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 7000"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 7500"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 7600"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 7700"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 7800"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 7880"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 7890"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 7900"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 9000"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 9500"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 9600"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 9700"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 9800"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 9880"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 9890"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 9900"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 10000"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 11800/11880 Back Compatible"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 11800"); /* ./printers/escp2.xml */ +N_("Epson Stylus Pro 11880"); /* ./printers/escp2.xml */ +N_("Epson Stylus Scan 2000"); /* ./printers/escp2.xml */ +N_("Epson Stylus Scan 2500"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX1500"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX3100"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX3200"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX3500"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX3600"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX3650"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX3700"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX3800"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX3805"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX3810"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX3900"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX4100"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX4200"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX4400"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX4500"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX4600"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX4700"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX4800"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX4900"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX5000"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX5000F"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX5100"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX5200"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX5300"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX5400"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX5500"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX5600"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX5700"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX5800"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX6000"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX6300"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX6400"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX6500"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX6600"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX7000F"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX7300"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX7400"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX7700"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX7800"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX8300"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX8400"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX9300F"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX9400"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX9400F"); /* ./printers/escp2.xml */ +N_("Epson Stylus CX9475F"); /* ./printers/escp2.xml */ +N_("Epson Stylus D68"); /* ./printers/escp2.xml */ +N_("Epson Stylus D78"); /* ./printers/escp2.xml */ +N_("Epson Stylus D88"); /* ./printers/escp2.xml */ +N_("Epson Stylus D92"); /* ./printers/escp2.xml */ +N_("Epson Stylus D120"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX3800"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX3850"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX4000"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX4050"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX4200"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX4250"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX4400"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX4450"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX4800"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX4850"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX7000F"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX7400"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX7450"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX8400"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX8450"); /* ./printers/escp2.xml */ +N_("Epson Stylus DX9400F"); /* ./printers/escp2.xml */ +N_("Epson Stylus NX100"); /* ./printers/escp2.xml */ +N_("Epson Stylus NX105"); /* ./printers/escp2.xml */ +N_("Epson Stylus NX115"); /* ./printers/escp2.xml */ +N_("Epson Stylus NX200"); /* ./printers/escp2.xml */ +N_("Epson Stylus NX215"); /* ./printers/escp2.xml */ +N_("Epson Stylus NX300"); /* ./printers/escp2.xml */ +N_("Epson Stylus NX400"); /* ./printers/escp2.xml */ +N_("Epson Stylus NX415"); /* ./printers/escp2.xml */ +N_("Epson Stylus NX420"); /* ./printers/escp2.xml */ +N_("Epson Stylus NX515"); /* ./printers/escp2.xml */ +N_("Epson Stylus NX530"); /* ./printers/escp2.xml */ +N_("Epson Stylus NX625"); /* ./printers/escp2.xml */ +N_("Epson Stylus NX630"); /* ./printers/escp2.xml */ +N_("Epson Stylus NX635"); /* ./printers/escp2.xml */ +N_("Epson Stylus NX645"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo PX650"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo PX700W"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo PX710W"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo PX800FW"); /* ./printers/escp2.xml */ +N_("Epson Stylus Photo PX810FW"); /* ./printers/escp2.xml */ +N_("Epson Stylus S20"); /* ./printers/escp2.xml */ +N_("Epson Stylus S21"); /* ./printers/escp2.xml */ +N_("Epson Stylus S50"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX100"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX105"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX110"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX115"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX200"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX205"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX210"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX215"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX400"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX405"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX410"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX415"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX420"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX445W"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX510W"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX515"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX525"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX535FW"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX600FW"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX610FW"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX615"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX630"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX635"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX645"); /* ./printers/escp2.xml */ +N_("Epson Stylus SX650"); /* ./printers/escp2.xml */ +N_("Epson Stylus T13"); /* ./printers/escp2.xml */ +N_("Epson Stylus T20"); /* ./printers/escp2.xml */ +N_("Epson Stylus T21"); /* ./printers/escp2.xml */ +N_("Epson Stylus T22"); /* ./printers/escp2.xml */ +N_("Epson Stylus T22E"); /* ./printers/escp2.xml */ +N_("Epson Stylus T26"); /* ./printers/escp2.xml */ +N_("Epson Stylus T30"); /* ./printers/escp2.xml */ +N_("Epson Stylus T40W"); /* ./printers/escp2.xml */ +N_("Epson Stylus T42WD"); /* ./printers/escp2.xml */ +N_("Epson Stylus T50"); /* ./printers/escp2.xml */ +N_("Epson Stylus T59"); /* ./printers/escp2.xml */ +N_("Epson Stylus T60"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX100"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX101"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX102"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX103"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX104"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX105"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX106"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX109"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX110"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX125"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX200"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX210"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX300F"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX400"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX410"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX420"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX510FN"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX550W"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX560WD"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX610FW"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX615"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX630"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX635"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX645"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX650"); /* ./printers/escp2.xml */ +N_("Epson Stylus TX659"); /* ./printers/escp2.xml */ +N_("Epson Stylus XP100"); /* ./printers/escp2.xml */ +N_("Epson SureColor P400"); /* ./printers/escp2.xml */ +N_("Epson SureColor P600"); /* ./printers/escp2.xml */ +N_("Epson SureColor P800"); /* ./printers/escp2.xml */ +N_("Epson SureColor P6000"); /* ./printers/escp2.xml */ +N_("Epson SureColor P7000"); /* ./printers/escp2.xml */ +N_("Epson SureColor P7000 Commercial Edition"); /* ./printers/escp2.xml */ +N_("Epson SureColor P8000"); /* ./printers/escp2.xml */ +N_("Epson SureColor P9000"); /* ./printers/escp2.xml */ +N_("Epson SureColor P9000 Commercial Edition"); /* ./printers/escp2.xml */ +N_("Epson SureColor P10000"); /* ./printers/escp2.xml */ +N_("Epson SureColor P20000"); /* ./printers/escp2.xml */ +N_("Epson PictureMate"); /* ./printers/escp2.xml */ +N_("Epson PictureMate Dash"); /* ./printers/escp2.xml */ +N_("Epson PictureMate Deluxe"); /* ./printers/escp2.xml */ +N_("Epson PictureMate Flash"); /* ./printers/escp2.xml */ +N_("Epson PictureMate Pal"); /* ./printers/escp2.xml */ +N_("Epson PictureMate Snap"); /* ./printers/escp2.xml */ +N_("Epson PictureMate 100"); /* ./printers/escp2.xml */ +N_("Epson PictureMate 200"); /* ./printers/escp2.xml */ +N_("Epson PictureMate 210"); /* ./printers/escp2.xml */ +N_("Epson PictureMate 215"); /* ./printers/escp2.xml */ +N_("Epson PictureMate 240"); /* ./printers/escp2.xml */ +N_("Epson PictureMate 250"); /* ./printers/escp2.xml */ +N_("Epson PictureMate 260"); /* ./printers/escp2.xml */ +N_("Epson PictureMate 270"); /* ./printers/escp2.xml */ +N_("Epson PictureMate 280"); /* ./printers/escp2.xml */ +N_("Epson PictureMate 290"); /* ./printers/escp2.xml */ +N_("Epson PictureMate 500"); /* ./printers/escp2.xml */ +N_("Epson PictureMate 2005"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 30"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 40"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 60"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 310"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 315"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 500"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 545"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 600"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 610"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 615"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 625"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 630"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 633"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 635"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 645"); /* ./printers/escp2.xml */ +N_("Epson WorkForce 1100"); /* ./printers/escp2.xml */ +N_("Epson WF-7010 Series"); /* ./printers/escp2.xml */ +N_("Epson WF-7011 Series"); /* ./printers/escp2.xml */ +N_("Epson WF-7015 Series"); /* ./printers/escp2.xml */ +N_("Epson WF-7018 Series"); /* ./printers/escp2.xml */ +N_("Epson WF-7510 Series"); /* ./printers/escp2.xml */ +N_("Epson WF-7511 Series"); /* ./printers/escp2.xml */ +N_("Epson WF-7515 Series"); /* ./printers/escp2.xml */ +N_("Epson WF-7520 Series"); /* ./printers/escp2.xml */ +N_("Epson WF-7521 Series"); /* ./printers/escp2.xml */ +N_("Epson WF-7525 Series"); /* ./printers/escp2.xml */ +N_("Epson CL 700"); /* ./printers/escp2.xml */ +N_("Epson CL 750"); /* ./printers/escp2.xml */ +N_("Epson CL 760"); /* ./printers/escp2.xml */ +N_("Epson E 100"); /* ./printers/escp2.xml */ +N_("Epson E 150"); /* ./printers/escp2.xml */ +N_("Epson E 200"); /* ./printers/escp2.xml */ +N_("Epson E 300"); /* ./printers/escp2.xml */ +N_("Epson E 500"); /* ./printers/escp2.xml */ +N_("Epson E 520"); /* ./printers/escp2.xml */ +N_("Epson E 700"); /* ./printers/escp2.xml */ +N_("Epson E 720"); /* ./printers/escp2.xml */ +N_("Epson EM 900C"); /* ./printers/escp2.xml */ +N_("Epson EM 930C"); /* ./printers/escp2.xml */ +N_("Epson EP 302"); /* ./printers/escp2.xml */ +N_("Epson EP 702A"); /* ./printers/escp2.xml */ +N_("Epson EP 801A"); /* ./printers/escp2.xml */ +N_("Epson EP 901A"); /* ./printers/escp2.xml */ +N_("Epson EP 901F"); /* ./printers/escp2.xml */ +N_("Epson MC 2000"); /* ./printers/escp2.xml */ +N_("Epson MC 5000"); /* ./printers/escp2.xml */ +N_("Epson MC 7000"); /* ./printers/escp2.xml */ +N_("Epson MC 9000"); /* ./printers/escp2.xml */ +N_("Epson MC 10000"); /* ./printers/escp2.xml */ +N_("Epson ME 300"); /* ./printers/escp2.xml */ +N_("Epson ME 320"); /* ./printers/escp2.xml */ +N_("Epson ME Office 70"); /* ./printers/escp2.xml */ +N_("Epson ME Office 80W"); /* ./printers/escp2.xml */ +N_("Epson ME Office 82WD"); /* ./printers/escp2.xml */ +N_("Epson ME Office 85ND"); /* ./printers/escp2.xml */ +N_("Epson ME Office 360"); /* ./printers/escp2.xml */ +N_("Epson ME Office 600F"); /* ./printers/escp2.xml */ +N_("Epson ME Office 620F"); /* ./printers/escp2.xml */ +N_("Epson ME Office 700FW"); /* ./printers/escp2.xml */ +N_("Epson ME Office 900WD"); /* ./printers/escp2.xml */ +N_("Epson ME Office 940FW"); /* ./printers/escp2.xml */ +N_("Epson ME Office 960FWD"); /* ./printers/escp2.xml */ +N_("Epson ME Office 1100"); /* ./printers/escp2.xml */ +N_("Epson MJ 930C"); /* ./printers/escp2.xml */ +N_("Epson MJ 5100C"); /* ./printers/escp2.xml */ +N_("Epson MJ 6000C"); /* ./printers/escp2.xml */ +N_("Epson MJ 8000C"); /* ./printers/escp2.xml */ +N_("Epson PM 670C"); /* ./printers/escp2.xml */ +N_("Epson PM 700C"); /* ./printers/escp2.xml */ +N_("Epson PM 730C"); /* ./printers/escp2.xml */ +N_("Epson PM 740C"); /* ./printers/escp2.xml */ +N_("Epson PM 750C"); /* ./printers/escp2.xml */ +N_("Epson PM 760C"); /* ./printers/escp2.xml */ +N_("Epson PM 770C"); /* ./printers/escp2.xml */ +N_("Epson PM 780C"); /* ./printers/escp2.xml */ +N_("Epson PM 790PT"); /* ./printers/escp2.xml */ +N_("Epson PM 800C"); /* ./printers/escp2.xml */ +N_("Epson PM 850PT"); /* ./printers/escp2.xml */ +N_("Epson PM 870C"); /* ./printers/escp2.xml */ +N_("Epson PM 880C"); /* ./printers/escp2.xml */ +N_("Epson PM 930C"); /* ./printers/escp2.xml */ +N_("Epson PM 940C"); /* ./printers/escp2.xml */ +N_("Epson PM 950C"); /* ./printers/escp2.xml */ +N_("Epson PM 970C"); /* ./printers/escp2.xml */ +N_("Epson PM 980C"); /* ./printers/escp2.xml */ +N_("Epson PM 2000C"); /* ./printers/escp2.xml */ +N_("Epson PM 2200C"); /* ./printers/escp2.xml */ +N_("Epson PM 3000C"); /* ./printers/escp2.xml */ +N_("Epson PM 3300C"); /* ./printers/escp2.xml */ +N_("Epson PM 3500C"); /* ./printers/escp2.xml */ +N_("Epson PM 3700C"); /* ./printers/escp2.xml */ +N_("Epson PM 4000PX"); /* ./printers/escp2.xml */ +N_("Epson PM 5000C"); /* ./printers/escp2.xml */ +N_("Epson PM 7000C"); /* ./printers/escp2.xml */ +N_("Epson PM 9000C"); /* ./printers/escp2.xml */ +N_("Epson PM 10000"); /* ./printers/escp2.xml */ +N_("Epson PM A650"); /* ./printers/escp2.xml */ +N_("Epson PM A750"); /* ./printers/escp2.xml */ +N_("Epson PM A820"); /* ./printers/escp2.xml */ +N_("Epson PM A890"); /* ./printers/escp2.xml */ +N_("Epson PM A900"); /* ./printers/escp2.xml */ +N_("Epson PM A940"); /* ./printers/escp2.xml */ +N_("Epson PM A950"); /* ./printers/escp2.xml */ +N_("Epson PM D600"); /* ./printers/escp2.xml */ +N_("Epson PM D750"); /* ./printers/escp2.xml */ +N_("Epson PM D770"); /* ./printers/escp2.xml */ +N_("Epson PM D800"); /* ./printers/escp2.xml */ +N_("Epson PM D870"); /* ./printers/escp2.xml */ +N_("Epson PM D1000"); /* ./printers/escp2.xml */ +N_("Epson PM G700"); /* ./printers/escp2.xml */ +N_("Epson PM G720"); /* ./printers/escp2.xml */ +N_("Epson PM G730"); /* ./printers/escp2.xml */ +N_("Epson PM G800"); /* ./printers/escp2.xml */ +N_("Epson PM G820"); /* ./printers/escp2.xml */ +N_("Epson PM G850"); /* ./printers/escp2.xml */ +N_("Epson PM T960"); /* ./printers/escp2.xml */ +N_("Epson PM G4500"); /* ./printers/escp2.xml */ +N_("Epson PX A650"); /* ./printers/escp2.xml */ +N_("Epson Offirio PX B300"); /* ./printers/escp2.xml */ +N_("Epson Offirio PX B500"); /* ./printers/escp2.xml */ +N_("Epson PX 7V"); /* ./printers/escp2.xml */ +N_("Epson PX 101"); /* ./printers/escp2.xml */ +N_("Epson PX 201"); /* ./printers/escp2.xml */ +N_("Epson PX 203"); /* ./printers/escp2.xml */ +N_("Epson PX 204"); /* ./printers/escp2.xml */ +N_("Epson PX 401A"); /* ./printers/escp2.xml */ +N_("Epson PX 503A"); /* ./printers/escp2.xml */ +N_("Epson PX 504A"); /* ./printers/escp2.xml */ +N_("Epson PX 601F"); /* ./printers/escp2.xml */ +N_("Epson PX 603F"); /* ./printers/escp2.xml */ +N_("Epson PX 1001"); /* ./printers/escp2.xml */ +N_("Epson PX 1200"); /* ./printers/escp2.xml */ +N_("Epson PX 1600F"); /* ./printers/escp2.xml */ +N_("Epson PX 1700F"); /* ./printers/escp2.xml */ +N_("Epson PX G900"); /* ./printers/escp2.xml */ +N_("Epson PX G920"); /* ./printers/escp2.xml */ +N_("Epson PX G5000"); /* ./printers/escp2.xml */ +N_("Epson PX G5300"); /* ./printers/escp2.xml */ +N_("Epson PX V500"); /* ./printers/escp2.xml */ +N_("Epson PX V600"); /* ./printers/escp2.xml */ +N_("Epson PX V630"); /* ./printers/escp2.xml */ +N_("Epson PX V780"); /* ./printers/escp2.xml */ +N_("Epson PX 5500"); /* ./printers/escp2.xml */ +N_("Epson PX G5600"); /* ./printers/escp2.xml */ +N_("Epson PX 7000"); /* ./printers/escp2.xml */ +N_("Epson PX 9000"); /* ./printers/escp2.xml */ +N_("Epson XP-820"); /* ./printers/escp2.xml */ +N_("Compaq IJ1200"); /* ./printers/lexmark.xml */ +N_("Lexmark X73"); /* ./printers/lexmark.xml */ +N_("Lexmark Z42"); /* ./printers/lexmark.xml */ +N_("Lexmark Z43"); /* ./printers/lexmark.xml */ +N_("Lexmark Z52"); /* ./printers/lexmark.xml */ +N_("Lexmark Z53"); /* ./printers/lexmark.xml */ +N_("Apollo P-2100"); /* ./printers/pcl.xml */ +N_("Apollo P-2150"); /* ./printers/pcl.xml */ +N_("Apollo P-2200"); /* ./printers/pcl.xml */ +N_("Apollo P-2250"); /* ./printers/pcl.xml */ +N_("Apollo P-2500"); /* ./printers/pcl.xml */ +N_("Apollo P-2550"); /* ./printers/pcl.xml */ +N_("Apollo P-2600"); /* ./printers/pcl.xml */ +N_("Apollo P-2650"); /* ./printers/pcl.xml */ +N_("Apple Color StyleWriter 4100"); /* ./printers/pcl.xml */ +N_("Apple Color StyleWriter 4500"); /* ./printers/pcl.xml */ +N_("Apple Color StyleWriter 6500"); /* ./printers/pcl.xml */ +N_("Apple LaserWriter Select 360"); /* ./printers/pcl.xml */ +N_("Brother DCP-1200"); /* ./printers/pcl.xml */ +N_("Brother DCP-8045D"); /* ./printers/pcl.xml */ +N_("Brother HL-1040"); /* ./printers/pcl.xml */ +N_("Brother HL-1050"); /* ./printers/pcl.xml */ +N_("Brother HL-1060"); /* ./printers/pcl.xml */ +N_("Brother HL-1070"); /* ./printers/pcl.xml */ +N_("Brother HL-10V"); /* ./printers/pcl.xml */ +N_("Brother HL-10h"); /* ./printers/pcl.xml */ +N_("Brother HL-1240"); /* ./printers/pcl.xml */ +N_("Brother HL-1250"); /* ./printers/pcl.xml */ +N_("Brother HL-1260"); /* ./printers/pcl.xml */ +N_("Brother HL-1270N"); /* ./printers/pcl.xml */ +N_("Brother HL-1440"); /* ./printers/pcl.xml */ +N_("Brother HL-1450"); /* ./printers/pcl.xml */ +N_("Brother HL-1470N"); /* ./printers/pcl.xml */ +N_("Brother HL-1650"); /* ./printers/pcl.xml */ +N_("Brother HL-1660e"); /* ./printers/pcl.xml */ +N_("Brother HL-1670N"); /* ./printers/pcl.xml */ +N_("Brother HL-1850"); /* ./printers/pcl.xml */ +N_("Brother HL-1870N"); /* ./printers/pcl.xml */ +N_("Brother HL-2060"); /* ./printers/pcl.xml */ +N_("Brother HL-2250DN"); /* ./printers/pcl.xml */ +N_("Brother HL-2400CeN"); /* ./printers/pcl.xml */ +N_("Brother HL-2460"); /* ./printers/pcl.xml */ +N_("Brother HL-2460N"); /* ./printers/pcl.xml */ +N_("Brother HL-2600CN"); /* ./printers/pcl.xml */ +N_("Brother HL-3400CN"); /* ./printers/pcl.xml */ +N_("Brother HL-3450CN"); /* ./printers/pcl.xml */ +N_("Brother HL-4Ve"); /* ./printers/pcl.xml */ +N_("Brother HL-4040CN"); /* ./printers/pcl.xml */ +N_("Brother HL-5030"); /* ./printers/pcl.xml */ +N_("Brother HL-5040"); /* ./printers/pcl.xml */ +N_("Brother HL-5050"); /* ./printers/pcl.xml */ +N_("Brother HL-5070N"); /* ./printers/pcl.xml */ +N_("Brother HL-5140"); /* ./printers/pcl.xml */ +N_("Brother HL-5150D"); /* ./printers/pcl.xml */ +N_("Brother HL-5170DN"); /* ./printers/pcl.xml */ +N_("Brother HL-5340D"); /* ./printers/pcl.xml */ +N_("Brother HL-630"); /* ./printers/pcl.xml */ +N_("Brother HL-660"); /* ./printers/pcl.xml */ +N_("Brother HL-7050"); /* ./printers/pcl.xml */ +N_("Brother HL-7050N"); /* ./printers/pcl.xml */ +N_("Brother HL-760"); /* ./printers/pcl.xml */ +N_("Brother HL-960"); /* ./printers/pcl.xml */ +N_("Brother MFC-6550MC"); /* ./printers/pcl.xml */ +N_("Brother MFC-8300"); /* ./printers/pcl.xml */ +N_("Brother MFC-9500"); /* ./printers/pcl.xml */ +N_("Brother MFC-9600"); /* ./printers/pcl.xml */ +N_("Canon GP 335"); /* ./printers/pcl.xml */ +N_("Canon LBP-4sx"); /* ./printers/pcl.xml */ +N_("Canon LBP-430"); /* ./printers/pcl.xml */ +N_("Canon LBP-1000"); /* ./printers/pcl.xml */ +N_("Canon LBP-1260"); /* ./printers/pcl.xml */ +N_("Canon LBP-1760"); /* ./printers/pcl.xml */ +N_("Canon LBP-3360"); /* ./printers/pcl.xml */ +N_("Canon LBP-5360"); /* ./printers/pcl.xml */ +N_("Canon LBP-5390"); /* ./printers/pcl.xml */ +N_("Canon imageRunner 330s"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C2550"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C2570"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C2570i"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C2570N"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C2620N"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C3100"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C3170"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C3170i"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C3200"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C5030"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C5058"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C5068"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C5180"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C5185"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C5185i"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C5800"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C5870U"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C6800"); /* ./printers/pcl.xml */ +N_("Canon imageRunner C6870U"); /* ./printers/pcl.xml */ +N_("Citizen ProJet II"); /* ./printers/pcl.xml */ +N_("Datamax-ONeil p1115"); /* ./printers/pcl.xml */ +N_("Datamax-ONeil p1115s"); /* ./printers/pcl.xml */ +N_("Datamax-ONeil p1120n"); /* ./printers/pcl.xml */ +N_("Datamax-ONeil p1125"); /* ./printers/pcl.xml */ +N_("Datamax-ONeil p1725"); /* ./printers/pcl.xml */ +N_("Datamax-ONeil w1110"); /* ./printers/pcl.xml */ +N_("Datamax-ONeil H8308p"); /* ./printers/pcl.xml */ +N_("DEC 1800"); /* ./printers/pcl.xml */ +N_("DEC LN17"); /* ./printers/pcl.xml */ +N_("Dell 3000cn"); /* ./printers/pcl.xml */ +N_("Dell 3100cn"); /* ./printers/pcl.xml */ +N_("Epson ActionLaser 1100"); /* ./printers/pcl.xml */ +N_("Epson ActionLaser II"); /* ./printers/pcl.xml */ +N_("Epson AL-C2000"); /* ./printers/pcl.xml */ +N_("Epson AL-C2000 PS3"); /* ./printers/pcl.xml */ +N_("Epson AL-C8500"); /* ./printers/pcl.xml */ +N_("Epson AL-C8500PS"); /* ./printers/pcl.xml */ +N_("Epson AL-C8600"); /* ./printers/pcl.xml */ +N_("Epson AL-C8600 PS3"); /* ./printers/pcl.xml */ +N_("Epson EPL-5200"); /* ./printers/pcl.xml */ +N_("Epson EPL-5200+"); /* ./printers/pcl.xml */ +N_("Epson EPL-5700"); /* ./printers/pcl.xml */ +N_("Epson EPL-5700PS"); /* ./printers/pcl.xml */ +N_("Epson EPL-5800"); /* ./printers/pcl.xml */ +N_("Epson EPL-5800PS"); /* ./printers/pcl.xml */ +N_("Epson EPL-5900"); /* ./printers/pcl.xml */ +N_("Epson EPL-5900 PS3"); /* ./printers/pcl.xml */ +N_("Epson EPL-6100"); /* ./printers/pcl.xml */ +N_("Epson EPL-6100 PS3"); /* ./printers/pcl.xml */ +N_("Epson EPL-7100"); /* ./printers/pcl.xml */ +N_("Epson EPL-N2050"); /* ./printers/pcl.xml */ +N_("Epson EPL-N2050+"); /* ./printers/pcl.xml */ +N_("Epson EPL-N2050PS"); /* ./printers/pcl.xml */ +N_("Epson EPL-N2050PS+"); /* ./printers/pcl.xml */ +N_("Epson EPL-N2120"); /* ./printers/pcl.xml */ +N_("Epson EPL-N2500"); /* ./printers/pcl.xml */ +N_("Epson EPL-N2500 PS3"); /* ./printers/pcl.xml */ +N_("Epson EPL-N2750"); /* ./printers/pcl.xml */ +N_("Epson EPL-N2750PS"); /* ./printers/pcl.xml */ +N_("Fujitsu PrintPartner 10V"); /* ./printers/pcl.xml */ +N_("Fujitsu PrintPartner 16DV"); /* ./printers/pcl.xml */ +N_("Fujitsu PrintPartner 20W"); /* ./printers/pcl.xml */ +N_("Fujitsu PrintPartner 8000"); /* ./printers/pcl.xml */ +N_("Generic PCL 4 Printer"); /* ./printers/pcl.xml */ +N_("Generic PCL 4 Printer wide margin"); /* ./printers/pcl.xml */ +N_("Generic PCL 4 LF Printer"); /* ./printers/pcl.xml */ +N_("Generic PCL 5 Printer"); /* ./printers/pcl.xml */ +N_("Generic PCL 5 Printer wide margin"); /* ./printers/pcl.xml */ +N_("Generic PCL 5 LF Printer"); /* ./printers/pcl.xml */ +N_("Generic PCL 5c Printer"); /* ./printers/pcl.xml */ +N_("Generic PCL 5c LF Printer"); /* ./printers/pcl.xml */ +N_("Generic PCL 5e Printer"); /* ./printers/pcl.xml */ +N_("Generic PCL 5e LF Printer"); /* ./printers/pcl.xml */ +N_("Generic PCL 6/PCL XL Printer"); /* ./printers/pcl.xml */ +N_("Generic PCL 6/PCL XL LF Printer"); /* ./printers/pcl.xml */ +N_("Generic PCL 6 Printer wide margin"); /* ./printers/pcl.xml */ +N_("Generic PCL 6 LF Printer wide margin"); /* ./printers/pcl.xml */ +N_("Generic PCL 6 Tabl Printer wide margin"); /* ./printers/pcl.xml */ +N_("Generic PCL Color Laser"); /* ./printers/pcl.xml */ +N_("Generic PCL Color Laser LF Printer"); /* ./printers/pcl.xml */ +N_("Generic PCL Color wide margin"); /* ./printers/pcl.xml */ +N_("Generic PCL Color LF wide margin"); /* ./printers/pcl.xml */ +N_("Generic PCL Color Tabl wide margin"); /* ./printers/pcl.xml */ +N_("Gestetner 10512"); /* ./printers/pcl.xml */ +N_("Gestetner 2212"); /* ./printers/pcl.xml */ +N_("Gestetner 2712"); /* ./printers/pcl.xml */ +N_("Gestetner 3212"); /* ./printers/pcl.xml */ +N_("Gestetner 3502"); /* ./printers/pcl.xml */ +N_("Gestetner 3532/4235g"); /* ./printers/pcl.xml */ +N_("Gestetner 4502"); /* ./printers/pcl.xml */ +N_("Gestetner 4532/4245g"); /* ./printers/pcl.xml */ +N_("Gestetner 6002"); /* ./printers/pcl.xml */ +N_("Gestetner 7502"); /* ./printers/pcl.xml */ +N_("Gestetner 9002"); /* ./printers/pcl.xml */ +N_("Gestetner CS555"); /* ./printers/pcl.xml */ +N_("Gestetner DSc1020"); /* ./printers/pcl.xml */ +N_("Gestetner DSc1025"); /* ./printers/pcl.xml */ +N_("Gestetner DSc1030"); /* ./printers/pcl.xml */ +N_("Gestetner DSc1045"); /* ./printers/pcl.xml */ +N_("Gestetner DSc1060"); /* ./printers/pcl.xml */ +N_("Gestetner DSc1120"); /* ./printers/pcl.xml */ +N_("Gestetner DSc1220"); /* ./printers/pcl.xml */ +N_("Gestetner DSc1225"); /* ./printers/pcl.xml */ +N_("Gestetner DSc1230"); /* ./printers/pcl.xml */ +N_("Gestetner DSc1245"); /* ./printers/pcl.xml */ +N_("Gestetner DSc1260"); /* ./printers/pcl.xml */ +N_("Gestetner DSc424"); /* ./printers/pcl.xml */ +N_("Gestetner DSc428"); /* ./printers/pcl.xml */ +N_("Gestetner DSc432"); /* ./printers/pcl.xml */ +N_("Gestetner DSc435"); /* ./printers/pcl.xml */ +N_("Gestetner DSc445"); /* ./printers/pcl.xml */ +N_("Gestetner DSc460"); /* ./printers/pcl.xml */ +N_("Gestetner DSm415"); /* ./printers/pcl.xml */ +N_("Gestetner DSm615"); /* ./printers/pcl.xml */ +N_("Gestetner DSm616"); /* ./printers/pcl.xml */ +N_("Gestetner DSm618"); /* ./printers/pcl.xml */ +N_("Gestetner DSm618d"); /* ./printers/pcl.xml */ +N_("Gestetner DSm620"); /* ./printers/pcl.xml */ +N_("Gestetner DSm620d"); /* ./printers/pcl.xml */ +N_("Gestetner DSm622"); /* ./printers/pcl.xml */ +N_("Gestetner DSm627"); /* ./printers/pcl.xml */ +N_("Gestetner DSm635/635G"); /* ./printers/pcl.xml */ +N_("Gestetner DSm645/645G"); /* ./printers/pcl.xml */ +N_("Gestetner DSm651"); /* ./printers/pcl.xml */ +N_("Gestetner DSm660"); /* ./printers/pcl.xml */ +N_("Gestetner DSm675"); /* ./printers/pcl.xml */ +N_("Gestetner DSm725"); /* ./printers/pcl.xml */ +N_("Gestetner DSm730"); /* ./printers/pcl.xml */ +N_("Gestetner DSm735/735G"); /* ./printers/pcl.xml */ +N_("Gestetner DSm745/745G"); /* ./printers/pcl.xml */ +N_("Gestetner MP1100/DSm7110"); /* ./printers/pcl.xml */ +N_("Gestetner MP1350/DSm7135"); /* ./printers/pcl.xml */ +N_("Gestetner MP1600/DSm716"); /* ./printers/pcl.xml */ +N_("Gestetner MP2000/DSm721d"); /* ./printers/pcl.xml */ +N_("Gestetner MP2500/DSm625"); /* ./printers/pcl.xml */ +N_("Gestetner MP3500/DSm735e"); /* ./printers/pcl.xml */ +N_("Gestetner MP4500/DSm745e"); /* ./printers/pcl.xml */ +N_("Gestetner MP5500/DSm755"); /* ./printers/pcl.xml */ +N_("Gestetner MP6500/DSm765"); /* ./printers/pcl.xml */ +N_("Gestetner MP7500/DSm775"); /* ./printers/pcl.xml */ +N_("Gestetner MP9000/DSm790"); /* ./printers/pcl.xml */ +N_("Gestetner MP 161/DSm416"); /* ./printers/pcl.xml */ +N_("Gestetner MP 2510/DSm725e"); /* ./printers/pcl.xml */ +N_("Gestetner MP 2550"); /* ./printers/pcl.xml */ +N_("Gestetner MP 2550B"); /* ./printers/pcl.xml */ +N_("Gestetner MP 3010/DSm730e"); /* ./printers/pcl.xml */ +N_("Gestetner MP 3350"); /* ./printers/pcl.xml */ +N_("Gestetner MP 3350B"); /* ./printers/pcl.xml */ +N_("Gestetner MP 4000"); /* ./printers/pcl.xml */ +N_("Gestetner MP 4000B"); /* ./printers/pcl.xml */ +N_("Gestetner MP 5000"); /* ./printers/pcl.xml */ +N_("Gestetner MP 5000B"); /* ./printers/pcl.xml */ +N_("Gestetner MPC1500/GS106"); /* ./printers/pcl.xml */ +N_("Gestetner MPC2500/DSc525"); /* ./printers/pcl.xml */ +N_("Gestetner MPC3000/DSc530"); /* ./printers/pcl.xml */ +N_("Gestetner MPC3500/DSc535"); /* ./printers/pcl.xml */ +N_("Gestetner MPC4500/DSc545"); /* ./printers/pcl.xml */ +N_("Gestetner MP C2003"); /* ./printers/pcl.xml */ +N_("Gestetner MP C2004"); /* ./printers/pcl.xml */ +N_("Gestetner MP C2011"); /* ./printers/pcl.xml */ +N_("Gestetner MP C2050"); /* ./printers/pcl.xml */ +N_("Gestetner MP C2051"); /* ./printers/pcl.xml */ +N_("Gestetner MP C2503"); /* ./printers/pcl.xml */ +N_("Gestetner MP C2504"); /* ./printers/pcl.xml */ +N_("Gestetner MP C2550"); /* ./printers/pcl.xml */ +N_("Gestetner MP C2551"); /* ./printers/pcl.xml */ +N_("Gestetner MP C2800"); /* ./printers/pcl.xml */ +N_("Gestetner MP C300"); /* ./printers/pcl.xml */ +N_("Gestetner MP C3001"); /* ./printers/pcl.xml */ +N_("Gestetner MP C3002"); /* ./printers/pcl.xml */ +N_("Gestetner MP C3003"); /* ./printers/pcl.xml */ +N_("Gestetner MP C3004"); /* ./printers/pcl.xml */ +N_("Gestetner MP C300SR"); /* ./printers/pcl.xml */ +N_("Gestetner MP C3300"); /* ./printers/pcl.xml */ +N_("Gestetner MP C3501"); /* ./printers/pcl.xml */ +N_("Gestetner MP C3502"); /* ./printers/pcl.xml */ +N_("Gestetner MP C3503"); /* ./printers/pcl.xml */ +N_("Gestetner MP C3504"); /* ./printers/pcl.xml */ +N_("Gestetner MP C400"); /* ./printers/pcl.xml */ +N_("Gestetner MP C4000"); /* ./printers/pcl.xml */ +N_("Gestetner MP C400SR"); /* ./printers/pcl.xml */ +N_("Gestetner MP C4501"); /* ./printers/pcl.xml */ +N_("Gestetner MP C4501A"); /* ./printers/pcl.xml */ +N_("Gestetner MP C4502"); /* ./printers/pcl.xml */ +N_("Gestetner MP C4502A"); /* ./printers/pcl.xml */ +N_("Gestetner MP C4503"); /* ./printers/pcl.xml */ +N_("Gestetner MP C4504"); /* ./printers/pcl.xml */ +N_("Gestetner MP C5000"); /* ./printers/pcl.xml */ +N_("Gestetner MP C5501"); /* ./printers/pcl.xml */ +N_("Gestetner MP C5501A"); /* ./printers/pcl.xml */ +N_("Gestetner MP C5502"); /* ./printers/pcl.xml */ +N_("Gestetner MP C5502A"); /* ./printers/pcl.xml */ +N_("Gestetner MP C5503"); /* ./printers/pcl.xml */ +N_("Gestetner MP C6000"); /* ./printers/pcl.xml */ +N_("Gestetner MP C6003"); /* ./printers/pcl.xml */ +N_("Gestetner MP C6004"); /* ./printers/pcl.xml */ +N_("Gestetner MP C6501"); /* ./printers/pcl.xml */ +N_("Gestetner MP C6502"); /* ./printers/pcl.xml */ +N_("Gestetner MP C6503"); /* ./printers/pcl.xml */ +N_("Gestetner MP C7500"); /* ./printers/pcl.xml */ +N_("Gestetner MP C7501"); /* ./printers/pcl.xml */ +N_("Gestetner MP C8002"); /* ./printers/pcl.xml */ +N_("Gestetner MP C8003"); /* ./printers/pcl.xml */ +N_("Gestetner Pro C5200S"); /* ./printers/pcl.xml */ +N_("Gestetner Pro C5210S"); /* ./printers/pcl.xml */ +N_("HP Business Inkjet 2200"); /* ./printers/pcl.xml */ +N_("HP Business Inkjet 2230"); /* ./printers/pcl.xml */ +N_("HP Business Inkjet 2250"); /* ./printers/pcl.xml */ +N_("HP Business Inkjet 2250TN"); /* ./printers/pcl.xml */ +N_("HP Business Inkjet 2280"); /* ./printers/pcl.xml */ +N_("HP Color Inkjet Printer CP1160"); /* ./printers/pcl.xml */ +N_("HP Color Inkjet Printer CP1700"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 2500"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 3000"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 3000n"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 3000dn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 3000dtn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 3700"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 3700n"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 3800"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 3800n"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 3800dn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 3800dtn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 4500"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 4550"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 4600"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 4610"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 4650"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 4700"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 4700n"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 4700dn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 4700dtn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 4700ph+"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 5"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 5m"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 5000"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 5500"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 5500n"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 5500dn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 5500dtn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 5500hdn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 8500"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 8500n"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 8500dn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 8550"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 8550DN"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 8550GN"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 8550MN"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 9500"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 9500n"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 9500hdn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet 9500gp"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM1312"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM1312nfi"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM1411fn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM1412fn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM1413fn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM1415fn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM1415fnw"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM1416fnw"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM1417fnw"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM1418fnw"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM2320 MFP"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM2320FXI MFP"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM2320N MFP"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM2320NF MFP"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM3530 MFP"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM4540 MFP"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM4730 MFP"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM6030 MFP"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM6040 MFP"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM6040f MFP"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CM6049f MFP"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP1514n"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP1515n"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP1518ni"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP2025"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP2025dn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP2025n"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP2025x"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP3505"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP3505dn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP3505n"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP3505x"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP3525"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP3525dn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP3525n"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP3525x"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP4005"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP4005dn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP4005n"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP4020"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP4500"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP4520"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP4540 MFP"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP5225"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP5225dn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP5225n"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP5520"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP6015dn"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP6015de"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP6015n"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP6015x"); /* ./printers/pcl.xml */ +N_("HP Color LaserJet CP6015xh"); /* ./printers/pcl.xml */ +N_("HP DesignJet 230"); /* ./printers/pcl.xml */ +N_("HP DesignJet 250C"); /* ./printers/pcl.xml */ +N_("HP DesignJet 430"); /* ./printers/pcl.xml */ +N_("HP DesignJet 450C"); /* ./printers/pcl.xml */ +N_("HP DesignJet 455CA"); /* ./printers/pcl.xml */ +N_("HP DesignJet 488CA"); /* ./printers/pcl.xml */ +N_("HP DesignJet 700"); /* ./printers/pcl.xml */ +N_("HP DesignJet 750C Plus"); /* ./printers/pcl.xml */ +N_("HP DesignJet 750C"); /* ./printers/pcl.xml */ +N_("HP DesignJet 2500CP"); /* ./printers/pcl.xml */ +N_("HP DesignJet 3500CP"); /* ./printers/pcl.xml */ +N_("HP DesignJet ColorPro CAD"); /* ./printers/pcl.xml */ +N_("HP DeskJet 400"); /* ./printers/pcl.xml */ +N_("HP DeskJet 420C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 450"); /* ./printers/pcl.xml */ +N_("HP DeskJet 500"); /* ./printers/pcl.xml */ +N_("HP DeskJet 500C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 505J Plus"); /* ./printers/pcl.xml */ +N_("HP DeskJet 510"); /* ./printers/pcl.xml */ +N_("HP DeskJet 520"); /* ./printers/pcl.xml */ +N_("HP DeskJet 540C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 550C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 5550"); /* ./printers/pcl.xml */ +N_("HP DeskJet 5551"); /* ./printers/pcl.xml */ +N_("HP DeskJet 560C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 600"); /* ./printers/pcl.xml */ +N_("HP DeskJet 600C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 610C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 610CL"); /* ./printers/pcl.xml */ +N_("HP DeskJet 6122"); /* ./printers/pcl.xml */ +N_("HP DeskJet 6127"); /* ./printers/pcl.xml */ +N_("HP DeskJet 612C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 640C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 648C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 660C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 670C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 670TV"); /* ./printers/pcl.xml */ +N_("HP DeskJet 672C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 680C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 682C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 690C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 692C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 693C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 694C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 695C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 697C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 810C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 812C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 815C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 816C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 825C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 830C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 832C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 840C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 841C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 842C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 843C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 845C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 850C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 855C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 870C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 880C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 882C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 890C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 895C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 916C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 920C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 9300"); /* ./printers/pcl.xml */ +N_("HP DeskJet 930C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 932C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 933C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 934C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 935C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 940C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 948C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 950C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 952C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 955C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 957C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 959C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 960C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 970C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 975C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 980C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 990C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 995C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 1100C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 1120C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 1125C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 1200C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 1220C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 1600C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 1600CM"); /* ./printers/pcl.xml */ +N_("HP DeskJet 2000"); /* ./printers/pcl.xml */ +N_("HP DeskJet 2500"); /* ./printers/pcl.xml */ +N_("HP DeskJet 2500CM"); /* ./printers/pcl.xml */ +N_("HP DeskJet 340C"); /* ./printers/pcl.xml */ +N_("HP DeskJet 3810"); /* ./printers/pcl.xml */ +N_("HP DeskJet 3816"); /* ./printers/pcl.xml */ +N_("HP DeskJet 3820"); /* ./printers/pcl.xml */ +N_("HP DeskJet 3822"); /* ./printers/pcl.xml */ +N_("HP LaserJet 2"); /* ./printers/pcl.xml */ +N_("HP LaserJet 2D"); /* ./printers/pcl.xml */ +N_("HP LaserJet 2P Plus"); /* ./printers/pcl.xml */ +N_("HP LaserJet 2P"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3D"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3P w/ PCL5"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3P w/PS"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4 Plus"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4L"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4M"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4ML"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4P"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4Si"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4V"); /* ./printers/pcl.xml */ +N_("HP LaserJet 5"); /* ./printers/pcl.xml */ +N_("HP LaserJet 5L"); /* ./printers/pcl.xml */ +N_("HP LaserJet 5M"); /* ./printers/pcl.xml */ +N_("HP LaserJet 5MP"); /* ./printers/pcl.xml */ +N_("HP LaserJet 5N"); /* ./printers/pcl.xml */ +N_("HP LaserJet 5P"); /* ./printers/pcl.xml */ +N_("HP LaserJet 5Si"); /* ./printers/pcl.xml */ +N_("HP LaserJet 6"); /* ./printers/pcl.xml */ +N_("HP LaserJet 6L"); /* ./printers/pcl.xml */ +N_("HP LaserJet 6MP"); /* ./printers/pcl.xml */ +N_("HP LaserJet 6P"); /* ./printers/pcl.xml */ +N_("HP LaserJet 1010"); /* ./printers/pcl.xml */ +N_("HP LaserJet 1012"); /* ./printers/pcl.xml */ +N_("HP LaserJet 1015"); /* ./printers/pcl.xml */ +N_("HP LaserJet 1022"); /* ./printers/pcl.xml */ +N_("HP LaserJet 1100"); /* ./printers/pcl.xml */ +N_("HP LaserJet 1100A"); /* ./printers/pcl.xml */ +N_("HP LaserJet 1150"); /* ./printers/pcl.xml */ +N_("HP LaserJet 1160"); /* ./printers/pcl.xml */ +N_("HP LaserJet 1200"); /* ./printers/pcl.xml */ +N_("HP LaserJet 1220"); /* ./printers/pcl.xml */ +N_("HP LaserJet 1300"); /* ./printers/pcl.xml */ +N_("HP LaserJet 1320"); /* ./printers/pcl.xml */ +N_("HP LaserJet 2100"); /* ./printers/pcl.xml */ +N_("HP LaserJet 2100M"); /* ./printers/pcl.xml */ +N_("HP LaserJet 2200"); /* ./printers/pcl.xml */ +N_("HP LaserJet 2300"); /* ./printers/pcl.xml */ +N_("HP LaserJet 2410"); /* ./printers/pcl.xml */ +N_("HP LaserJet 2420"); /* ./printers/pcl.xml */ +N_("HP LaserJet 2430"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3015"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3020"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3030"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3050"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3052"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3055"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3200"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3200m"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3200se"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3300 MFP"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3310 MFP"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3320 MFP"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3320N MFP"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3330 MFP"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3380"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3390"); /* ./printers/pcl.xml */ +N_("HP LaserJet 3392"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4000"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4050"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4100"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4200"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4240"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4250"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4300"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4345 mfp"); /* ./printers/pcl.xml */ +N_("HP LaserJet 4350"); /* ./printers/pcl.xml */ +N_("HP LaserJet 5000"); /* ./printers/pcl.xml */ +N_("HP LaserJet 5100"); /* ./printers/pcl.xml */ +N_("HP LaserJet 5200"); /* ./printers/pcl.xml */ +N_("HP LaserJet 5200L"); /* ./printers/pcl.xml */ +N_("HP LaserJet 8000"); /* ./printers/pcl.xml */ +N_("HP LaserJet 8100"); /* ./printers/pcl.xml */ +N_("HP LaserJet 8150"); /* ./printers/pcl.xml */ +N_("HP LaserJet 9000"); /* ./printers/pcl.xml */ +N_("HP LaserJet 9040"); /* ./printers/pcl.xml */ +N_("HP LaserJet 9040 MFP"); /* ./printers/pcl.xml */ +N_("HP LaserJet 9050"); /* ./printers/pcl.xml */ +N_("HP LaserJet 9050 MFP"); /* ./printers/pcl.xml */ +N_("HP LaserJet M3027 MFP"); /* ./printers/pcl.xml */ +N_("HP LaserJet M3035 MFP"); /* ./printers/pcl.xml */ +N_("HP LaserJet M4345 MFP"); /* ./printers/pcl.xml */ +N_("HP LaserJet M5025 MFP"); /* ./printers/pcl.xml */ +N_("HP LaserJet M5035 MFP"); /* ./printers/pcl.xml */ +N_("HP LaserJet P2010"); /* ./printers/pcl.xml */ +N_("HP LaserJet P2015"); /* ./printers/pcl.xml */ +N_("HP LaserJet P3004"); /* ./printers/pcl.xml */ +N_("HP LaserJet P3005"); /* ./printers/pcl.xml */ +N_("HP Mopier 240"); /* ./printers/pcl.xml */ +N_("HP Mopier 320"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 300"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 330"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 350"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 500"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 520"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 570"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 580"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 590"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 600"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 610"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 625"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 630"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 635"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 700"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 710"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 720"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 725"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 5105"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 5110"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 5110xi"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 6105"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 6110"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 7110"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 7130"); /* ./printers/pcl.xml */ +N_("HP OfficeJet 7140"); /* ./printers/pcl.xml */ +N_("HP OfficeJet D125"); /* ./printers/pcl.xml */ +N_("HP OfficeJet D135"); /* ./printers/pcl.xml */ +N_("HP OfficeJet D145"); /* ./printers/pcl.xml */ +N_("HP OfficeJet D155"); /* ./printers/pcl.xml */ +N_("HP OfficeJet G55"); /* ./printers/pcl.xml */ +N_("HP OfficeJet G85"); /* ./printers/pcl.xml */ +N_("HP OfficeJet G95"); /* ./printers/pcl.xml */ +N_("HP OfficeJet K60"); /* ./printers/pcl.xml */ +N_("HP OfficeJet K60xi"); /* ./printers/pcl.xml */ +N_("HP OfficeJet K80"); /* ./printers/pcl.xml */ +N_("HP OfficeJet K80xi"); /* ./printers/pcl.xml */ +N_("HP OfficeJet LX"); /* ./printers/pcl.xml */ +N_("HP OfficeJet Pro 1150C"); /* ./printers/pcl.xml */ +N_("HP OfficeJet Pro 1170C"); /* ./printers/pcl.xml */ +N_("HP OfficeJet Pro 1175C"); /* ./printers/pcl.xml */ +N_("HP OfficeJet R40"); /* ./printers/pcl.xml */ +N_("HP OfficeJet R45"); /* ./printers/pcl.xml */ +N_("HP OfficeJet R60"); /* ./printers/pcl.xml */ +N_("HP OfficeJet R65"); /* ./printers/pcl.xml */ +N_("HP OfficeJet R80"); /* ./printers/pcl.xml */ +N_("HP OfficeJet T45"); /* ./printers/pcl.xml */ +N_("HP OfficeJet T65"); /* ./printers/pcl.xml */ +N_("HP OfficeJet V40"); /* ./printers/pcl.xml */ +N_("HP OfficeJet V40xi"); /* ./printers/pcl.xml */ +N_("HP OfficeJet"); /* ./printers/pcl.xml */ +N_("HP PSC 370"); /* ./printers/pcl.xml */ +N_("HP PSC 380"); /* ./printers/pcl.xml */ +N_("HP PSC 500"); /* ./printers/pcl.xml */ +N_("HP PSC 750"); /* ./printers/pcl.xml */ +N_("HP PSC 950"); /* ./printers/pcl.xml */ +N_("HP PSC 950xi"); /* ./printers/pcl.xml */ +N_("HP PSC 2110"); /* ./printers/pcl.xml */ +N_("HP PSC 2150"); /* ./printers/pcl.xml */ +N_("HP PSC 2210"); /* ./printers/pcl.xml */ +N_("HP PhotoSmart 7150"); /* ./printers/pcl.xml */ +N_("HP PhotoSmart 7345"); /* ./printers/pcl.xml */ +N_("HP PhotoSmart 7350"); /* ./printers/pcl.xml */ +N_("HP PhotoSmart 7550"); /* ./printers/pcl.xml */ +N_("HP PhotoSmart P100"); /* ./printers/pcl.xml */ +N_("HP PhotoSmart P130"); /* ./printers/pcl.xml */ +N_("HP PhotoSmart P230"); /* ./printers/pcl.xml */ +N_("HP PhotoSmart P1000"); /* ./printers/pcl.xml */ +N_("HP PhotoSmart P1100"); /* ./printers/pcl.xml */ +N_("HP PhotoSmart P1115"); /* ./printers/pcl.xml */ +N_("HP PhotoSmart P1215"); /* ./printers/pcl.xml */ +N_("HP PhotoSmart P1218"); /* ./printers/pcl.xml */ +N_("HP PhotoSmart P1315"); /* ./printers/pcl.xml */ +N_("HP e-printer e20"); /* ./printers/pcl.xml */ +N_("IBM 4019"); /* ./printers/pcl.xml */ +N_("IBM 4029 030 LaserPrinter 10"); /* ./printers/pcl.xml */ +N_("IBM 4312"); /* ./printers/pcl.xml */ +N_("IBM Infoprint 12"); /* ./printers/pcl.xml */ +N_("IBM Page Printer 3112"); /* ./printers/pcl.xml */ +N_("Infotec 4353 MF"); /* ./printers/pcl.xml */ +N_("Infotec 4452 MF"); /* ./printers/pcl.xml */ +N_("Infotec 4651 MF"); /* ./printers/pcl.xml */ +N_("Infotec IS2022"); /* ./printers/pcl.xml */ +N_("Infotec IS2027"); /* ./printers/pcl.xml */ +N_("Infotec IS2032"); /* ./printers/pcl.xml */ +N_("Infotec IS2035"); /* ./printers/pcl.xml */ +N_("Infotec IS2045"); /* ./printers/pcl.xml */ +N_("Infotec IS2090"); /* ./printers/pcl.xml */ +N_("Infotec IS2105"); /* ./printers/pcl.xml */ +N_("Infotec IS 2015"); /* ./printers/pcl.xml */ +N_("Infotec IS 2018"); /* ./printers/pcl.xml */ +N_("Infotec IS 2018D"); /* ./printers/pcl.xml */ +N_("Infotec IS 2060"); /* ./printers/pcl.xml */ +N_("Infotec IS 2075"); /* ./printers/pcl.xml */ +N_("Infotec IS 2122"); /* ./printers/pcl.xml */ +N_("Infotec IS 2127"); /* ./printers/pcl.xml */ +N_("Infotec IS 2132"); /* ./printers/pcl.xml */ +N_("Infotec IS 2135"); /* ./printers/pcl.xml */ +N_("Infotec IS 2145"); /* ./printers/pcl.xml */ +N_("Infotec IS 2151"); /* ./printers/pcl.xml */ +N_("Infotec IS 2160"); /* ./printers/pcl.xml */ +N_("Infotec IS 2175"); /* ./printers/pcl.xml */ +N_("Infotec IS 2215"); /* ./printers/pcl.xml */ +N_("Infotec IS 2216"); /* ./printers/pcl.xml */ +N_("Infotec IS 2220"); /* ./printers/pcl.xml */ +N_("Infotec IS 2220D"); /* ./printers/pcl.xml */ +N_("Infotec IS 2225"); /* ./printers/pcl.xml */ +N_("Infotec IS 2230"); /* ./printers/pcl.xml */ +N_("Infotec IS 2235"); /* ./printers/pcl.xml */ +N_("Infotec IS 2245"); /* ./printers/pcl.xml */ +N_("Infotec IS 2255"); /* ./printers/pcl.xml */ +N_("Infotec IS 2265"); /* ./printers/pcl.xml */ +N_("Infotec IS 2275"); /* ./printers/pcl.xml */ +N_("Infotec IS 2316"); /* ./printers/pcl.xml */ +N_("Infotec IS 2320"); /* ./printers/pcl.xml */ +N_("Infotec IS 2325"); /* ./printers/pcl.xml */ +N_("Infotec IS 2416"); /* ./printers/pcl.xml */ +N_("Infotec IS 2425"); /* ./printers/pcl.xml */ +N_("Infotec IS 2430"); /* ./printers/pcl.xml */ +N_("Infotec IS 2435"); /* ./printers/pcl.xml */ +N_("Infotec IS 2445"); /* ./printers/pcl.xml */ +N_("Infotec IS 3090"); /* ./printers/pcl.xml */ +N_("Infotec IS 3110"); /* ./printers/pcl.xml */ +N_("Infotec IS 3135"); /* ./printers/pcl.xml */ +N_("Infotec ISC 1024c"); /* ./printers/pcl.xml */ +N_("Infotec ISC 1032c"); /* ./printers/pcl.xml */ +N_("Infotec ISC 2428"); /* ./printers/pcl.xml */ +N_("Infotec ISC 2525"); /* ./printers/pcl.xml */ +N_("Infotec ISC 2835"); /* ./printers/pcl.xml */ +N_("Infotec ISC 3030"); /* ./printers/pcl.xml */ +N_("Infotec ISC 3535"); /* ./printers/pcl.xml */ +N_("Infotec ISC 3545"); /* ./printers/pcl.xml */ +N_("Infotec ISC 4045"); /* ./printers/pcl.xml */ +N_("Infotec ISC 4560"); /* ./printers/pcl.xml */ +N_("Infotec ISC 5560"); /* ./printers/pcl.xml */ +N_("Infotec ISC 615G"); /* ./printers/pcl.xml */ +N_("Infotec MP 2550"); /* ./printers/pcl.xml */ +N_("Infotec MP 2550B"); /* ./printers/pcl.xml */ +N_("Infotec MP 3350"); /* ./printers/pcl.xml */ +N_("Infotec MP 3350B"); /* ./printers/pcl.xml */ +N_("Infotec MP 4000"); /* ./printers/pcl.xml */ +N_("Infotec MP 4000B"); /* ./printers/pcl.xml */ +N_("Infotec MP 5000"); /* ./printers/pcl.xml */ +N_("Infotec MP 5000B"); /* ./printers/pcl.xml */ +N_("Infotec MP C2003"); /* ./printers/pcl.xml */ +N_("Infotec MP C2003Z"); /* ./printers/pcl.xml */ +N_("Infotec MP C2004"); /* ./printers/pcl.xml */ +N_("Infotec MP C2011"); /* ./printers/pcl.xml */ +N_("Infotec MP C2050"); /* ./printers/pcl.xml */ +N_("Infotec MP C2051"); /* ./printers/pcl.xml */ +N_("Infotec MP C2503"); /* ./printers/pcl.xml */ +N_("Infotec MP C2503Z"); /* ./printers/pcl.xml */ +N_("Infotec MP C2504"); /* ./printers/pcl.xml */ +N_("Infotec MP C2550"); /* ./printers/pcl.xml */ +N_("Infotec MP C2551"); /* ./printers/pcl.xml */ +N_("Infotec MP C2800"); /* ./printers/pcl.xml */ +N_("Infotec MP C300"); /* ./printers/pcl.xml */ +N_("Infotec MP C3001"); /* ./printers/pcl.xml */ +N_("Infotec MP C3002"); /* ./printers/pcl.xml */ +N_("Infotec MP C3003"); /* ./printers/pcl.xml */ +N_("Infotec MP C3004"); /* ./printers/pcl.xml */ +N_("Infotec MP C300SR"); /* ./printers/pcl.xml */ +N_("Infotec MP C3300"); /* ./printers/pcl.xml */ +N_("Infotec MP C3501"); /* ./printers/pcl.xml */ +N_("Infotec MP C3502"); /* ./printers/pcl.xml */ +N_("Infotec MP C3503"); /* ./printers/pcl.xml */ +N_("Infotec MP C3504"); /* ./printers/pcl.xml */ +N_("Infotec MP C400"); /* ./printers/pcl.xml */ +N_("Infotec MP C4000"); /* ./printers/pcl.xml */ +N_("Infotec MP C400SR"); /* ./printers/pcl.xml */ +N_("Infotec MP C4501"); /* ./printers/pcl.xml */ +N_("Infotec MP C4501A"); /* ./printers/pcl.xml */ +N_("Infotec MP C4502"); /* ./printers/pcl.xml */ +N_("Infotec MP C4502A"); /* ./printers/pcl.xml */ +N_("Infotec MP C4503"); /* ./printers/pcl.xml */ +N_("Infotec MP C4504"); /* ./printers/pcl.xml */ +N_("Infotec MP C5000"); /* ./printers/pcl.xml */ +N_("Infotec MP C5501"); /* ./printers/pcl.xml */ +N_("Infotec MP C5501A"); /* ./printers/pcl.xml */ +N_("Infotec MP C5502"); /* ./printers/pcl.xml */ +N_("Infotec MP C5502A"); /* ./printers/pcl.xml */ +N_("Infotec MP C5503"); /* ./printers/pcl.xml */ +N_("Infotec MP C5504"); /* ./printers/pcl.xml */ +N_("Infotec MP C6000"); /* ./printers/pcl.xml */ +N_("Infotec MP C6003"); /* ./printers/pcl.xml */ +N_("Infotec MP C6004"); /* ./printers/pcl.xml */ +N_("Infotec MP C6501"); /* ./printers/pcl.xml */ +N_("Infotec MP C6502"); /* ./printers/pcl.xml */ +N_("Infotec MP C6503"); /* ./printers/pcl.xml */ +N_("Infotec MP C7500"); /* ./printers/pcl.xml */ +N_("Infotec MP C7501"); /* ./printers/pcl.xml */ +N_("Infotec MP C8002"); /* ./printers/pcl.xml */ +N_("Infotec MP C8003"); /* ./printers/pcl.xml */ +N_("Infotec Pro C5100S"); /* ./printers/pcl.xml */ +N_("Infotec Pro C5110S"); /* ./printers/pcl.xml */ +N_("Infotec Pro C5200S"); /* ./printers/pcl.xml */ +N_("Infotec Pro C5210S"); /* ./printers/pcl.xml */ +N_("Infotec Pro C7100"); /* ./printers/pcl.xml */ +N_("Infotec Pro C7100S"); /* ./printers/pcl.xml */ +N_("Infotec Pro C7110"); /* ./printers/pcl.xml */ +N_("Infotec Pro C7110S"); /* ./printers/pcl.xml */ +N_("Kyocera CS-1815"); /* ./printers/pcl.xml */ +N_("Kyocera CS-2525E"); /* ./printers/pcl.xml */ +N_("Kyocera CS-3225E"); /* ./printers/pcl.xml */ +N_("Kyocera CS-3232E"); /* ./printers/pcl.xml */ +N_("Kyocera CS-4035E"); /* ./printers/pcl.xml */ +N_("Kyocera CS-250ci"); /* ./printers/pcl.xml */ +N_("Kyocera CS-300ci"); /* ./printers/pcl.xml */ +N_("Kyocera CS-3050ci"); /* ./printers/pcl.xml */ +N_("Kyocera CS-3550ci"); /* ./printers/pcl.xml */ +N_("Kyocera CS-400ci"); /* ./printers/pcl.xml */ +N_("Kyocera CS-500ci"); /* ./printers/pcl.xml */ +N_("Kyocera Ci-1100"); /* ./printers/pcl.xml */ +N_("Kyocera F-1010"); /* ./printers/pcl.xml */ +N_("Kyocera FS-600 - KPDL-2"); /* ./printers/pcl.xml */ +N_("Kyocera FS-600"); /* ./printers/pcl.xml */ +N_("Kyocera FS-680"); /* ./printers/pcl.xml */ +N_("Kyocera FS-800"); /* ./printers/pcl.xml */ +N_("Kyocera FS-920"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1000"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1000+"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1010"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1018MFP"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1020D"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1030D"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1050"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1118MFP"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1135MFP"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1200"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1600"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1600+"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1700"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1700+"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1714M"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1750"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1800"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1800+"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1900"); /* ./printers/pcl.xml */ +N_("Kyocera FS-1920"); /* ./printers/pcl.xml */ +N_("Kyocera FS-2000D"); /* ./printers/pcl.xml */ +N_("Kyocera FS-3500"); /* ./printers/pcl.xml */ +N_("Kyocera FS-3600"); /* ./printers/pcl.xml */ +N_("Kyocera FS-3600+"); /* ./printers/pcl.xml */ +N_("Kyocera FS-3700"); /* ./printers/pcl.xml */ +N_("Kyocera FS-3700+"); /* ./printers/pcl.xml */ +N_("Kyocera FS-3718M"); /* ./printers/pcl.xml */ +N_("Kyocera FS-3750"); /* ./printers/pcl.xml */ +N_("Kyocera FS-3800"); /* ./printers/pcl.xml */ +N_("Kyocera FS-3820N"); /* ./printers/pcl.xml */ +N_("Kyocera FS-3830N"); /* ./printers/pcl.xml */ +N_("Kyocera FS-3900DN"); /* ./printers/pcl.xml */ +N_("Kyocera FS-4000DN"); /* ./printers/pcl.xml */ +N_("Kyocera FS-5800C"); /* ./printers/pcl.xml */ +N_("Kyocera FS-5900C"); /* ./printers/pcl.xml */ +N_("Kyocera FS-6020"); /* ./printers/pcl.xml */ +N_("Kyocera FS-6026"); /* ./printers/pcl.xml */ +N_("Kyocera FS-6300"); /* ./printers/pcl.xml */ +N_("Kyocera FS-6500"); /* ./printers/pcl.xml */ +N_("Kyocera FS-6500+"); /* ./printers/pcl.xml */ +N_("Kyocera FS-6700"); /* ./printers/pcl.xml */ +N_("Kyocera FS-6750"); /* ./printers/pcl.xml */ +N_("Kyocera FS-6900"); /* ./printers/pcl.xml */ +N_("Kyocera FS-6950DN"); /* ./printers/pcl.xml */ +N_("Kyocera FS-7000"); /* ./printers/pcl.xml */ +N_("Kyocera FS-7000+"); /* ./printers/pcl.xml */ +N_("Kyocera FS-7028M"); /* ./printers/pcl.xml */ +N_("Kyocera FS-8000C"); /* ./printers/pcl.xml */ +N_("Kyocera FS-9000"); /* ./printers/pcl.xml */ +N_("Kyocera FS-9100DN"); /* ./printers/pcl.xml */ +N_("Kyocera FS-9130DN"); /* ./printers/pcl.xml */ +N_("Kyocera FS-9500DN"); /* ./printers/pcl.xml */ +N_("Kyocera FS-9530DN"); /* ./printers/pcl.xml */ +N_("Kyocera FS-C5015N"); /* ./printers/pcl.xml */ +N_("Kyocera FS-C5016N"); /* ./printers/pcl.xml */ +N_("Kyocera FS-C5020N"); /* ./printers/pcl.xml */ +N_("Kyocera FS-C5025N"); /* ./printers/pcl.xml */ +N_("Kyocera FS-C5030N"); /* ./printers/pcl.xml */ +N_("Kyocera FS-C5100DN"); /* ./printers/pcl.xml */ +N_("Kyocera FS-C5200DN"); /* ./printers/pcl.xml */ +N_("Kyocera FS-C5300DN"); /* ./printers/pcl.xml */ +N_("Kyocera FS-C5350DN"); /* ./printers/pcl.xml */ +N_("Kyocera FS-C5400DN"); /* ./printers/pcl.xml */ +N_("Kyocera FS-C8008N"); /* ./printers/pcl.xml */ +N_("Kyocera FS-C8100DN"); /* ./printers/pcl.xml */ +N_("Kyocera FS-C8100DN+"); /* ./printers/pcl.xml */ +N_("Kyocera KM-1510"); /* ./printers/pcl.xml */ +N_("Kyocera KM-1530"); /* ./printers/pcl.xml */ +N_("Kyocera KM-1810"); /* ./printers/pcl.xml */ +N_("Kyocera KM-1815"); /* ./printers/pcl.xml */ +N_("Kyocera KM-1820"); /* ./printers/pcl.xml */ +N_("Kyocera KM-2030"); /* ./printers/pcl.xml */ +N_("Kyocera KM-2530"); /* ./printers/pcl.xml */ +N_("Kyocera KM-3050"); /* ./printers/pcl.xml */ +N_("Kyocera KM-3530"); /* ./printers/pcl.xml */ +N_("Kyocera KM-4050"); /* ./printers/pcl.xml */ +N_("Kyocera KM-4230"); /* ./printers/pcl.xml */ +N_("Kyocera KM-4230/5230"); /* ./printers/pcl.xml */ +N_("Kyocera KM-4530"); /* ./printers/pcl.xml */ +N_("Kyocera KM-5050"); /* ./printers/pcl.xml */ +N_("Kyocera KM-5230"); /* ./printers/pcl.xml */ +N_("Kyocera KM-5530"); /* ./printers/pcl.xml */ +N_("Kyocera KM-6030"); /* ./printers/pcl.xml */ +N_("Kyocera KM-6230"); /* ./printers/pcl.xml */ +N_("Kyocera KM-8030"); /* ./printers/pcl.xml */ +N_("Kyocera KM-C830"); /* ./printers/pcl.xml */ +N_("Kyocera KM-C850"); /* ./printers/pcl.xml */ +N_("Kyocera KM-C2520"); /* ./printers/pcl.xml */ +N_("Kyocera KM-C2525E"); /* ./printers/pcl.xml */ +N_("Kyocera KM-C2630"); /* ./printers/pcl.xml */ +N_("Kyocera KM-C3225"); /* ./printers/pcl.xml */ +N_("Kyocera KM-C3225E"); /* ./printers/pcl.xml */ +N_("Kyocera KM-C3232"); /* ./printers/pcl.xml */ +N_("Kyocera KM-C3232E"); /* ./printers/pcl.xml */ +N_("Kyocera KM-C4035E"); /* ./printers/pcl.xml */ +N_("Kyocera TASKalfa 250ci"); /* ./printers/pcl.xml */ +N_("Kyocera TASKalfa 300ci"); /* ./printers/pcl.xml */ +N_("Kyocera TASKalfa 400ci"); /* ./printers/pcl.xml */ +N_("Kyocera TASKalfa 500ci"); /* ./printers/pcl.xml */ +N_("Lanier 5622"); /* ./printers/pcl.xml */ +N_("Lanier 5627"); /* ./printers/pcl.xml */ +N_("Lanier 5632"); /* ./printers/pcl.xml */ +N_("Lanier 5635"); /* ./printers/pcl.xml */ +N_("Lanier 5645"); /* ./printers/pcl.xml */ +N_("Lanier LC155"); /* ./printers/pcl.xml */ +N_("Lanier LD0105"); /* ./printers/pcl.xml */ +N_("Lanier LD015"); /* ./printers/pcl.xml */ +N_("Lanier LD035"); /* ./printers/pcl.xml */ +N_("Lanier LD045"); /* ./printers/pcl.xml */ +N_("Lanier LD060"); /* ./printers/pcl.xml */ +N_("Lanier LD075"); /* ./printers/pcl.xml */ +N_("Lanier LD090"); /* ./printers/pcl.xml */ +N_("Lanier LD115"); /* ./printers/pcl.xml */ +N_("Lanier LD116"); /* ./printers/pcl.xml */ +N_("Lanier LD118"); /* ./printers/pcl.xml */ +N_("Lanier LD118d"); /* ./printers/pcl.xml */ +N_("Lanier LD120"); /* ./printers/pcl.xml */ +N_("Lanier LD120d"); /* ./printers/pcl.xml */ +N_("Lanier LD122"); /* ./printers/pcl.xml */ +N_("Lanier LD124c"); /* ./printers/pcl.xml */ +N_("Lanier LD127"); /* ./printers/pcl.xml */ +N_("Lanier LD132"); /* ./printers/pcl.xml */ +N_("Lanier LD132c"); /* ./printers/pcl.xml */ +N_("Lanier LD135"); /* ./printers/pcl.xml */ +N_("Lanier LD145"); /* ./printers/pcl.xml */ +N_("Lanier LD151"); /* ./printers/pcl.xml */ +N_("Lanier LD160"); /* ./printers/pcl.xml */ +N_("Lanier LD160c"); /* ./printers/pcl.xml */ +N_("Lanier LD175"); /* ./printers/pcl.xml */ +N_("Lanier LD225"); /* ./printers/pcl.xml */ +N_("Lanier LD230"); /* ./printers/pcl.xml */ +N_("Lanier LD235"); /* ./printers/pcl.xml */ +N_("Lanier LD245"); /* ./printers/pcl.xml */ +N_("Lanier LD328c"); /* ./printers/pcl.xml */ +N_("Lanier LD335c"); /* ./printers/pcl.xml */ +N_("Lanier LD345c"); /* ./printers/pcl.xml */ +N_("Lanier LD 130C"); /* ./printers/pcl.xml */ +N_("Lanier LD 130CSR"); /* ./printers/pcl.xml */ +N_("Lanier LD 140C"); /* ./printers/pcl.xml */ +N_("Lanier LD 140CSR"); /* ./printers/pcl.xml */ +N_("Lanier LD 620C"); /* ./printers/pcl.xml */ +N_("Lanier LD 625C"); /* ./printers/pcl.xml */ +N_("Lanier MP2500/LD125"); /* ./printers/pcl.xml */ +N_("Lanier MP 1100/LD1100"); /* ./printers/pcl.xml */ +N_("Lanier MP 1350/LD1135"); /* ./printers/pcl.xml */ +N_("Lanier MP 1600/LD316"); /* ./printers/pcl.xml */ +N_("Lanier MP 161/LD016"); /* ./printers/pcl.xml */ +N_("Lanier MP 2000/LD320d"); /* ./printers/pcl.xml */ +N_("Lanier MP 2510/LD325"); /* ./printers/pcl.xml */ +N_("Lanier MP 2550B/LD425B"); /* ./printers/pcl.xml */ +N_("Lanier MP 2550/LD425"); /* ./printers/pcl.xml */ +N_("Lanier MP 3010/LD330"); /* ./printers/pcl.xml */ +N_("Lanier MP 3350B/LD433B"); /* ./printers/pcl.xml */ +N_("Lanier MP 3350/LD433"); /* ./printers/pcl.xml */ +N_("Lanier MP 3500/LD335"); /* ./printers/pcl.xml */ +N_("Lanier MP 4000B/LD040B"); /* ./printers/pcl.xml */ +N_("Lanier MP 4000/LD040"); /* ./printers/pcl.xml */ +N_("Lanier MP 4500/LD345"); /* ./printers/pcl.xml */ +N_("Lanier MP 5000B/LD050B"); /* ./printers/pcl.xml */ +N_("Lanier MP 5000/LD050"); /* ./printers/pcl.xml */ +N_("Lanier MP 5500/LD255"); /* ./printers/pcl.xml */ +N_("Lanier MP 6500/LD265"); /* ./printers/pcl.xml */ +N_("Lanier MP 7500/LD275"); /* ./printers/pcl.xml */ +N_("Lanier MP 9000/LD190"); /* ./printers/pcl.xml */ +N_("Lanier MP C1500/LD215c"); /* ./printers/pcl.xml */ +N_("Lanier MP C4501A/LD645CA"); /* ./printers/pcl.xml */ +N_("Lanier MP C5501A/LD655CA"); /* ./printers/pcl.xml */ +N_("Lanier MP C2003"); /* ./printers/pcl.xml */ +N_("Lanier MP C2004"); /* ./printers/pcl.xml */ +N_("Lanier MP C2050/LD520C"); /* ./printers/pcl.xml */ +N_("Lanier MP C2500/LD425c"); /* ./printers/pcl.xml */ +N_("Lanier MP C2503"); /* ./printers/pcl.xml */ +N_("Lanier MP C2504"); /* ./printers/pcl.xml */ +N_("Lanier MP C2550/LD525C"); /* ./printers/pcl.xml */ +N_("Lanier MP C2800/LD528C"); /* ./printers/pcl.xml */ +N_("Lanier MP C300"); /* ./printers/pcl.xml */ +N_("Lanier MP C3000/LD430c"); /* ./printers/pcl.xml */ +N_("Lanier MP C3001/LD630C"); /* ./printers/pcl.xml */ +N_("Lanier MP C3002"); /* ./printers/pcl.xml */ +N_("Lanier MP C3003"); /* ./printers/pcl.xml */ +N_("Lanier MP C3004"); /* ./printers/pcl.xml */ +N_("Lanier MP C300SR"); /* ./printers/pcl.xml */ +N_("Lanier MP C3300/LD533C"); /* ./printers/pcl.xml */ +N_("Lanier MP C3500/LD435c"); /* ./printers/pcl.xml */ +N_("Lanier MP C3501/LD635C"); /* ./printers/pcl.xml */ +N_("Lanier MP C3502"); /* ./printers/pcl.xml */ +N_("Lanier MP C3503"); /* ./printers/pcl.xml */ +N_("Lanier MP C3504"); /* ./printers/pcl.xml */ +N_("Lanier MP C400"); /* ./printers/pcl.xml */ +N_("Lanier MP C4000/LD540C"); /* ./printers/pcl.xml */ +N_("Lanier MP C400SR"); /* ./printers/pcl.xml */ +N_("Lanier MP C4500/LD445c"); /* ./printers/pcl.xml */ +N_("Lanier MP C4501/LD645C"); /* ./printers/pcl.xml */ +N_("Lanier MP C4502"); /* ./printers/pcl.xml */ +N_("Lanier MP C4502A"); /* ./printers/pcl.xml */ +N_("Lanier MP C4503"); /* ./printers/pcl.xml */ +N_("Lanier MP C4504"); /* ./printers/pcl.xml */ +N_("Lanier MP C5000/LD550C"); /* ./printers/pcl.xml */ +N_("Lanier MP C5501/LD655C"); /* ./printers/pcl.xml */ +N_("Lanier MP C5502"); /* ./printers/pcl.xml */ +N_("Lanier MP C5502A"); /* ./printers/pcl.xml */ +N_("Lanier MP C5503"); /* ./printers/pcl.xml */ +N_("Lanier MP C6000/LD260c"); /* ./printers/pcl.xml */ +N_("Lanier MP C6003"); /* ./printers/pcl.xml */ +N_("Lanier MP C6004"); /* ./printers/pcl.xml */ +N_("Lanier MP C6501/LD365C"); /* ./printers/pcl.xml */ +N_("Lanier MP C6502"); /* ./printers/pcl.xml */ +N_("Lanier MP C6503"); /* ./printers/pcl.xml */ +N_("Lanier MP C7500/LD275c"); /* ./printers/pcl.xml */ +N_("Lanier MP C7501/LD375C"); /* ./printers/pcl.xml */ +N_("Lanier MP C8002"); /* ./printers/pcl.xml */ +N_("Lanier MP C8003"); /* ./printers/pcl.xml */ +N_("Lanier Pro C5100S"); /* ./printers/pcl.xml */ +N_("Lanier Pro C5110S"); /* ./printers/pcl.xml */ +N_("Lanier Pro C5200S"); /* ./printers/pcl.xml */ +N_("Lanier Pro C5210S"); /* ./printers/pcl.xml */ +N_("Lanier Pro C7100"); /* ./printers/pcl.xml */ +N_("Lanier Pro C7100S"); /* ./printers/pcl.xml */ +N_("Lanier Pro C7110"); /* ./printers/pcl.xml */ +N_("Lanier Pro C7110S"); /* ./printers/pcl.xml */ +N_("Lanier SG3110DN"); /* ./printers/pcl.xml */ +N_("Lanier SG3110DNw"); /* ./printers/pcl.xml */ +N_("Lanier SG3110SFNw"); /* ./printers/pcl.xml */ +N_("Lexmark 4076"); /* ./printers/pcl.xml */ +N_("Lexmark Optra E"); /* ./printers/pcl.xml */ +N_("Lexmark Optra E+"); /* ./printers/pcl.xml */ +N_("Lexmark Optra E220"); /* ./printers/pcl.xml */ +N_("Lexmark Optra E321"); /* ./printers/pcl.xml */ +N_("Lexmark Optra E323"); /* ./printers/pcl.xml */ +N_("Lexmark Valuewriter 300"); /* ./printers/pcl.xml */ +N_("Minolta PagePro 6"); /* ./printers/pcl.xml */ +N_("Minolta PagePro 6e"); /* ./printers/pcl.xml */ +N_("Minolta PagePro 6ex"); /* ./printers/pcl.xml */ +N_("Minolta PagePro 8"); /* ./printers/pcl.xml */ +N_("Minolta PagePro 8L"); /* ./printers/pcl.xml */ +N_("Minolta PagePro 1100"); /* ./printers/pcl.xml */ +N_("NEC SuperScript 660i"); /* ./printers/pcl.xml */ +N_("NEC SuperScript 860"); /* ./printers/pcl.xml */ +N_("NEC SuperScript 870"); /* ./printers/pcl.xml */ +N_("NEC SuperScript 1260"); /* ./printers/pcl.xml */ +N_("NEC SuperScript 1400"); /* ./printers/pcl.xml */ +N_("NEC SuperScript 1800"); /* ./printers/pcl.xml */ +N_("NRG 10515/10518/10512"); /* ./printers/pcl.xml */ +N_("NRG 2205/2238/2212"); /* ./printers/pcl.xml */ +N_("NRG 2705/2738/2712"); /* ./printers/pcl.xml */ +N_("NRG 3205/3238/3212"); /* ./printers/pcl.xml */ +N_("NRG 3525/3508/3502"); /* ./printers/pcl.xml */ +N_("NRG 3545/3518/3532"); /* ./printers/pcl.xml */ +N_("NRG 4525/4508/4502"); /* ./printers/pcl.xml */ +N_("NRG 4545/4518/4532"); /* ./printers/pcl.xml */ +N_("NRG 6002/6005/6008"); /* ./printers/pcl.xml */ +N_("NRG 7502/7505/7508"); /* ./printers/pcl.xml */ +N_("NRG 9005/9008/9002"); /* ./printers/pcl.xml */ +N_("NRG CS555"); /* ./printers/pcl.xml */ +N_("NRG DSc424"); /* ./printers/pcl.xml */ +N_("NRG DSc428"); /* ./printers/pcl.xml */ +N_("NRG DSc432"); /* ./printers/pcl.xml */ +N_("NRG DSc435"); /* ./printers/pcl.xml */ +N_("NRG DSc445"); /* ./printers/pcl.xml */ +N_("NRG DSc460"); /* ./printers/pcl.xml */ +N_("NRG DSm415"); /* ./printers/pcl.xml */ +N_("NRG DSm615"); /* ./printers/pcl.xml */ +N_("NRG DSm616"); /* ./printers/pcl.xml */ +N_("NRG DSm618"); /* ./printers/pcl.xml */ +N_("NRG DSm618d"); /* ./printers/pcl.xml */ +N_("NRG DSm620"); /* ./printers/pcl.xml */ +N_("NRG DSm620d"); /* ./printers/pcl.xml */ +N_("NRG DSm622"); /* ./printers/pcl.xml */ +N_("NRG DSm627"); /* ./printers/pcl.xml */ +N_("NRG DSm632"); /* ./printers/pcl.xml */ +N_("NRG DSm635"); /* ./printers/pcl.xml */ +N_("NRG DSm645"); /* ./printers/pcl.xml */ +N_("NRG DSm651"); /* ./printers/pcl.xml */ +N_("NRG DSm660"); /* ./printers/pcl.xml */ +N_("NRG DSm675"); /* ./printers/pcl.xml */ +N_("NRG DSm725"); /* ./printers/pcl.xml */ +N_("NRG DSm730"); /* ./printers/pcl.xml */ +N_("NRG DSm735"); /* ./printers/pcl.xml */ +N_("NRG DSm745"); /* ./printers/pcl.xml */ +N_("NRG MP 1100"); /* ./printers/pcl.xml */ +N_("NRG MP 1350"); /* ./printers/pcl.xml */ +N_("NRG MP 1600"); /* ./printers/pcl.xml */ +N_("NRG MP 161"); /* ./printers/pcl.xml */ +N_("NRG MP 2000"); /* ./printers/pcl.xml */ +N_("NRG MP 2500"); /* ./printers/pcl.xml */ +N_("NRG MP 2510"); /* ./printers/pcl.xml */ +N_("NRG MP 2550"); /* ./printers/pcl.xml */ +N_("NRG MP 2550B"); /* ./printers/pcl.xml */ +N_("NRG MP 3010"); /* ./printers/pcl.xml */ +N_("NRG MP 3350"); /* ./printers/pcl.xml */ +N_("NRG MP 3350B"); /* ./printers/pcl.xml */ +N_("NRG MP 3500"); /* ./printers/pcl.xml */ +N_("NRG MP 4000"); /* ./printers/pcl.xml */ +N_("NRG MP 4000B"); /* ./printers/pcl.xml */ +N_("NRG MP 4500"); /* ./printers/pcl.xml */ +N_("NRG MP 5000"); /* ./printers/pcl.xml */ +N_("NRG MP 5000B"); /* ./printers/pcl.xml */ +N_("NRG MP 5500"); /* ./printers/pcl.xml */ +N_("NRG MP 6500"); /* ./printers/pcl.xml */ +N_("NRG MP 7500"); /* ./printers/pcl.xml */ +N_("NRG MP 9000"); /* ./printers/pcl.xml */ +N_("NRG MP C1500sp"); /* ./printers/pcl.xml */ +N_("NRG MP C2003"); /* ./printers/pcl.xml */ +N_("NRG MP C2003Z"); /* ./printers/pcl.xml */ +N_("NRG MP C2004"); /* ./printers/pcl.xml */ +N_("NRG MP C2011"); /* ./printers/pcl.xml */ +N_("NRG MP C2050"); /* ./printers/pcl.xml */ +N_("NRG MP C2051"); /* ./printers/pcl.xml */ +N_("NRG MP C2500"); /* ./printers/pcl.xml */ +N_("NRG MP C2503"); /* ./printers/pcl.xml */ +N_("NRG MP C2503Z"); /* ./printers/pcl.xml */ +N_("NRG MP C2504"); /* ./printers/pcl.xml */ +N_("NRG MP C2550"); /* ./printers/pcl.xml */ +N_("NRG MP C2551"); /* ./printers/pcl.xml */ +N_("NRG MP C2800"); /* ./printers/pcl.xml */ +N_("NRG MP C300"); /* ./printers/pcl.xml */ +N_("NRG MP C3000"); /* ./printers/pcl.xml */ +N_("NRG MP C3001"); /* ./printers/pcl.xml */ +N_("NRG MP C3002"); /* ./printers/pcl.xml */ +N_("NRG MP C3003"); /* ./printers/pcl.xml */ +N_("NRG MP C3004"); /* ./printers/pcl.xml */ +N_("NRG MP C300SR"); /* ./printers/pcl.xml */ +N_("NRG MP C3300"); /* ./printers/pcl.xml */ +N_("NRG MP C3500"); /* ./printers/pcl.xml */ +N_("NRG MP C3501"); /* ./printers/pcl.xml */ +N_("NRG MP C3502"); /* ./printers/pcl.xml */ +N_("NRG MP C3503"); /* ./printers/pcl.xml */ +N_("NRG MP C3504"); /* ./printers/pcl.xml */ +N_("NRG MP C400"); /* ./printers/pcl.xml */ +N_("NRG MP C4000"); /* ./printers/pcl.xml */ +N_("NRG MP C400SR"); /* ./printers/pcl.xml */ +N_("NRG MP C4500"); /* ./printers/pcl.xml */ +N_("NRG MP C4501"); /* ./printers/pcl.xml */ +N_("NRG MP C4501A"); /* ./printers/pcl.xml */ +N_("NRG MP C4502"); /* ./printers/pcl.xml */ +N_("NRG MP C4502A"); /* ./printers/pcl.xml */ +N_("NRG MP C4503"); /* ./printers/pcl.xml */ +N_("NRG MP C4504"); /* ./printers/pcl.xml */ +N_("NRG MP C5000"); /* ./printers/pcl.xml */ +N_("NRG MP C5501"); /* ./printers/pcl.xml */ +N_("NRG MP C5501A"); /* ./printers/pcl.xml */ +N_("NRG MP C5502"); /* ./printers/pcl.xml */ +N_("NRG MP C5502A"); /* ./printers/pcl.xml */ +N_("NRG MP C5503"); /* ./printers/pcl.xml */ +N_("NRG MP C5504"); /* ./printers/pcl.xml */ +N_("NRG MP C6000"); /* ./printers/pcl.xml */ +N_("NRG MP C6003"); /* ./printers/pcl.xml */ +N_("NRG MP C6004"); /* ./printers/pcl.xml */ +N_("NRG MP C6501"); /* ./printers/pcl.xml */ +N_("NRG MP C6502"); /* ./printers/pcl.xml */ +N_("NRG MP C6503"); /* ./printers/pcl.xml */ +N_("NRG MP C7500"); /* ./printers/pcl.xml */ +N_("NRG MP C7501"); /* ./printers/pcl.xml */ +N_("NRG MP C8002"); /* ./printers/pcl.xml */ +N_("NRG MP C8003"); /* ./printers/pcl.xml */ +N_("NRG Pro C5100S"); /* ./printers/pcl.xml */ +N_("NRG Pro C5110S"); /* ./printers/pcl.xml */ +N_("NRG Pro C5200S"); /* ./printers/pcl.xml */ +N_("NRG Pro C5210S"); /* ./printers/pcl.xml */ +N_("NRG Pro C7100"); /* ./printers/pcl.xml */ +N_("NRG Pro C7100S"); /* ./printers/pcl.xml */ +N_("NRG Pro C7110"); /* ./printers/pcl.xml */ +N_("NRG Pro C7110S"); /* ./printers/pcl.xml */ +N_("NRG SG3110DN"); /* ./printers/pcl.xml */ +N_("NRG SG3110DNw"); /* ./printers/pcl.xml */ +N_("NRG SG3110SFNw"); /* ./printers/pcl.xml */ +N_("Oki B401d"); /* ./printers/pcl.xml */ +N_("Oki B430"); /* ./printers/pcl.xml */ +N_("Oki B4350"); /* ./printers/pcl.xml */ +N_("Oki C5300"); /* ./printers/pcl.xml */ +N_("Oki C5400"); /* ./printers/pcl.xml */ +N_("Oki C7300"); /* ./printers/pcl.xml */ +N_("Oki C8800"); /* ./printers/pcl.xml */ +N_("Oki C9200"); /* ./printers/pcl.xml */ +N_("Oki C9400"); /* ./printers/pcl.xml */ +N_("Oki OL400"); /* ./printers/pcl.xml */ +N_("Oki OL400e"); /* ./printers/pcl.xml */ +N_("Oki OL400ex"); /* ./printers/pcl.xml */ +N_("Oki OL410e"); /* ./printers/pcl.xml */ +N_("Oki OL600e"); /* ./printers/pcl.xml */ +N_("Oki OL610e/S"); /* ./printers/pcl.xml */ +N_("Oki OL800"); /* ./printers/pcl.xml */ +N_("Oki OL810ex"); /* ./printers/pcl.xml */ +N_("Oki Okipage 6e"); /* ./printers/pcl.xml */ +N_("Oki Okipage 6ex"); /* ./printers/pcl.xml */ +N_("Oki Okipage 8p"); /* ./printers/pcl.xml */ +N_("Oki Okipage 10e"); /* ./printers/pcl.xml */ +N_("Oki Okipage 10ex"); /* ./printers/pcl.xml */ +N_("Oki Okipage 14ex"); /* ./printers/pcl.xml */ +N_("Oki Super 6e"); /* ./printers/pcl.xml */ +N_("Olivetti JP350S"); /* ./printers/pcl.xml */ +N_("Olivetti PG 306"); /* ./printers/pcl.xml */ +N_("PCPI 1030"); /* ./printers/pcl.xml */ +N_("Panasonic DP-180"); /* ./printers/pcl.xml */ +N_("Panasonic DP-C265"); /* ./printers/pcl.xml */ +N_("Panasonic DP-C305"); /* ./printers/pcl.xml */ +N_("Panasonic DP-C322"); /* ./printers/pcl.xml */ +N_("Panasonic DP-C405"); /* ./printers/pcl.xml */ +N_("Panasonic KX-P4410"); /* ./printers/pcl.xml */ +N_("Panasonic KX-P4450"); /* ./printers/pcl.xml */ +N_("Panasonic KX-P6150"); /* ./printers/pcl.xml */ +N_("Panasonic KX-P6500"); /* ./printers/pcl.xml */ +N_("Raven LP-410"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 401"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 700"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 1022"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 1027"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 1032"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 1035"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 1045"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 1060"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 1075"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 1515"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2015"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2016"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2018"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2018D"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2020"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2020D"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2022"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2027"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2032"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2035"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2035e"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2045"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2045e"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2051"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2060"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2075"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2090"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 2105"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 220"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 3025"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 3030"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 3035"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 3045"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 3224C"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 3228C"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 3232C"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 3235C"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 3245C"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio 3260C"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio Color 5560"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 1100"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 1350"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 1600"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 161"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 2000"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 2500"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 2510"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 2550"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 2550B"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 3010"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 3350"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 3350B"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 3500"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 4000"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 4000B"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 4500"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 5000"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 5000B"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 5500"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 6500"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 7500"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP 9000"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C2050"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C2051"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C2500"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C2550"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C2551"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C2800"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C300"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C3000"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C3001"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C3002"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C300SR"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C3300"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C3500"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C3501"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C3502"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C400"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C4000"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C400SR"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C4500"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C4501"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C4501A"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C4502"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C4502A"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C5000"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C5501"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C5501A"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C5502"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C5502A"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C6000"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C6501"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C7500"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio MP C7501"); /* ./printers/pcl.xml */ +N_("Ricoh Aficio SG 3110DN"); /* ./printers/pcl.xml */ +N_("Ricoh GX 3050N"); /* ./printers/pcl.xml */ +N_("Ricoh GX 3050SFN"); /* ./printers/pcl.xml */ +N_("Ricoh GX 5050N"); /* ./printers/pcl.xml */ +N_("Ricoh GX E3350N"); /* ./printers/pcl.xml */ +N_("Ricoh GX E5550N"); /* ./printers/pcl.xml */ +N_("Ricoh MP C1500/615C"); /* ./printers/pcl.xml */ +N_("Ricoh MP C2003"); /* ./printers/pcl.xml */ +N_("Ricoh MP C2003Z"); /* ./printers/pcl.xml */ +N_("Ricoh MP C2004"); /* ./printers/pcl.xml */ +N_("Ricoh MP C2011"); /* ./printers/pcl.xml */ +N_("Ricoh MP C2094J"); /* ./printers/pcl.xml */ +N_("Ricoh MP C2503"); /* ./printers/pcl.xml */ +N_("Ricoh MP C2503Z"); /* ./printers/pcl.xml */ +N_("Ricoh MP C2504"); /* ./printers/pcl.xml */ +N_("Ricoh MP C2594J"); /* ./printers/pcl.xml */ +N_("Ricoh MP C3003"); /* ./printers/pcl.xml */ +N_("Ricoh MP C3004"); /* ./printers/pcl.xml */ +N_("Ricoh MP C3503"); /* ./printers/pcl.xml */ +N_("Ricoh MP C3504"); /* ./printers/pcl.xml */ +N_("Ricoh MP C4503"); /* ./printers/pcl.xml */ +N_("Ricoh MP C4504"); /* ./printers/pcl.xml */ +N_("Ricoh MP C5503"); /* ./printers/pcl.xml */ +N_("Ricoh MP C5504"); /* ./printers/pcl.xml */ +N_("Ricoh MP C6003"); /* ./printers/pcl.xml */ +N_("Ricoh MP C6004"); /* ./printers/pcl.xml */ +N_("Ricoh MP C6502"); /* ./printers/pcl.xml */ +N_("Ricoh MP C6503"); /* ./printers/pcl.xml */ +N_("Ricoh MP C8002"); /* ./printers/pcl.xml */ +N_("Ricoh MP C8003"); /* ./printers/pcl.xml */ +N_("Ricoh Pro C5100S"); /* ./printers/pcl.xml */ +N_("Ricoh Pro C5110S"); /* ./printers/pcl.xml */ +N_("Ricoh Pro C5200S"); /* ./printers/pcl.xml */ +N_("Ricoh Pro C5210S"); /* ./printers/pcl.xml */ +N_("Ricoh Pro C7100"); /* ./printers/pcl.xml */ +N_("Ricoh Pro C7100S"); /* ./printers/pcl.xml */ +N_("Ricoh Pro C7110"); /* ./printers/pcl.xml */ +N_("Ricoh Pro C7110S"); /* ./printers/pcl.xml */ +N_("Ricoh SG3120BSFNw"); /* ./printers/pcl.xml */ +N_("Samsung CLP-620"); /* ./printers/pcl.xml */ +N_("Samsung CLP-660N"); /* ./printers/pcl.xml */ +N_("Samsung CLP-660ND"); /* ./printers/pcl.xml */ +N_("Samsung ML-85"); /* ./printers/pcl.xml */ +N_("Samsung ML-1250"); /* ./printers/pcl.xml */ +N_("Samsung ML-1450"); /* ./printers/pcl.xml */ +N_("Samsung ML-1450PS"); /* ./printers/pcl.xml */ +N_("Samsung ML-1650"); /* ./printers/pcl.xml */ +N_("Samsung ML-1651N"); /* ./printers/pcl.xml */ +N_("Samsung ML-1750"); /* ./printers/pcl.xml */ +N_("Samsung ML-2150"); /* ./printers/pcl.xml */ +N_("Samsung ML-2150PS"); /* ./printers/pcl.xml */ +N_("Samsung ML-2151N"); /* ./printers/pcl.xml */ +N_("Samsung ML-2151NPS"); /* ./printers/pcl.xml */ +N_("Samsung ML-2152W"); /* ./printers/pcl.xml */ +N_("Samsung ML-2152WPS"); /* ./printers/pcl.xml */ +N_("Samsung ML-2250"); /* ./printers/pcl.xml */ +N_("Samsung ML-2550"); /* ./printers/pcl.xml */ +N_("Samsung ML-2551N"); /* ./printers/pcl.xml */ +N_("Samsung ML-2552W"); /* ./printers/pcl.xml */ +N_("Samsung ML-4600"); /* ./printers/pcl.xml */ +N_("Samsung ML-5000a"); /* ./printers/pcl.xml */ +N_("Samsung ML-6000"); /* ./printers/pcl.xml */ +N_("Samsung ML-6100"); /* ./printers/pcl.xml */ +N_("Samsung ML-7000"); /* ./printers/pcl.xml */ +N_("Samsung ML-7000N"); /* ./printers/pcl.xml */ +N_("Samsung ML-7000P"); /* ./printers/pcl.xml */ +N_("Samsung ML-7050"); /* ./printers/pcl.xml */ +N_("Samsung ML-7300"); /* ./printers/pcl.xml */ +N_("Samsung ML-7300N"); /* ./printers/pcl.xml */ +N_("Samsung QL-5100A"); /* ./printers/pcl.xml */ +N_("Samsung QL-6050"); /* ./printers/pcl.xml */ +N_("Savin 2522"); /* ./printers/pcl.xml */ +N_("Savin 2527"); /* ./printers/pcl.xml */ +N_("Savin 2532"); /* ./printers/pcl.xml */ +N_("Savin 2535/2235"); /* ./printers/pcl.xml */ +N_("Savin 2545/2245"); /* ./printers/pcl.xml */ +N_("Savin 2560"); /* ./printers/pcl.xml */ +N_("Savin 2575"); /* ./printers/pcl.xml */ +N_("Savin 3515"); /* ./printers/pcl.xml */ +N_("Savin 40105"); /* ./printers/pcl.xml */ +N_("Savin 4015"); /* ./printers/pcl.xml */ +N_("Savin 4018"); /* ./printers/pcl.xml */ +N_("Savin 4018d"); /* ./printers/pcl.xml */ +N_("Savin 4022"); /* ./printers/pcl.xml */ +N_("Savin 4027"); /* ./printers/pcl.xml */ +N_("Savin 4035/4135g"); /* ./printers/pcl.xml */ +N_("Savin 4035e/4135eG"); /* ./printers/pcl.xml */ +N_("Savin 4045/4145g"); /* ./printers/pcl.xml */ +N_("Savin 4045e/4145eG"); /* ./printers/pcl.xml */ +N_("Savin 4051"); /* ./printers/pcl.xml */ +N_("Savin 4060"); /* ./printers/pcl.xml */ +N_("Savin 4075"); /* ./printers/pcl.xml */ +N_("Savin 4090"); /* ./printers/pcl.xml */ +N_("Savin 7025"); /* ./printers/pcl.xml */ +N_("Savin 8016"); /* ./printers/pcl.xml */ +N_("Savin 8020"); /* ./printers/pcl.xml */ +N_("Savin 8020d"); /* ./printers/pcl.xml */ +N_("Savin 8025"); /* ./printers/pcl.xml */ +N_("Savin 8025e"); /* ./printers/pcl.xml */ +N_("Savin 8030"); /* ./printers/pcl.xml */ +N_("Savin 8030e"); /* ./printers/pcl.xml */ +N_("Savin 8035/8035g"); /* ./printers/pcl.xml */ +N_("Savin 8035e"); /* ./printers/pcl.xml */ +N_("Savin 8045/8045g"); /* ./printers/pcl.xml */ +N_("Savin 8045e"); /* ./printers/pcl.xml */ +N_("Savin 8055"); /* ./printers/pcl.xml */ +N_("Savin 8065"); /* ./printers/pcl.xml */ +N_("Savin 8075"); /* ./printers/pcl.xml */ +N_("Savin 8090"); /* ./printers/pcl.xml */ +N_("Savin 8110"); /* ./printers/pcl.xml */ +N_("Savin 8135"); /* ./printers/pcl.xml */ +N_("Savin 816"); /* ./printers/pcl.xml */ +N_("Savin 9016"); /* ./printers/pcl.xml */ +N_("Savin 9021d"); /* ./printers/pcl.xml */ +N_("Savin 9025"); /* ./printers/pcl.xml */ +N_("Savin 9025b"); /* ./printers/pcl.xml */ +N_("Savin 9033"); /* ./printers/pcl.xml */ +N_("Savin 9033b"); /* ./printers/pcl.xml */ +N_("Savin 9040"); /* ./printers/pcl.xml */ +N_("Savin 9040b"); /* ./printers/pcl.xml */ +N_("Savin 9050"); /* ./printers/pcl.xml */ +N_("Savin 9050b"); /* ./printers/pcl.xml */ +N_("Savin C2410"); /* ./printers/pcl.xml */ +N_("Savin C2525"); /* ./printers/pcl.xml */ +N_("Savin C2824"); /* ./printers/pcl.xml */ +N_("Savin C2828"); /* ./printers/pcl.xml */ +N_("Savin C3030"); /* ./printers/pcl.xml */ +N_("Savin C3210e"); /* ./printers/pcl.xml */ +N_("Savin C3333"); /* ./printers/pcl.xml */ +N_("Savin C3528"); /* ./printers/pcl.xml */ +N_("Savin C3535"); /* ./printers/pcl.xml */ +N_("Savin C4040"); /* ./printers/pcl.xml */ +N_("Savin C4535"); /* ./printers/pcl.xml */ +N_("Savin C4540"); /* ./printers/pcl.xml */ +N_("Savin C5050"); /* ./printers/pcl.xml */ +N_("Savin C6045"); /* ./printers/pcl.xml */ +N_("Savin C6055"); /* ./printers/pcl.xml */ +N_("Savin C7570"); /* ./printers/pcl.xml */ +N_("Savin C9020"); /* ./printers/pcl.xml */ +N_("Savin C9025"); /* ./printers/pcl.xml */ +N_("Savin C9065"); /* ./printers/pcl.xml */ +N_("Savin C9075"); /* ./printers/pcl.xml */ +N_("Savin C9120"); /* ./printers/pcl.xml */ +N_("Savin C9125"); /* ./printers/pcl.xml */ +N_("Savin C9130"); /* ./printers/pcl.xml */ +N_("Savin C9135"); /* ./printers/pcl.xml */ +N_("Savin C9145"); /* ./printers/pcl.xml */ +N_("Savin C9145A"); /* ./printers/pcl.xml */ +N_("Savin C9155"); /* ./printers/pcl.xml */ +N_("Savin C9155A"); /* ./printers/pcl.xml */ +N_("Savin C 230"); /* ./printers/pcl.xml */ +N_("Savin C 230SR"); /* ./printers/pcl.xml */ +N_("Savin C 240"); /* ./printers/pcl.xml */ +N_("Savin C 240SR"); /* ./printers/pcl.xml */ +N_("Savin MP C2003"); /* ./printers/pcl.xml */ +N_("Savin MP C2004"); /* ./printers/pcl.xml */ +N_("Savin MP C2503"); /* ./printers/pcl.xml */ +N_("Savin MP C2504"); /* ./printers/pcl.xml */ +N_("Savin MP C3002"); /* ./printers/pcl.xml */ +N_("Savin MP C3003"); /* ./printers/pcl.xml */ +N_("Savin MP C3004"); /* ./printers/pcl.xml */ +N_("Savin MP C3502"); /* ./printers/pcl.xml */ +N_("Savin MP C3503"); /* ./printers/pcl.xml */ +N_("Savin MP C3504"); /* ./printers/pcl.xml */ +N_("Savin MP C4502"); /* ./printers/pcl.xml */ +N_("Savin MP C4502A"); /* ./printers/pcl.xml */ +N_("Savin MP C4503"); /* ./printers/pcl.xml */ +N_("Savin MP C4504"); /* ./printers/pcl.xml */ +N_("Savin MP C5502"); /* ./printers/pcl.xml */ +N_("Savin MP C5502A"); /* ./printers/pcl.xml */ +N_("Savin MP C5503"); /* ./printers/pcl.xml */ +N_("Savin MP C6003"); /* ./printers/pcl.xml */ +N_("Savin MP C6004"); /* ./printers/pcl.xml */ +N_("Savin MP C6502"); /* ./printers/pcl.xml */ +N_("Savin MP C6503"); /* ./printers/pcl.xml */ +N_("Savin MP C8002"); /* ./printers/pcl.xml */ +N_("Savin MP C8003"); /* ./printers/pcl.xml */ +N_("Savin Pro C5100S"); /* ./printers/pcl.xml */ +N_("Savin Pro C5110S"); /* ./printers/pcl.xml */ +N_("Savin Pro C5200S"); /* ./printers/pcl.xml */ +N_("Savin Pro C5210S"); /* ./printers/pcl.xml */ +N_("Savin Pro C7100"); /* ./printers/pcl.xml */ +N_("Savin Pro C7100S"); /* ./printers/pcl.xml */ +N_("Savin Pro C7110"); /* ./printers/pcl.xml */ +N_("Savin Pro C7110S"); /* ./printers/pcl.xml */ +N_("Savin SDC555"); /* ./printers/pcl.xml */ +N_("Savin SG3110DN"); /* ./printers/pcl.xml */ +N_("Savin SGC 1506"); /* ./printers/pcl.xml */ +N_("Seiko SpeedJET 200"); /* ./printers/pcl.xml */ +N_("Sharp AR-161"); /* ./printers/pcl.xml */ +N_("Sharp AR-BC260"); /* ./printers/pcl.xml */ +N_("Sharp AR-BC320"); /* ./printers/pcl.xml */ +N_("Sharp AR-C170FP"); /* ./printers/pcl.xml */ +N_("Sharp AR-C170M"); /* ./printers/pcl.xml */ +N_("Sharp AR-C172FP"); /* ./printers/pcl.xml */ +N_("Sharp AR-C172M"); /* ./printers/pcl.xml */ +N_("Sharp AR-C260"); /* ./printers/pcl.xml */ +N_("Sharp AR-C260F"); /* ./printers/pcl.xml */ +N_("Sharp AR-C260FP"); /* ./printers/pcl.xml */ +N_("Sharp AR-C260M"); /* ./printers/pcl.xml */ +N_("Sharp AR-C260P"); /* ./printers/pcl.xml */ +N_("Sharp AR-C260S"); /* ./printers/pcl.xml */ +N_("Sharp AR-C261F"); /* ./printers/pcl.xml */ +N_("Sharp AR-C261FP"); /* ./printers/pcl.xml */ +N_("Sharp AR-C261M"); /* ./printers/pcl.xml */ +N_("Sharp AR-C261S"); /* ./printers/pcl.xml */ +N_("Sharp AR-C262FP"); /* ./printers/pcl.xml */ +N_("Sharp AR-C262M"); /* ./printers/pcl.xml */ +N_("Sharp AR-C262S"); /* ./printers/pcl.xml */ +N_("Sharp AR-M257"); /* ./printers/pcl.xml */ +N_("Sharp MX-2300FG"); /* ./printers/pcl.xml */ +N_("Sharp MX-2300G"); /* ./printers/pcl.xml */ +N_("Sharp MX-2300N"); /* ./printers/pcl.xml */ +N_("Sharp MX-2700FG"); /* ./printers/pcl.xml */ +N_("Sharp MX-2700G"); /* ./printers/pcl.xml */ +N_("Sharp MX-2700N"); /* ./printers/pcl.xml */ +N_("Sharp MX-3500FN"); /* ./printers/pcl.xml */ +N_("Sharp MX-3500N"); /* ./printers/pcl.xml */ +N_("Sharp MX-3501FN"); /* ./printers/pcl.xml */ +N_("Sharp MX-3501N"); /* ./printers/pcl.xml */ +N_("Sharp MX-4500FN"); /* ./printers/pcl.xml */ +N_("Sharp MX-4500N"); /* ./printers/pcl.xml */ +N_("Sharp MX-4501FN"); /* ./printers/pcl.xml */ +N_("Sharp MX-4501N"); /* ./printers/pcl.xml */ +N_("Sony IJP-V100"); /* ./printers/pcl.xml */ +N_("Star LS-04"); /* ./printers/pcl.xml */ +N_("Star LaserPrinter 8"); /* ./printers/pcl.xml */ +N_("Tally MT908"); /* ./printers/pcl.xml */ +N_("Tektronix Phaser 750DP"); /* ./printers/pcl.xml */ +N_("Tektronix Phaser 750DX"); /* ./printers/pcl.xml */ +N_("Tektronix Phaser 750N"); /* ./printers/pcl.xml */ +N_("Tektronix Phaser 750P"); /* ./printers/pcl.xml */ +N_("Toshiba e-Studio 220cp"); /* ./printers/pcl.xml */ +N_("Toshiba e-Studio 2830c"); /* ./printers/pcl.xml */ +N_("Toshiba e-Studio 3530c"); /* ./printers/pcl.xml */ +N_("Toshiba e-Studio 4500c"); /* ./printers/pcl.xml */ +N_("Toshiba e-Studio 4520c"); /* ./printers/pcl.xml */ +N_("Toshiba e-Studio 5500c"); /* ./printers/pcl.xml */ +N_("Xerox Able 1406"); /* ./printers/pcl.xml */ +N_("Xerox DocuPrint 4508"); /* ./printers/pcl.xml */ +N_("Xerox DocuPrint C20"); /* ./printers/pcl.xml */ +N_("Xerox DocuPrint N4512"); /* ./printers/pcl.xml */ +N_("Xerox DocuPrint N4512PS"); /* ./printers/pcl.xml */ +N_("Xerox DocuPrint P12"); /* ./printers/pcl.xml */ +N_("Xerox DocuPrint P1202"); /* ./printers/pcl.xml */ +N_("Xerox DocuPrint P8e"); /* ./printers/pcl.xml */ +N_("Xerox Document Centre 400"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 2135"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 3160N"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 4400B"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 4400DT"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 4400DX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 4400N"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 4500B"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 4500DT"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 4500DX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 4500N"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 4510B"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 4510DT"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 4510DX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 4510N"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 5500B"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 5500DN"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 5500DT"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 5500DX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 5500N"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6130N"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6180DN"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6180MFP-D"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6200B"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6200DP"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6200DX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6200N"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6250B"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6250DP"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6250DT"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6250DX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6250N"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6300DN"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6300N"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6350DP"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6350DT"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6350DX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6360DN"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 6360DX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7300B"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7300DN"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7300DT"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7300DX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7300N"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7400DN"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7400DT"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7400DX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7400DXF"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7400N"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7700DN"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7700DX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7700GX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7750B"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7750DN"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7750DXF"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7750GX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7760DN"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7760DX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 7760GX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 8400B"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 8400BD"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 8400DP"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 8400DX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 8400N"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 8500DN"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 8500N"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 8550DP"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 8550DT"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 8550DX"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 8560DN"); /* ./printers/pcl.xml */ +N_("Xerox Phaser 8860"); /* ./printers/pcl.xml */ +N_("Xerox WorkCentre 7345"); /* ./printers/pcl.xml */ +N_("Xerox WorkCentre C2424"); /* ./printers/pcl.xml */ +N_("Xerox WorkCentre M118"); /* ./printers/pcl.xml */ +N_("PostScript Level 1"); /* ./printers/ps.xml */ +N_("PostScript Level 2"); /* ./printers/ps.xml */ +N_("RAW DATA 16 bit"); /* ./printers/raw.xml */ +N_("RAW DATA 8 bit"); /* ./printers/raw.xml */ |