summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDidier Raboud <odyx@debian.org>2018-09-25 08:33:05 +0200
committerDidier Raboud <odyx@debian.org>2018-09-25 08:33:05 +0200
commite50542121e724e851fc5d6c68bb773f80c0bc12c (patch)
tree655c3f6331a6e8fd8b09ceb4da8f5896484ae16a /src
parent9dd97a029bf391c42b1dc76f2f7c5e386bb8f466 (diff)
New upstream version 5.3.1
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am3
-rw-r--r--src/Makefile.in67
-rw-r--r--src/cups/COPYING3
-rw-r--r--src/cups/Makefile.am143
-rw-r--r--src/cups/Makefile.in478
-rw-r--r--src/cups/backend_canonselphy.c572
-rw-r--r--src/cups/backend_canonselphyneo.c261
-rw-r--r--src/cups/backend_citizencw01.c908
-rw-r--r--src/cups/backend_common.c774
-rw-r--r--src/cups/backend_common.h149
-rw-r--r--src/cups/backend_dnpds40.c1355
-rw-r--r--src/cups/backend_kodak1400.c208
-rw-r--r--src/cups/backend_kodak605.c257
-rw-r--r--src/cups/backend_kodak6800.c215
-rw-r--r--src/cups/backend_magicard.c1143
-rw-r--r--src/cups/backend_mitsu70x.c1409
-rw-r--r--src/cups/backend_mitsu9550.c955
-rw-r--r--src/cups/backend_mitsud90.c1456
-rw-r--r--src/cups/backend_mitsup95d.c420
-rw-r--r--src/cups/backend_shinkos1245.c224
-rw-r--r--src/cups/backend_shinkos2145.c331
-rw-r--r--src/cups/backend_shinkos6145.c421
-rw-r--r--src/cups/backend_shinkos6245.c545
-rw-r--r--src/cups/backend_sonyupdr150.c396
-rw-r--r--src/cups/blacklist27
-rw-r--r--src/cups/command.types3
-rw-r--r--src/cups/commandtoepson.c3
-rw-r--r--src/cups/cups-calibrate.c3
-rw-r--r--src/cups/cups-genppd.c607
-rw-r--r--src/cups/cups-genppdupdate.in47
-rw-r--r--src/cups/genppd.c910
-rw-r--r--src/cups/genppd.h91
-rw-r--r--src/cups/gutenprint.c253
-rw-r--r--src/cups/i18n.c3
-rw-r--r--src/cups/i18n.h3
-rw-r--r--src/cups/min-pagesize.in42
-rw-r--r--src/cups/rastertogutenprint.c (renamed from src/cups/rastertoprinter.c)88
-rwxr-xr-xsrc/cups/test-ppds56
-rw-r--r--src/cups/test-ppds.in127
-rw-r--r--src/cups/test-rastertogutenprint.check.in77
-rw-r--r--[-rwxr-xr-x]src/cups/test-rastertogutenprint.in555
-rw-r--r--src/escputil/Makefile.am3
-rw-r--r--src/escputil/Makefile.in90
-rw-r--r--src/escputil/d4lib.c3
-rw-r--r--src/escputil/d4lib.h3
-rw-r--r--src/escputil/escputil.c13
-rw-r--r--src/gimp2/Makefile.am6
-rw-r--r--src/gimp2/Makefile.in126
-rw-r--r--src/gimp2/print-gutenprint.c3
-rw-r--r--src/gimp2/print-image-gimp.c3
-rw-r--r--src/gimp2/print-intl.h3
-rw-r--r--src/gimp2/print-print.c3
-rw-r--r--src/gimp2/print.c3
-rw-r--r--src/gimp2/print_gimp.h5
-rw-r--r--src/gutenprintui2/Makefile.am3
-rw-r--r--src/gutenprintui2/Makefile.in133
-rw-r--r--src/gutenprintui2/curve.c4
-rw-r--r--src/gutenprintui2/gammacurve.c4
-rw-r--r--src/gutenprintui2/gutenprintui-internal.h5
-rw-r--r--src/gutenprintui2/panel.c29
-rw-r--r--src/gutenprintui2/plist.c6
-rw-r--r--src/gutenprintui2/print-image-thumbnail.c3
-rw-r--r--src/gutenprintui2/printrc.h3
-rw-r--r--src/gutenprintui2/printrcl.c93
-rw-r--r--src/gutenprintui2/printrcl.l3
-rw-r--r--src/gutenprintui2/printrcy.c72
-rw-r--r--src/gutenprintui2/printrcy.y3
-rw-r--r--src/gutenprintui2/typebuiltins.c38
-rw-r--r--src/gutenprintui2/ui-utils.c3
-rw-r--r--src/main/Makefile.am6
-rw-r--r--src/main/Makefile.in354
-rw-r--r--src/main/array.c228
-rw-r--r--src/main/bit-ops.c134
-rw-r--r--src/main/buffer-image.c3
-rw-r--r--src/main/canon-inks.h3
-rw-r--r--src/main/canon-media-mode.h17
-rw-r--r--src/main/canon-media.h26
-rw-r--r--src/main/canon-modes.h45
-rw-r--r--src/main/canon-printers.h28
-rw-r--r--src/main/channel.c262
-rw-r--r--src/main/color-conversion.h3
-rw-r--r--src/main/color-conversions.c1397
-rw-r--r--src/main/color.c3
-rw-r--r--src/main/curve-cache.c3
-rw-r--r--src/main/curve.c114
-rw-r--r--src/main/dither-ed.c3
-rw-r--r--src/main/dither-eventone.c3
-rw-r--r--src/main/dither-impl.h5
-rw-r--r--src/main/dither-inks.c3
-rw-r--r--src/main/dither-inlined-functions.h3
-rw-r--r--src/main/dither-main.c3
-rw-r--r--src/main/dither-ordered.c3
-rw-r--r--src/main/dither-predithered.c3
-rw-r--r--src/main/dither-very-fast.c3
-rw-r--r--src/main/escp2-channels.c89
-rw-r--r--src/main/escp2-driver.c3
-rw-r--r--src/main/escp2-papers.c276
-rw-r--r--src/main/escp2-resolutions.c175
-rw-r--r--src/main/generic-options.c3
-rw-r--r--src/main/generic-options.h3
-rw-r--r--src/main/gutenprint-internal.h182
-rw-r--r--src/main/image.c3
-rw-r--r--src/main/libgutenprint.sym108
-rw-r--r--src/main/module.c22
-rw-r--r--src/main/mxml-node.c9
-rw-r--r--src/main/path.c53
-rw-r--r--src/main/print-canon.c197
-rw-r--r--src/main/print-canon.h7
-rw-r--r--src/main/print-color.c24
-rw-r--r--src/main/print-dither-matrices.c10
-rw-r--r--src/main/print-dpl.c84
-rw-r--r--src/main/print-dyesub.c (renamed from src/main/print-olympus.c)3353
-rw-r--r--src/main/print-escp2-data.c131
-rw-r--r--src/main/print-escp2.c344
-rw-r--r--src/main/print-escp2.h53
-rw-r--r--src/main/print-lexmark.c134
-rw-r--r--src/main/print-list.c74
-rw-r--r--src/main/print-papers.c308
-rw-r--r--src/main/print-pcl.c638
-rw-r--r--src/main/print-ps.c104
-rw-r--r--src/main/print-raw.c23
-rw-r--r--src/main/print-util.c177
-rw-r--r--src/main/print-vars.c207
-rw-r--r--src/main/print-version.c3
-rw-r--r--src/main/print-weave.c9
-rw-r--r--src/main/printers.c118
-rw-r--r--src/main/refcache.c231
-rw-r--r--src/main/sequence.c16
-rw-r--r--src/main/string-list.c3
-rw-r--r--src/main/xml.c294
-rw-r--r--src/main/xmlppd.h3
-rw-r--r--src/testpattern/Makefile.am45
-rw-r--r--src/testpattern/Makefile.in168
-rw-r--r--[-rwxr-xr-x]src/testpattern/compare-checksums.in258
-rw-r--r--src/testpattern/compare-image-files.in48
-rw-r--r--src/testpattern/compress-checksums.in617
-rw-r--r--src/testpattern/extended.sample3
-rw-r--r--src/testpattern/printer_options.c191
-rw-r--r--src/testpattern/printers.c6
-rw-r--r--[-rwxr-xr-x]src/testpattern/run-testpattern-1.in (renamed from src/testpattern/run-testpattern-1)34
-rw-r--r--src/testpattern/run-testpattern-2.check.in113
-rw-r--r--src/testpattern/run-testpattern-2.in397
-rw-r--r--[-rwxr-xr-x]src/testpattern/run-testpattern.in (renamed from src/testpattern/run-testpattern)13
-rw-r--r--src/testpattern/testpattern.c71
-rw-r--r--src/testpattern/testpattern.h4
-rw-r--r--src/testpattern/testpattern.sample3
-rw-r--r--src/testpattern/testpatternl.c1154
-rw-r--r--src/testpattern/testpatternl.l4
-rw-r--r--src/testpattern/testpatterny.c1635
-rw-r--r--src/testpattern/testpatterny.h184
-rw-r--r--src/testpattern/testpatterny.y14
-rw-r--r--src/xml/Makefile.am31
-rw-r--r--src/xml/Makefile.in187
-rw-r--r--src/xml/dither/Makefile.am43
-rw-r--r--src/xml/dither/Makefile.in652
-rw-r--r--src/xml/dither/matrix-1x1.xml (renamed from src/xml/dither-matrix-1x1.xml)0
-rw-r--r--src/xml/dither/matrix-2x1.xml (renamed from src/xml/dither-matrix-2x1.xml)0
-rw-r--r--src/xml/dither/matrix-4x1.xml (renamed from src/xml/dither-matrix-4x1.xml)0
-rw-r--r--src/xml/escp2/Makefile.am35
-rw-r--r--src/xml/escp2/Makefile.in98
-rw-r--r--src/xml/escp2/inks/Makefile.am4
-rw-r--r--src/xml/escp2/inks/Makefile.in66
-rw-r--r--src/xml/escp2/inks/artisan.xml3
-rw-r--r--src/xml/escp2/inks/b500.xml3
-rw-r--r--src/xml/escp2/inks/c120.xml3
-rw-r--r--src/xml/escp2/inks/c64.xml3
-rw-r--r--src/xml/escp2/inks/c80.xml3
-rw-r--r--src/xml/escp2/inks/c82.xml3
-rw-r--r--src/xml/escp2/inks/claria.xml3
-rw-r--r--src/xml/escp2/inks/claria_xp.xml245
-rw-r--r--src/xml/escp2/inks/cmy.xml3
-rw-r--r--src/xml/escp2/inks/cmykrb.xml3
-rw-r--r--src/xml/escp2/inks/cmykro.xml3
-rw-r--r--src/xml/escp2/inks/cx3650.xml3
-rw-r--r--src/xml/escp2/inks/defaultblack.xml3
-rw-r--r--src/xml/escp2/inks/f360.xml3
-rw-r--r--src/xml/escp2/inks/f360_photo.xml3
-rw-r--r--src/xml/escp2/inks/f360_photo7_japan.xml3
-rw-r--r--src/xml/escp2/inks/f360_ultrachrome.xml3
-rw-r--r--src/xml/escp2/inks/f360_ultrachrome_k3.xml3
-rw-r--r--src/xml/escp2/inks/f360_ultrachrome_k3v.xml3
-rw-r--r--src/xml/escp2/inks/f360_ultrachrome_k3v_2.xml3
-rw-r--r--src/xml/escp2/inks/nx100.xml3
-rw-r--r--src/xml/escp2/inks/photo_gen0.xml3
-rw-r--r--src/xml/escp2/inks/photo_gen1.xml3
-rw-r--r--src/xml/escp2/inks/photo_gen2.xml3
-rw-r--r--src/xml/escp2/inks/photo_gen3.xml3
-rw-r--r--src/xml/escp2/inks/photo_gen3_4.xml3
-rw-r--r--src/xml/escp2/inks/photo_gen4.xml3
-rw-r--r--src/xml/escp2/inks/photo_pigment.xml3
-rw-r--r--src/xml/escp2/inks/picturemate_4.xml3
-rw-r--r--src/xml/escp2/inks/picturemate_6.xml3
-rw-r--r--src/xml/escp2/inks/pro_gen1.xml3
-rw-r--r--src/xml/escp2/inks/pro_gen2.xml3
-rw-r--r--src/xml/escp2/inks/pro_pigment.xml3
-rw-r--r--src/xml/escp2/inks/pro_ultrachrome.xml3
-rw-r--r--src/xml/escp2/inks/pro_ultrachrome_k3.xml3
-rw-r--r--src/xml/escp2/inks/pro_ultrachrome_k34.xml3
-rw-r--r--src/xml/escp2/inks/pro_ultrachrome_k3v.xml3
-rw-r--r--src/xml/escp2/inks/pro_ultrachrome_k3v10.xml3
-rw-r--r--src/xml/escp2/inks/pro_ultrachrome_k3v10a.xml3
-rw-r--r--src/xml/escp2/inks/pro_ultrachrome_k3v10b.xml3
-rw-r--r--src/xml/escp2/inks/pro_ultrachrome_k3v4.xml3
-rw-r--r--src/xml/escp2/inks/standard.xml3
-rw-r--r--src/xml/escp2/inks/standard_gen0.xml3
-rw-r--r--src/xml/escp2/inks/sx445.xml3
-rw-r--r--src/xml/escp2/inks/ultrachrome.xml3
-rw-r--r--src/xml/escp2/inks/wf40.xml3
-rw-r--r--src/xml/escp2/inks/wf500.xml3
-rw-r--r--src/xml/escp2/inks/x80.xml3
-rw-r--r--src/xml/escp2/inks/xp100.xml3
-rw-r--r--src/xml/escp2/inputslots/Makefile.am3
-rw-r--r--src/xml/escp2/inputslots/Makefile.in65
-rw-r--r--src/xml/escp2/inputslots/artisan.xml3
-rw-r--r--src/xml/escp2/inputslots/b500.xml3
-rw-r--r--src/xml/escp2/inputslots/cd.xml3
-rw-r--r--src/xml/escp2/inputslots/cd_cutter_roll_feed.xml3
-rw-r--r--src/xml/escp2/inputslots/cd_roll_feed.xml3
-rw-r--r--src/xml/escp2/inputslots/cutter_roll_feed.xml3
-rw-r--r--src/xml/escp2/inputslots/default-duplex.xml3
-rw-r--r--src/xml/escp2/inputslots/default.xml3
-rw-r--r--src/xml/escp2/inputslots/pro3880.xml5
-rw-r--r--src/xml/escp2/inputslots/pro_cutter_roll_feed.xml3
-rw-r--r--src/xml/escp2/inputslots/pro_roll_feed.xml3
-rw-r--r--src/xml/escp2/inputslots/r1800.xml3
-rw-r--r--src/xml/escp2/inputslots/r2400.xml3
-rw-r--r--src/xml/escp2/inputslots/r2880.xml3
-rw-r--r--src/xml/escp2/inputslots/rx680.xml3
-rw-r--r--src/xml/escp2/inputslots/rx700.xml3
-rw-r--r--src/xml/escp2/inputslots/spro5000.xml3
-rw-r--r--src/xml/escp2/inputslots/standard_roll_feed.xml3
-rw-r--r--src/xml/escp2/inputslots/wf7000.xml5
-rw-r--r--src/xml/escp2/media/Makefile.am4
-rw-r--r--src/xml/escp2/media/Makefile.in66
-rw-r--r--src/xml/escp2/media/artisan.xml3
-rw-r--r--src/xml/escp2/media/b500.xml3
-rw-r--r--src/xml/escp2/media/c120.xml3
-rw-r--r--src/xml/escp2/media/c64.xml3
-rw-r--r--src/xml/escp2/media/c80.xml3
-rw-r--r--src/xml/escp2/media/c82.xml3
-rw-r--r--src/xml/escp2/media/claria.xml3
-rw-r--r--src/xml/escp2/media/claria1400.xml3
-rw-r--r--src/xml/escp2/media/claria_xp.xml2420
-rw-r--r--src/xml/escp2/media/cmy.xml3
-rw-r--r--src/xml/escp2/media/cmykrb.xml3
-rw-r--r--src/xml/escp2/media/cmykro.xml3
-rw-r--r--src/xml/escp2/media/cx3650.xml3
-rw-r--r--src/xml/escp2/media/f360.xml3
-rw-r--r--src/xml/escp2/media/f360_photo.xml3
-rw-r--r--src/xml/escp2/media/f360_photo7_japan.xml3
-rw-r--r--src/xml/escp2/media/f360_ultrachrome.xml3
-rw-r--r--src/xml/escp2/media/f360_ultrachrome_k3.xml3
-rw-r--r--src/xml/escp2/media/f360_ultrachrome_k3v.xml3
-rw-r--r--src/xml/escp2/media/nx100.xml3
-rw-r--r--src/xml/escp2/media/photo_gen0.xml3
-rw-r--r--src/xml/escp2/media/photo_gen1.xml3
-rw-r--r--src/xml/escp2/media/photo_gen2.xml3
-rw-r--r--src/xml/escp2/media/photo_gen3.xml3
-rw-r--r--src/xml/escp2/media/photo_gen3_4.xml3
-rw-r--r--src/xml/escp2/media/photo_gen4.xml3
-rw-r--r--src/xml/escp2/media/photo_pigment.xml3
-rw-r--r--src/xml/escp2/media/picturemate_4.xml3
-rw-r--r--src/xml/escp2/media/picturemate_6.xml3
-rw-r--r--src/xml/escp2/media/pro3880_ultrachrome_k3v.xml3
-rw-r--r--src/xml/escp2/media/pro_gen1.xml3
-rw-r--r--src/xml/escp2/media/pro_gen2.xml3
-rw-r--r--src/xml/escp2/media/pro_pigment.xml3
-rw-r--r--src/xml/escp2/media/pro_ultrachrome.xml3
-rw-r--r--src/xml/escp2/media/pro_ultrachrome_k3.xml3
-rw-r--r--src/xml/escp2/media/pro_ultrachrome_k3v.xml3
-rw-r--r--src/xml/escp2/media/pro_ultrachrome_k3v10.xml3
-rw-r--r--src/xml/escp2/media/pro_ultrachrome_k3v10a.xml3
-rw-r--r--src/xml/escp2/media/pro_ultrachrome_k3v10b.xml3
-rw-r--r--src/xml/escp2/media/r800.xml3
-rw-r--r--src/xml/escp2/media/standard.xml3
-rw-r--r--src/xml/escp2/media/standard_gen0.xml3
-rw-r--r--src/xml/escp2/media/ultrachrome.xml3
-rw-r--r--src/xml/escp2/media/wf500.xml3
-rw-r--r--src/xml/escp2/media/x80.xml3
-rw-r--r--src/xml/escp2/mediasizes/Makefile.am3
-rw-r--r--src/xml/escp2/mediasizes/Makefile.in65
-rw-r--r--src/xml/escp2/mediasizes/standard.xml3
-rw-r--r--src/xml/escp2/model/Makefile.am23
-rw-r--r--src/xml/escp2/model/Makefile.in333
-rw-r--r--src/xml/escp2/model/base/Makefile.am76
-rw-r--r--src/xml/escp2/model/base/Makefile.in686
-rw-r--r--src/xml/escp2/model/base/baseline_300.xml25
-rw-r--r--src/xml/escp2/model/base/baseline_360.xml25
-rw-r--r--src/xml/escp2/model/base/bx.xml84
-rw-r--r--src/xml/escp2/model/base/c1xx.xml216
-rw-r--r--src/xml/escp2/model/base/c2x.xml80
-rw-r--r--src/xml/escp2/model/base/c4x.xml (renamed from src/xml/escp2/model/model_59.xml)46
-rw-r--r--src/xml/escp2/model/base/c7xx.xml73
-rw-r--r--src/xml/escp2/model/base/c8x.xml26
-rw-r--r--src/xml/escp2/model/base/c8x_base.xml67
-rw-r--r--src/xml/escp2/model/base/cpro.xml58
-rw-r--r--src/xml/escp2/model/base/photo2.xml65
-rw-r--r--src/xml/escp2/model/base/picmate.xml114
-rw-r--r--src/xml/escp2/model/base/pro_ultrachrome_k3.xml26
-rw-r--r--src/xml/escp2/model/base/pro_ultrachrome_k3_base.xml55
-rw-r--r--src/xml/escp2/model/base/pro_ultrachrome_k3_cutter.xml28
-rw-r--r--src/xml/escp2/model/base/pro_ultrachrome_k3v.xml25
-rw-r--r--src/xml/escp2/model/base/pro_ultrachrome_k3v10.xml26
-rw-r--r--src/xml/escp2/model/base/pro_ultrachrome_k3v10_base.xml133
-rw-r--r--src/xml/escp2/model/base/pro_ultrachrome_k3v10a.xml26
-rw-r--r--src/xml/escp2/model/base/pro_ultrachrome_k3v10b.xml26
-rw-r--r--src/xml/escp2/model/base/pro_x000.xml128
-rw-r--r--src/xml/escp2/model/base/pro_x500.xml122
-rw-r--r--src/xml/escp2/model/base/pro_x600.xml (renamed from src/xml/escp2/model/model_111.xml)16
-rw-r--r--src/xml/escp2/model/base/pro_x700.xml25
-rw-r--r--src/xml/escp2/model/base/pro_x800.xml135
-rw-r--r--src/xml/escp2/model/base/pro_x880.xml26
-rw-r--r--src/xml/escp2/model/base/r200.xml156
-rw-r--r--src/xml/escp2/model/base/r240.xml163
-rw-r--r--src/xml/escp2/model/base/r800.xml172
-rw-r--r--src/xml/escp2/model/base/sc800.xml133
-rw-r--r--src/xml/escp2/model/base/sp700.xml59
-rw-r--r--src/xml/escp2/model/base/sp750.xml65
-rw-r--r--src/xml/escp2/model/base/sp950.xml129
-rw-r--r--src/xml/escp2/model/base/wf7xxx.xml85
-rw-r--r--src/xml/escp2/model/model_0.xml71
-rw-r--r--src/xml/escp2/model/model_1.xml6
-rw-r--r--src/xml/escp2/model/model_10.xml6
-rw-r--r--src/xml/escp2/model/model_100.xml6
-rw-r--r--src/xml/escp2/model/model_101.xml6
-rw-r--r--src/xml/escp2/model/model_102.xml128
-rw-r--r--src/xml/escp2/model/model_103.xml128
-rw-r--r--src/xml/escp2/model/model_104.xml128
-rw-r--r--src/xml/escp2/model/model_105.xml128
-rw-r--r--src/xml/escp2/model/model_106.xml128
-rw-r--r--src/xml/escp2/model/model_107.xml120
-rw-r--r--src/xml/escp2/model/model_108.xml93
-rw-r--r--src/xml/escp2/model/model_109.xml128
-rw-r--r--src/xml/escp2/model/model_11.xml6
-rw-r--r--src/xml/escp2/model/model_110.xml128
-rw-r--r--src/xml/escp2/model/model_112.xml117
-rw-r--r--src/xml/escp2/model/model_113.xml117
-rw-r--r--src/xml/escp2/model/model_114.xml117
-rw-r--r--src/xml/escp2/model/model_115.xml6
-rw-r--r--src/xml/escp2/model/model_116.xml117
-rw-r--r--src/xml/escp2/model/model_117.xml117
-rw-r--r--src/xml/escp2/model/model_118.xml200
-rw-r--r--src/xml/escp2/model/model_119.xml201
-rw-r--r--src/xml/escp2/model/model_12.xml140
-rw-r--r--src/xml/escp2/model/model_120.xml201
-rw-r--r--src/xml/escp2/model/model_121.xml6
-rw-r--r--src/xml/escp2/model/model_122.xml6
-rw-r--r--src/xml/escp2/model/model_123.xml6
-rw-r--r--src/xml/escp2/model/model_124.xml117
-rw-r--r--src/xml/escp2/model/model_125.xml117
-rw-r--r--src/xml/escp2/model/model_126.xml117
-rw-r--r--src/xml/escp2/model/model_127.xml117
-rw-r--r--src/xml/escp2/model/model_128.xml128
-rw-r--r--src/xml/escp2/model/model_129.xml140
-rw-r--r--src/xml/escp2/model/model_13.xml6
-rw-r--r--src/xml/escp2/model/model_130.xml6
-rw-r--r--src/xml/escp2/model/model_131.xml117
-rw-r--r--src/xml/escp2/model/model_132.xml179
-rw-r--r--src/xml/escp2/model/model_14.xml130
-rw-r--r--src/xml/escp2/model/model_15.xml130
-rw-r--r--src/xml/escp2/model/model_16.xml140
-rw-r--r--src/xml/escp2/model/model_17.xml140
-rw-r--r--src/xml/escp2/model/model_18.xml6
-rw-r--r--src/xml/escp2/model/model_2.xml6
-rw-r--r--src/xml/escp2/model/model_20.xml101
-rw-r--r--src/xml/escp2/model/model_21.xml135
-rw-r--r--src/xml/escp2/model/model_22.xml132
-rw-r--r--src/xml/escp2/model/model_23.xml132
-rw-r--r--src/xml/escp2/model/model_24.xml115
-rw-r--r--src/xml/escp2/model/model_25.xml6
-rw-r--r--src/xml/escp2/model/model_26.xml6
-rw-r--r--src/xml/escp2/model/model_27.xml6
-rw-r--r--src/xml/escp2/model/model_28.xml108
-rw-r--r--src/xml/escp2/model/model_29.xml104
-rw-r--r--src/xml/escp2/model/model_3.xml6
-rw-r--r--src/xml/escp2/model/model_30.xml108
-rw-r--r--src/xml/escp2/model/model_31.xml104
-rw-r--r--src/xml/escp2/model/model_32.xml101
-rw-r--r--src/xml/escp2/model/model_34.xml6
-rw-r--r--src/xml/escp2/model/model_35.xml142
-rw-r--r--src/xml/escp2/model/model_36.xml142
-rw-r--r--src/xml/escp2/model/model_37.xml142
-rw-r--r--src/xml/escp2/model/model_38.xml146
-rw-r--r--src/xml/escp2/model/model_39.xml103
-rw-r--r--src/xml/escp2/model/model_4.xml115
-rw-r--r--src/xml/escp2/model/model_40.xml104
-rw-r--r--src/xml/escp2/model/model_41.xml6
-rw-r--r--src/xml/escp2/model/model_42.xml135
-rw-r--r--src/xml/escp2/model/model_43.xml146
-rw-r--r--src/xml/escp2/model/model_44.xml130
-rw-r--r--src/xml/escp2/model/model_45.xml103
-rw-r--r--src/xml/escp2/model/model_46.xml111
-rw-r--r--src/xml/escp2/model/model_47.xml6
-rw-r--r--src/xml/escp2/model/model_48.xml117
-rw-r--r--src/xml/escp2/model/model_49.xml117
-rw-r--r--src/xml/escp2/model/model_5.xml115
-rw-r--r--src/xml/escp2/model/model_50.xml6
-rw-r--r--src/xml/escp2/model/model_51.xml6
-rw-r--r--src/xml/escp2/model/model_52.xml6
-rw-r--r--src/xml/escp2/model/model_53.xml111
-rw-r--r--src/xml/escp2/model/model_54.xml101
-rw-r--r--src/xml/escp2/model/model_55.xml132
-rw-r--r--src/xml/escp2/model/model_56.xml6
-rw-r--r--src/xml/escp2/model/model_57.xml6
-rw-r--r--src/xml/escp2/model/model_58.xml6
-rw-r--r--src/xml/escp2/model/model_6.xml115
-rw-r--r--src/xml/escp2/model/model_60.xml132
-rw-r--r--src/xml/escp2/model/model_61.xml6
-rw-r--r--src/xml/escp2/model/model_62.xml101
-rw-r--r--src/xml/escp2/model/model_63.xml138
-rw-r--r--src/xml/escp2/model/model_64.xml154
-rw-r--r--src/xml/escp2/model/model_65.xml6
-rw-r--r--src/xml/escp2/model/model_66.xml6
-rw-r--r--src/xml/escp2/model/model_67.xml154
-rw-r--r--src/xml/escp2/model/model_68.xml6
-rw-r--r--src/xml/escp2/model/model_69.xml143
-rw-r--r--src/xml/escp2/model/model_7.xml129
-rw-r--r--src/xml/escp2/model/model_70.xml6
-rw-r--r--src/xml/escp2/model/model_71.xml6
-rw-r--r--src/xml/escp2/model/model_72.xml6
-rw-r--r--src/xml/escp2/model/model_73.xml96
-rw-r--r--src/xml/escp2/model/model_74.xml6
-rw-r--r--src/xml/escp2/model/model_75.xml6
-rw-r--r--src/xml/escp2/model/model_76.xml6
-rw-r--r--src/xml/escp2/model/model_77.xml145
-rw-r--r--src/xml/escp2/model/model_78.xml142
-rw-r--r--src/xml/escp2/model/model_79.xml132
-rw-r--r--src/xml/escp2/model/model_8.xml129
-rw-r--r--src/xml/escp2/model/model_80.xml6
-rw-r--r--src/xml/escp2/model/model_81.xml6
-rw-r--r--src/xml/escp2/model/model_82.xml6
-rw-r--r--src/xml/escp2/model/model_83.xml145
-rw-r--r--src/xml/escp2/model/model_84.xml138
-rw-r--r--src/xml/escp2/model/model_85.xml198
-rw-r--r--src/xml/escp2/model/model_86.xml96
-rw-r--r--src/xml/escp2/model/model_87.xml6
-rw-r--r--src/xml/escp2/model/model_88.xml128
-rw-r--r--src/xml/escp2/model/model_89.xml128
-rw-r--r--src/xml/escp2/model/model_9.xml6
-rw-r--r--src/xml/escp2/model/model_90.xml128
-rw-r--r--src/xml/escp2/model/model_91.xml6
-rw-r--r--src/xml/escp2/model/model_92.xml200
-rw-r--r--src/xml/escp2/model/model_93.xml6
-rw-r--r--src/xml/escp2/model/model_94.xml6
-rw-r--r--src/xml/escp2/model/model_95.xml6
-rw-r--r--src/xml/escp2/model/model_96.xml6
-rw-r--r--src/xml/escp2/model/model_97.xml6
-rw-r--r--src/xml/escp2/model/model_98.xml6
-rw-r--r--src/xml/escp2/model/model_99.xml198
-rw-r--r--src/xml/escp2/qualitypresets/Makefile.am3
-rw-r--r--src/xml/escp2/qualitypresets/Makefile.in65
-rw-r--r--src/xml/escp2/qualitypresets/p1_5.xml3
-rw-r--r--src/xml/escp2/qualitypresets/picturemate.xml3
-rw-r--r--src/xml/escp2/qualitypresets/prox900.xml3
-rw-r--r--src/xml/escp2/qualitypresets/standard.xml3
-rw-r--r--src/xml/escp2/qualitypresets/v2880.xml3
-rw-r--r--src/xml/escp2/qualitypresets/wf40.xml3
-rw-r--r--src/xml/escp2/resolutions/Makefile.am52
-rw-r--r--src/xml/escp2/resolutions/Makefile.in662
-rw-r--r--src/xml/escp2/resolutions/c8x.xml114
-rw-r--r--src/xml/escp2/resolutions/escp2-i.xml88
-rw-r--r--src/xml/escp2/resolutions/prox600.xml110
-rw-r--r--src/xml/escp2/resolutions/sc480.xml98
-rw-r--r--src/xml/escp2/resolutions/sc680.xml (renamed from src/xml/escp2/model/model_33.xml)62
-rw-r--r--src/xml/escp2/resolutions/sc740.xml108
-rw-r--r--src/xml/escp2/resolutions/sc860.xml (renamed from src/xml/escp2/model/model_19.xml)62
-rw-r--r--src/xml/escp2/resolutions/sp700.xml113
-rw-r--r--src/xml/escp2/resolutions/sp720.xml118
-rw-r--r--src/xml/escp2/resolutions/wf6xx.xml159
-rw-r--r--src/xml/escp2/weaves/Makefile.am3
-rw-r--r--src/xml/escp2/weaves/Makefile.in65
-rw-r--r--src/xml/escp2/weaves/pro7000.xml3
-rw-r--r--src/xml/escp2/weaves/pro7500.xml3
-rw-r--r--src/xml/escp2/weaves/pro7600.xml3
-rw-r--r--src/xml/escp2/weaves/standard.xml3
-rw-r--r--src/xml/extract-strings.c3
-rw-r--r--src/xml/papers/Makefile.am42
-rw-r--r--src/xml/papers/Makefile.in651
-rw-r--r--src/xml/papers/labels.xml317
-rw-r--r--src/xml/papers/standard.xml (renamed from src/xml/papers.xml)552
-rw-r--r--src/xml/printers.xml3225
-rw-r--r--src/xml/printers/Makefile.am55
-rw-r--r--src/xml/printers/Makefile.in1163
-rw-r--r--src/xml/printers/canon.xml1468
-rw-r--r--src/xml/printers/check_duplicate_printers.c44
-rw-r--r--src/xml/printers/dpl.xml83
-rw-r--r--src/xml/printers/dyesub.xml186
-rw-r--r--src/xml/printers/escp2.xml655
-rw-r--r--src/xml/printers/lexmark.xml60
-rw-r--r--src/xml/printers/pcl.xml1663
-rw-r--r--src/xml/printers/ps.xml51
-rw-r--r--src/xml/printers/raw.xml51
-rw-r--r--src/xml/xmli18n-tmp.h6684
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 = &cups;
(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 &quot;old&quot; 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 &quot;old&quot; 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 &quot;old&quot; 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=''; \
+ grn=''; \
+ lgn=''; \
+ blu=''; \
+ mgn=''; \
+ brg=''; \
+ std=''; \
+ 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 &quot;old&quot; 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 &quot;old&quot; 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 &quot;old&quot; 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 */